A structured 30-day MERN roadmap execution platform. Login with Google, complete one task daily, submit GitHub links, and track your progress.
| Layer | Technologies |
|---|---|
| Frontend | React, Vite, TypeScript, TailwindCSS, Axios |
| Backend | Node.js, Express.js, TypeScript, Prisma ORM |
| Database | PostgreSQL (Supabase) |
| Auth | Google OAuth 2.0, JWT |
| Deployment | Frontend → Vercel, Backend → Render |
nextStep/
├── backend/
│ ├── src/
│ │ ├── config/ # App config, Prisma client
│ │ ├── middleware/ # Auth, CORS, error handler, validation
│ │ ├── modules/
│ │ │ ├── auth/ # Google login, JWT
│ │ │ ├── task/ # Task CRUD, completion
│ │ │ └── progress/ # Progress tracking
│ │ ├── utils/ # Logger, AppError
│ │ └── index.ts # Express app entry
│ └── prisma/
│ ├── schema.prisma # Database schema
│ └── seed.ts # 30 MERN tasks seed
├── frontend/
│ ├── src/
│ │ ├── api/ # Axios instance
│ │ ├── components/ # TaskAccordion, etc.
│ │ ├── layouts/ # DashboardLayout
│ │ ├── pages/ # Landing, Login, Dashboard, Tasks, Progress
│ │ ├── routes/ # ProtectedRoute
│ │ ├── services/ # API service layer
│ │ ├── store/ # AuthContext
│ │ └── types/ # TypeScript interfaces
│ └── vite.config.ts
└── README.md
- Node.js 18+
- PostgreSQL database (Supabase recommended)
- Google OAuth credentials (console.cloud.google.com)
git clone <repo-url> && cd nextStep
# Backend
cd backend
cp .env.example .env # Fill in your values
npm install
# Frontend
cd ../frontend
cp .env.example .env # Fill in your values
npm installBackend .env:
DATABASE_URL="postgresql://user:password@host:5432/dbname"
JWT_SECRET="your-secret-key"
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
FRONTEND_URL="http://localhost:5173"
PORT=4000
NODE_ENV=developmentFrontend .env:
VITE_API_URL=http://localhost:4000
VITE_GOOGLE_CLIENT_ID=your-google-client-idcd backend
# Generate Prisma client
npx prisma generate
# Run migrations
npx prisma migrate dev --name init
# Seed 30 tasks
npx prisma db seed# Terminal 1 - Backend
cd backend && npm run dev
# Terminal 2 - Frontend
cd frontend && npm run dev- Frontend: http://localhost:5173
- Backend: http://localhost:4000
- Health check: http://localhost:4000/health
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /auth/google |
No | Login with Google token |
| GET | /auth/me |
Yes | Get current user |
| GET | /tasks |
Yes | Get all tasks + status |
| GET | /tasks/today |
Yes | Get first pending task |
| POST | /tasks/:taskId/complete |
Yes | Submit & complete task |
| GET | /progress |
Yes | Get progress stats |
- Tasks must be completed sequentially (Day 1 → Day 2 → ...)
- Only the first pending task can be submitted
- Progress = completed tasks / 30
- On first login, all 30 tasks are assigned to the user
- Connect your GitHub repo
- Set root directory to
frontend - Add
VITE_API_URLandVITE_GOOGLE_CLIENT_IDenv vars
- Connect your GitHub repo
- Set root directory to
backend - Build command:
npm install && npx prisma generate && npm run build - Start command:
npm start - Add all backend env vars
- Create a new project
- Copy the PostgreSQL connection string
- Use as
DATABASE_URLin backend
MIT