Skip to main content

Project 2 — Requirements

Project Overview​

Project 2 is a collaborative full-stack application built with a React frontend, Express or NestJS backend, and PostgreSQL database via Prisma. Teams of 2-3 students.

Starters: Download API starter (ZIP) · Download frontend starter (ZIP)

Technical Requirements​

Backend (must have ALL)​

  • Node.js API — Express 5 with TypeScript or NestJS
  • RESTful routes — proper HTTP methods and status codes
  • PostgreSQL with Prisma — at least 3 models with relationships
  • Authentication — JWT with protected routes
  • Zod validation — all POST/PATCH inputs validated
  • Error handling — structured error responses, no unhandled rejections
  • Seed script — npm run seed populates the database

Frontend (must have ALL)​

  • React + Vite + TypeScript — no JavaScript files
  • React Router — at least 4 routes including a protected route
  • TanStack Query — all server data fetched via useQuery/useMutation
  • Zustand — for global UI state (auth, cart, preferences, etc.)
  • Tailwind CSS — responsive design, mobile-first
  • Error and loading states — every async operation has feedback

Full Stack​

  • Deployed — live URL for both frontend and backend
  • Environment variables — .env.example with all required vars
  • README — setup instructions, live URL, screenshots

Application Ideas​

Teams must choose one of the following (or propose their own):

Option A: Marketplace​

Users can list items for sale, browse listings, and contact sellers.

  • Models: User, Listing, Category, Message
  • Features: search with filters, user profiles, saved listings

Option B: Event Platform​

Users can create events, RSVP, and leave reviews.

  • Models: User, Event, RSVP, Review
  • Features: event discovery, calendar view, attendee list

Option C: Learning Platform​

Instructors create courses with lessons; students enroll and track progress.

  • Models: User, Course, Lesson, Enrollment, Progress
  • Features: enrollment, lesson completion tracking, course search

Option D: Fitness Tracker​

Users log workouts, set goals, and track progress over time.

  • Models: User, Workout, Exercise, Goal, Progress
  • Features: workout templates, progress charts, goal tracking

Minimum Viable Product​

By Week 1 demo, your app must have:

  1. User registration and login working
  2. At least one authenticated CRUD resource (e.g., create/list/delete listings)
  3. Database with seed data
  4. Frontend connecting to backend

Grading (out of 150 points)​

Technical (100 points)​

CategoryCriteriaPoints
BackendRoutes, models, auth, validation35
FrontendComponents, routing, state management35
DatabaseSchema design, relations, seed data15
DeploymentBoth services live with env vars15

Process (50 points)​

CategoryCriteriaPoints
Git workflowFeature branches, meaningful commits, PRs15
CollaborationEven contribution (check GitHub insights)15
Presentation10-min demo, explains technical decisions20

Timeline​

WeekDeliverable
Week 1Project proposal approved, repo created, ERD designed
Week 2Backend API functional (all routes work with Postman)
Week 3Frontend connected to backend, auth working
Week 4Deployed, polished, final demo

Proposal Template​

Submit a brief proposal with:

  1. App name and description (2-3 sentences)
  2. Problem it solves — who is the user, what pain point?
  3. Entity Relationship Diagram — drawn in dbdiagram.io or similar
  4. API routes — list all planned endpoints
  5. Team members — GitHub usernames and role division
  6. Stretch goals — features you'll add if time allows

Stretch Goals (bonus)​

  • Real-time features with WebSockets
  • Image uploads (Cloudflare R2 or Supabase Storage)
  • Email notifications (Resend or Nodemailer)
  • Full-text search with Postgres tsvector
  • AI feature using the Claude API
  • Unit tests with Vitest (≥ 70% coverage on services)
  • CI/CD pipeline with GitHub Actions