A modern, full-stack e-commerce platform for premium streetwear fashion
Live Demo β’ Features β’ Tech Stack β’ Getting Started
VellaPanti is a production-ready e-commerce platform built for selling premium streetwear fashion. The platform features a modern black-and-white aesthetic, comprehensive product management, secure payment processing, and SMS-based authentication.
π Live Site: https://vellapanti.co.in
- ποΈ Full-featured e-commerce with product catalog, cart, and checkout
- π± SMS OTP authentication using MSG91
- π³ Integrated Cashfree payment gateway
- π¨ Modern responsive UI with black & white theme
- π Role-based access control (Admin panel)
- π Performance optimized with caching strategies
- π Production deployed on Oracle Cloud with Nginx
-
Authentication
- Phone number registration with OTP verification
- SMS-based login (MSG91 integration)
- JWT token authentication
- Session management
-
Shopping Experience
- Browse products by category (BLACK & WHITE collections)
- Product search and filtering
- Shopping cart management
- Guest checkout support
- Multiple address management
- Order tracking and history
-
Payment
- Cashfree payment gateway integration
- Secure payment processing
- Order confirmation emails
- Product management (Add/Edit/Delete)
- Order management and status updates
- Homepage carousel management
- Featured collections management
- Site settings configuration
- Support ticket management
- Next.js 14 - React framework with App Router
- TypeScript - Type safety
- Tailwind CSS - Styling
- Zustand - State management
- React Hook Form + Zod - Form validation
- TanStack Query - Data fetching and caching
- Node.js + Express.js - REST API
- TypeScript - Type safety
- PostgreSQL - Database
- Prisma - ORM
- JWT - Authentication
- Multer - File uploads
- Oracle Cloud - Hosting
- Nginx - Reverse proxy
- PM2 - Process management
- Cloudflare - CDN & SSL
- MSG91 - SMS OTP delivery
- Cashfree - Payment processing
- Gmail SMTP - Email notifications
- Turborepo - Monorepo management
- pnpm - Package manager
- ESLint - Code linting
Monorepo structure powered by Turborepo:
ecommerce-app/
βββ apps/
β βββ web/ # Next.js frontend
β βββ api/ # Express.js backend
βββ packages/
β βββ ui/ # Shared React components
β βββ config/ # Shared configuration
β βββ database/ # Prisma schema and client
β βββ types/ # Shared TypeScript types
- Node.js 18+
- pnpm 8+
- PostgreSQL 15+
-
Clone the repository
git clone https://github.com/Pratyush150/VellaPanti.git cd VellaPanti/ecommerce-app -
Install dependencies
pnpm install
-
Set up environment variables
Create
.envfiles:# Backend cp apps/api/.env.example apps/api/.env # Frontend cp apps/web/.env.example apps/web/.env.local
Edit with your credentials (see
.env.examplefiles) -
Set up database
# Generate Prisma client pnpm --filter @ecommerce/database generate # Push schema to database pnpm --filter @ecommerce/database db:push
-
Run development servers
# Terminal 1 - Backend pnpm --filter api dev # Terminal 2 - Frontend pnpm --filter web dev
-
Access the application
- Frontend: http://localhost:3061
- Backend API: http://localhost:3062
DATABASE_URL=postgresql://user:password@localhost:5432/vellapanti
PORT=3062
NODE_ENV=development
# JWT
JWT_ACCESS_SECRET=your-secret-key
JWT_REFRESH_SECRET=your-refresh-key
# MSG91 SMS
MSG91_AUTH_KEY=your-msg91-key
MSG91_SENDER_ID=MSGIND
MSG91_TEMPLATE_ID=your-template-id
# Cashfree Payment
CASHFREE_APP_ID=your-app-id
CASHFREE_SECRET_KEY=your-secret-key
CASHFREE_ENV=SANDBOX
# Email
EMAIL_FROM=your-email@gmail.com
EMAIL_USER=your-email@gmail.com
EMAIL_PASSWORD=your-app-passwordNEXT_PUBLIC_API_URL=http://localhost:3062/api
NEXT_PUBLIC_SITE_URL=http://localhost:3061# Build all packages
pnpm build
# Or individually
pnpm --filter api build
pnpm --filter web buildpm2 start apps/api/dist/index.js --name vellapanti-api
pm2 start apps/web/.next/standalone/server.js --name vellapanti-web
pm2 savePOST /api/auth/register- Register with phonePOST /api/auth/verify-phone-otp- Verify OTPPOST /api/auth/login- LoginGET /api/auth/me- Get profile
GET /api/products- List productsGET /api/products/:id- Get productPOST /api/products- Create product (Admin)PUT /api/products/:id- Update product (Admin)
GET /api/orders- List ordersPOST /api/orders- Create orderPUT /api/orders/:id/status- Update status (Admin)
GET /api/collections- List collectionsGET /api/collections/:id- Get collection
ecommerce-app/
βββ apps/
β βββ web/ # Next.js Frontend
β β βββ src/
β β β βββ app/ # App router pages
β β β βββ components/ # React components
β β β βββ hooks/ # Custom hooks
β β β βββ stores/ # Zustand stores
β β βββ public/ # Static assets
β β
β βββ api/ # Express.js Backend
β βββ src/
β βββ controllers/ # Route controllers
β βββ middleware/ # Express middleware
β βββ routes/ # API routes
β βββ schemas/ # Validation schemas
β βββ services/ # Business logic
β
βββ packages/
β βββ ui/ # Shared components
β βββ config/ # Configuration
β βββ database/ # Prisma schema
β βββ types/ # TypeScript types
β
βββ turbo.json # Turborepo config
- User registers with phone number
- Backend generates 6-digit OTP
- MSG91 sends SMS to user
- User verifies OTP
- JWT tokens generated
- User logged in
File: apps/api/src/services/msg91Service.ts
- User completes checkout
- Cashfree payment order created
- Payment modal opens
- User completes payment
- Webhook updates order status
- Confirmation email sent
File: apps/api/src/controllers/paymentController.ts
- Product listings cached (5-min TTL)
- Featured collections with stale-while-revalidate
- CDN caching via Cloudflare
- Prisma query optimization
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the MIT License.
Pratyush
- GitHub: @Pratyush150
- Live Site: vellapanti.co.in
- Next.js - React framework
- Prisma - Database ORM
- Tailwind CSS - Styling
- MSG91 - SMS gateway
- Cashfree - Payment processing
Built with β€οΈ for the streetwear community
β Star this repo if you find it helpful!