- About the Project
- Features
- Tech Stack
- Project Structure
- Getting Started
- Environment Variables
- Email System (SMTP Setup)
- API Reference
- Deployment (Render)
- Architecture
- Changelog
- Contributing
- License
GEN-D is a premium, full-stack digital agency website built for GEN-D Technologies β a next-generation design studio that bridges traditional branding with modern digital strategy, targeting Gen-Z, Millennial, and high-growth markets.
The site is more than a portfolio β it is a complete business platform with real-time lead capture, email OTP verification, automated transactional emails, an AI-powered chatbot, and a password-protected admin dashboard for managing enquiries.
Contact: info@gendtechnologies.in | 991-095-2431
| Feature | Description |
|---|---|
| Premium UI/UX | Dark-mode first design with glassmorphism, micro-animations (Framer Motion), and a curated color palette |
| AI Chatbot | Floating chatbot powered by Google Gemini API β acts as a digital strategist for GEN-D |
| Email OTP Verification | Users must verify their email via a 6-digit OTP before submitting the contact form |
| Lead Capture Form | Contact form saves verified leads directly to MongoDB Atlas |
| Automated Confirmation Email | User receives a branded confirmation email with their submission summary upon form submit |
| Internal Lead Notification | Team inbox (info@gendtechnologies.in) gets an instant lead alert email with full client details |
| Admin Dashboard | Password-protected panel to view, manage, and delete all submitted leads |
| Forgot Admin Password | Admin can trigger a password reset β a new password is auto-generated and emailed to the team inbox |
| Fully Responsive | Mobile-first layout β works on all screen sizes |
| Smooth Navigation | Scroll-spy header with section-level navigation |
| FAQ Section | Animated, expandable FAQ accordion |
| Pricing Cards | Interactive pricing matrix with CTA wired to the contact form |
| Projects Portfolio | Curated work showcase section |
| Technology | Purpose |
|---|---|
| React 19 | UI framework |
| TypeScript 5.8 | Type safety |
| Vite 6 | Build tool & dev server |
| Tailwind CSS 4 | Utility-first styling |
| Framer Motion (motion) | Animations & transitions |
| Lucide React | Icon library |
| Express (server.ts) | Dev-proxy server β forwards /api/* to the backend in local dev |
| Technology | Purpose |
|---|---|
| Node.js + Express | REST API server |
| MongoDB + Mongoose | Database & ODM |
| Google Gemini API | AI chatbot responses |
| Resend | Transactional email delivery via API key |
| crypto (built-in) | Secure admin password hashing (scrypt + timing-safe compare), OTP & token generation |
| CORS | Cross-origin request handling |
| dotenv | Environment variable management |
| Service | Role |
|---|---|
| Render Static Site | Frontend hosting (gen-d.onrender.com) |
| Render Web Service | Backend API hosting (gend.onrender.com) |
| MongoDB Atlas | Cloud database |
| Resend | Transactional email delivery via API key |
| GitHub | Source control & CI/CD trigger |
Gen-D/
βββ π frontend/ # React + TypeScript SPA
β βββ src/
β β βββ components/
β β β βββ Header.tsx # Sticky nav with admin trigger & GEN-D branding
β β β βββ Hero.tsx # Landing hero section
β β β βββ Stats.tsx # Agency achievement metrics
β β β βββ ExtraordinaryBanner.tsx
β β β βββ Projects.tsx # Portfolio / selected work
β β β βββ Services.tsx # Service offerings with CTAs
β β β βββ About.tsx # Team & philosophy
β β β βββ Pricing.tsx # Pricing plans
β β β βββ FAQ.tsx # Accordion FAQ
β β β βββ ContactForm.tsx # Lead form with email OTP verification β POST /api/leads
β β β βββ Footer.tsx # Footer with GEN-D contact info & branding
β β β βββ Chatbot.tsx # Floating Gemini AI chatbot
β β β βββ AdminPanel.tsx # Password-protected admin dashboard + forgot password
β β βββ lib/
β β β βββ api.ts # Smart fetch helper (auto-detects backend URL)
β β βββ App.tsx # Root component & layout
β β βββ main.tsx # React entry point
β β βββ types.ts # Shared TypeScript types
β β βββ index.css # Global styles
β βββ server.ts # Express dev-proxy server (local dev only)
β βββ vite.config.ts
β βββ tsconfig.json
β βββ package.json
β
βββ π backend/ # Node.js REST API
β βββ src/
β βββ app.js # Express app + CORS configuration
β βββ index.js # Server entry point
β βββ controller/
β β βββ user.controller.js # All route handlers (leads, OTP, admin, chat)
β βββ models/
β β βββ user.model.js # Contact / Lead Mongoose schema
β β βββ admin.model.js # Admin settings schema (hashed password)
β β βββ otpStore.model.js # OTP storage schema with TTL auto-expiry
β βββ routes/
β β βββ api.routes.js # Route definitions
β βββ db/
β β βββ db.js # MongoDB connection
β βββ utils/
β βββ ApiError.js
β βββ ApiResponse.js
β βββ asyncHandler.js
β βββ mailer.js # Resend: OTP, confirmation & lead notification emails
β
βββ .gitignore
βββ README.md
Make sure you have the following installed:
- Node.js v18 or later β Download
- npm v9 or later (comes with Node.js)
- A MongoDB Atlas account (free tier works) β Sign up
- A Google Gemini API key (optional, for the chatbot) β Get key
- A Resend API key (for transactional email delivery) β Get key
1. Clone the repository
git clone https://github.com/GenD-tech/Gen-D.git
cd Gen-D2. Set up the Backend
cd backend
npm installCreate a .env file inside backend/:
PORT=8000
MONGODB_URI=mongodb+srv://<user>:<password>@cluster0.xxxx.mongodb.net/
FRONTEND_ORIGINS=http://localhost:3000,http://localhost:5173
ADMIN_PASSWORD=your_admin_password
GEMINI_API_KEY=your_gemini_api_key
RESEND_API_KEY=your_resend_api_key
MAIL_FROM=Gen-D Technologies <info@gendtechnologies.in>Start the backend dev server:
npm run devBackend runs at http://localhost:8000 Test it:
http://localhost:8000/healthshould return{ "ok": true }
3. Set up the Frontend
cd ../frontend
npm installCreate a .env file inside frontend/:
# Used by the local dev proxy (server.ts) to forward /api/* requests
BACKEND_URL=http://localhost:8000
# Leave empty in local dev β the proxy handles routing
VITE_API_BASE_URL=
# Optional: enables the AI chatbot
GEMINI_API_KEY=your_gemini_api_keyStart the frontend dev server:
npm run devFrontend runs at http://localhost:3000
| Variable | Required | Description |
|---|---|---|
PORT |
β | Port the Express server listens on (default: 8000) |
MONGODB_URI |
β | Full MongoDB Atlas connection string |
FRONTEND_ORIGINS |
β | Comma-separated list of allowed CORS origins |
ADMIN_PASSWORD |
β¬ | Initial admin password (default: admin123) β change this in production! |
GEMINI_API_KEY |
β¬ | Google Gemini API key for the AI chatbot |
RESEND_API_KEY |
β¬ | Resend API key for transactional email delivery |
MAIL_FROM |
β¬ | Friendly sender name + address (default: Gen-D Technologies <info@gendtechnologies.in>) |
| Variable | Required | Description |
|---|---|---|
BACKEND_URL |
β | Backend URL used by the local Express proxy (server.ts) |
VITE_API_BASE_URL |
β¬ | Backend URL baked into the Vite build bundle. Required on Render. |
GEMINI_API_KEY |
β¬ | Gemini key used by the frontend proxy chat route |
This project deploys as two separate Render services.
Go to Render Dashboard β New Web Service β Connect your GitHub repo.
| Setting | Value |
|---|---|
| Root Directory | backend |
| Runtime | Node |
| Build Command | npm install |
| Start Command | npm start |
| Instance Type | Free |
Set these environment variables on Render:
MONGODB_URI = mongodb+srv://...
FRONTEND_ORIGINS = https://gen-d.onrender.com,https://gendtechnologies.in
ADMIN_PASSWORD = <your_secure_admin_password>
GEMINI_API_KEY = <your_gemini_api_key>
RESEND_API_KEY = <your_resend_api_key>
MAIL_FROM = Gen-D Technologies <info@gendtechnologies.in>
Go to Render Dashboard β New Static Site β Connect the same repo.
| Setting | Value |
|---|---|
| Root Directory | frontend |
| Build Command | npm install && npm run build |
| Publish Directory | frontend/dist |
Set this environment variable on Render (before building):
VITE_API_BASE_URL = https://gend.onrender.com
Important:
VITE_*variables are embedded into the JS bundle at build time by Vite. Always set them before triggering a deploy, then redeploy if you update them.
ββββββββββββββββββββββββββββββββββββ
β Browser (Client) β
β gen-d.onrender.com β
β gendtechnologies.in β
ββββββββββββββββ¬ββββββββββββββββββββ
β HTTPS
ββββββββββββββββΌββββββββββββββββββββ
β Render Static Site β
β React + Vite SPA (dist/) β
β β
β apiFetch() auto-detects host: β
β gen-d.onrender.com β
β β https://gend.onrender.com β
ββββββββββββββββ¬ββββββββββββββββββββ
β HTTPS (CORS-allowed)
ββββββββββββββββΌββββββββββββββββββββ
β Render Web Service β
β Node.js + Express REST API β
β gend.onrender.com β
ββββββββ¬ββββββββββββββ¬ββββββββββββββ
β β β
ββββββββββββββΌβββ βββββββββΌβββββββ ββββΌβββββββββββββββββ
β MongoDB Atlas β β Google Geminiβ β Resend HTTP API β
β Leads + Admin β β API (Chatbot)β β Email Delivery β
β OTP Store β β β β OTP / Confirm / β
βββββββββββββββββ ββββββββββββββββ β Lead Notify / β
β Password Reset β
ββββββββββββββββββββββ
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your feature branch
git checkout -b feature/your-feature-name
- Commit your changes using Conventional Commits
git commit -m "feat: add your feature" - Push to the branch
git push origin feature/your-feature-name
- Open a Pull Request against
main
| Prefix | When to use |
|---|---|
feat: |
New feature |
fix: |
Bug fix |
docs: |
Documentation changes only |
style: |
Formatting, no logic change |
refactor: |
Code restructure without feature change |
perf: |
Performance improvement |
chore: |
Build / tooling / dependency changes |
This project is proprietary and maintained by GEN-D Technologies. All rights reserved Β© 2026 GEN-D.