Skip to content

GenD-tech/Gen-D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GEN-D β€” Next-Gen Creative Agency Website

A full-stack, production-ready agency website with AI chatbot, email OTP verification, lead capture, automated emails, and a secure admin dashboard.

Live Site Frontend Backend API

React TypeScript Node.js MongoDB TailwindCSS Vite Resend Deployed on Render


Table of Contents


About the Project

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


Features

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

Tech Stack

Frontend

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

Backend

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

Infrastructure

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

Project Structure

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

Getting Started

Prerequisites

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

Local Development

1. Clone the repository

git clone https://github.com/GenD-tech/Gen-D.git
cd Gen-D

2. Set up the Backend

cd backend
npm install

Create 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 dev

Backend runs at http://localhost:8000 Test it: http://localhost:8000/health should return { "ok": true }


3. Set up the Frontend

cd ../frontend
npm install

Create 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_key

Start the frontend dev server:

npm run dev

Frontend runs at http://localhost:3000


Environment Variables

Backend (backend/.env)

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>)

Frontend (frontend/.env)

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

Deployment (Render)

This project deploys as two separate Render services.


1. Backend β€” Web Service

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>

2. Frontend β€” Static Site

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.


Architecture

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚         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    β”‚
                                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create your feature branch
    git checkout -b feature/your-feature-name
  3. Commit your changes using Conventional Commits
    git commit -m "feat: add your feature"
  4. Push to the branch
    git push origin feature/your-feature-name
  5. Open a Pull Request against main

Commit Convention

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

License

This project is proprietary and maintained by GEN-D Technologies. All rights reserved Β© 2026 GEN-D.


Built with ❀️ by the GEN-D team

Website GitHub

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors