The Challenge
Over the past year, I've shipped 8 production web applications to Vercel — from a full-stack enterprise workflow system to security dashboards and e-commerce analytics tools. Here's what I learned about building and deploying real products.
The Apps
| App | Stack | What It Does |
|---|---|---|
| **WorkSphere OS** | Node.js, Express, MongoDB | Enterprise workflow & team management |
| **CloudSecure** | JavaScript, React | Cloud security monitoring platform |
| **Price Pulse** | HTML, CSS, JS | E-commerce price tracking & analytics |
| **Smart Study Planner** | React, Firebase Auth | Study scheduling with Google SSO |
| **Edunet** | HTML, CSS, JS | Education analytics dashboard |
| **Portfolio** | Next.js, Three.js, Framer | This website you're reading |
Architecture Decisions That Mattered
1. Start with the Data Model
Every successful app started by defining the data model first. For WorkSphere OS, I mapped out 10 Mongoose models before writing a single route:
User → Task → Message → Timetable → KnowledgeDoc
ActivityLog → Announcement → Download → LeaveRequest → NotificationThis upfront investment saved weeks of refactoring later.
2. API-First Design
For apps with backends, I designed the REST API before building the frontend:
POST /api/auth/register → Create account
POST /api/auth/login → Get JWT token
GET /api/tasks → List user's tasks
POST /api/tasks → Create task
PUT /api/tasks/:id/status → Update task statusThis made frontend development parallel and predictable.
3. Vercel-Optimized Architecture
Vercel's serverless model has constraints. I learned to design around them:
- Edge functions for auth middleware (faster cold starts)
- ISR (Incremental Static Regeneration) for pages that change occasionally
- API routes with connection pooling for database calls
- Static assets in
public/for zero-latency serving
Deployment Workflow
Local Dev → Git Push → Vercel Auto-Deploy → Preview URL → ProductionEvery push to main triggers a production deployment. Every PR gets a preview URL. This CI/CD pipeline is free and takes zero configuration.
Performance Wins
- 1.Code splitting — Next.js automatically splits bundles per page
- 2.Image optimization — Using
next/imagefor automatic WebP conversion and lazy loading - 3.Font optimization — Google Fonts loaded via
next/fontto eliminate layout shift - 4.Bundle analysis — Running
@next/bundle-analyzerto find and eliminate large dependencies
What I'd Do Differently
- Start with TypeScript — I migrated two apps mid-project. It's always easier to start with it
- Add monitoring from day one — Error tracking (Sentry) and analytics (Vercel Analytics) should be there from the first deploy
- Write tests early — Not comprehensive unit tests, but at least API endpoint tests
Key Takeaway
Shipping is a skill. The gap between "it works locally" and "it's live and reliable" is where real engineering happens. Every one of these 8 apps taught me something different about building products that actually work in the real world.
Check out all my deployed apps at suyashvakhariya.in.
