The problem
College campuses pack thousands of buyers within walking distance of dozens of small sellers — canteens, stationery shops, accessory counters and bookstores — yet most of that commerce still runs on footfall, price lists and WhatsApp messages. Students have no single catalog to browse, no way to compare prices across shops, and no confirmation that an item will be ready when they arrive. Vendors take orders over the counter or on personal WhatsApp, mix up requests during rush hours, and keep no sales records to plan stock. General-purpose e-commerce platforms are built around courier delivery and payment-gateway settlement, which fits a campus poorly: here the buyer walks to a counter and often pays cash. This project builds the middle path — a multi-vendor marketplace web app scoped to one campus. Each admin-approved vendor gets a storefront page with its own listings, students check out once across vendors, and every order moves through a five-state pipeline (placed, confirmed, packed, ready, delivered) with a timestamped tracking timeline. The stack is deliberately student-friendly: Node.js with Express, a single-file SQLite database, and server-rendered templates.
Browses the catalog, checks out once and tracks orders at the pickup counter.
Follow the working sequence
How it works
- A student registers and logs in; vendors apply with shop details and appear in the marketplace only after the admin approves them in the moderation queue.
- Browsing the catalog calls the Express API, which queries SQLite with category, search-text and price filters and returns JSON for the product grid.
- Adding to cart writes to the server session; at checkout the cart is grouped by vendor and one order per vendor is created under a single checkout reference.
- Checkout offers two payment modes: a UPI intent link that opens the buyer's UPI app with the vendor's VPA and amount prefilled, or cash-on-pickup recorded as unpaid.
- Each order enters the state machine at "placed"; the vendor sees it on the dashboard and advances it through confirmed, packed and ready as the items are prepared.
- Every accepted transition appends a timestamped row to the order_events table; the customer tracking page renders those rows as a timeline with the pickup counter location.
- "Delivered" is marked when the student collects the order at the counter; the admin can view all orders, vendors and products from the moderation panel at any time.
Tech stack:
- Node.js 20 + Express.js (REST API with role-based route guards)
- SQLite via better-sqlite3 (single-file database)
- EJS server-side templates
- express-session + bcryptjs (authentication)
- Multer (product image uploads)
- Chart.js (vendor sales chart)
- Vanilla JavaScript + Fetch (frontend interactions)
- UPI intent links + cash-on-pickup (payments)
| Parameter | Value |
|---|---|
| User roles | 3 roles (customer, vendor, admin) |
| Order states | 5 states (placed, confirmed, packed, ready, delivered) |
| Stack | Node.js 20 + Express.js + SQLite |
| Deployment unit | Single server folder + single SQLite file (design target) |
| Catalog capacity | Approximately 5,000 products per deployment (design target) |
| Vendor capacity | Approximately 50 vendor storefronts per deployment (design target) |
| Catalog page load | Under 2 seconds on campus Wi-Fi (design target) |
| Session timeout | 30 minutes (configurable) |
| Product image upload | 2 MB per image maximum (configurable) |
| Payments | UPI intent links + cash-on-pickup (base build); gateway optional |
Project features
- [Vendor storefronts] Each admin-approved vendor gets a public storefront page with its product listings, category, rating and pickup-counter details — students can browse store by store or across the whole marketplace.
- [Categorized catalog with search] Products sit in categories (food, stationery, electronics, books) with full-text search, category chips and live stock status on every card; out-of-stock items are hidden from the storefront automatically.
- [Cart and multi-vendor checkout] A session-backed cart supports quantity changes; checkout groups items by vendor and creates one order per vendor under a single checkout reference, with UPI intent or cash-on-pickup as the payment choice.
- [Five-state order pipeline] Every order moves through placed, confirmed, packed, ready and delivered. Transitions are enforced server-side — only the next legal state is accepted — and each one appends a timestamped row to an order_events audit table.
- [Order tracking timeline] Customers see a live timeline per order: the current stage highlighted, timestamps for completed stages, the pickup counter location, and the billed item list.
- [Vendor dashboard] Vendors see total revenue, orders in the pipeline, items sold, a seven-day sales chart, an incoming-orders table with one-click state advancement, and inventory controls with low-stock flags.
- [Admin moderation] Vendor applications and product listings wait in an approval queue; nothing goes live without admin approval, and the admin sees platform-wide orders and gross merchandise value.
Optional customizations (developed separately, not in the base build): real payment-gateway integration (Razorpay/Stripe) with webhook verification, per-product ratings and reviews, coupon/discount engine, email and SMS order notifications, PostgreSQL migration for larger deployments, and a companion mobile app on the same API.
What is included
- Complete Node.js + Express source code with the full SQLite schema and seed data (vendors, products, orders)
- Customer marketplace: storefronts, catalog, search, cart, checkout and order tracking pages
- Vendor dashboard: sales chart, revenue summary, order pipeline management and inventory controls
- Admin panel: vendor and product moderation queues plus platform-wide order visibility
- Order state machine implementation with the order_events audit log
- Setup and deployment guide (local run + Node.js host deployment)
- Project report PDF, PPT presentation and viva Q&A document
Limitations & prerequisites
- Payments are UPI-intent and cash-on-pickup only in the base build — there is no automated payment verification; a real gateway needs production approval and is an optional customization.
- Single-server SQLite design target of approximately 50 vendors and 5,000 products per deployment; beyond that the schema is documented for migration to PostgreSQL.
- The state machine tracks preparation stages at the counter — it is not a courier tracker and includes no delivery-logistics module.
- Product image uploads are capped at 2 MB per image in the base build (configurable).
- Email and SMS notifications are not implemented in the base build — status changes are visible in-app; notification hooks are an optional customization.
- Seed data ships for demonstration; a real deployment needs vendor onboarding and its own product catalog.
Frequently Asked Questions
Is a real payment gateway integrated?
No. The base build keeps payments honest with two modes that need no gateway approval: a UPI intent link that opens the buyer's UPI app with the vendor's VPA and amount prefilled, and cash-on-pickup recorded as unpaid. A real Razorpay or Stripe integration with webhook verification is available as an optional customization, and the checkout is structured to accept it.
Is this project suitable for a final-year project?
Yes — for Computer Science, IT and web development programs. It demonstrates a complete full-stack build: REST API design, session authentication, role-based access for three user types, relational schema design, a server-enforced order state machine, and an admin moderation workflow, all documented for the viva.
Can it be hosted online?
Yes. The build is a single Node.js folder plus one SQLite file, so it deploys to any Node.js host such as a VPS, Render or Railway with no separate database server to configure. The schema and queries are written so a later move to PostgreSQL is straightforward, and that migration path is documented.
Can more roles or modules be added?
Yes. Realistic extensions include per-product ratings and reviews, a coupon engine, email and SMS notifications on order state changes, and a delivery-partner role with hostel slot booking. Each is scoped as an optional customization with its own effort estimate, so the base project stays exactly as described.
How do vendors and products go live?
Through the admin moderation queue. Vendor applications and new product listings wait in a pending list; the admin approves or rejects each one, and only approved vendors and products appear in the marketplace. Out-of-stock items are hidden automatically, and the vendor dashboard flags low stock.
Components & software requirements
- Node.js 20 + Express.js (REST API with role-based route guards)
- SQLite via better-sqlite3 (single-file database)
- EJS server-side templates
- express-session + bcryptjs (authentication)
- Multer (product image uploads)
- Chart.js (vendor sales chart)
- Vanilla JavaScript + Fetch (frontend interactions)
- UPI intent links + cash-on-pickup (payments)
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.