Sprint 1 (Weeks 1-2): Foundation & Core Quiz Functionality

Backend Foundation (Developer A)

SCRUM-1: Initialize Node.js/Express server with JavaScript

  • Set up Express server with basic middleware (cors, helmet, morgan)

  • Configure JavaScript build process and development setup

  • Add basic project structure and folder organization

  • Set up development and production environment configurations

  • Configure ESLint and Prettier for JavaScript code quality

SCRUM-2: Configure MongoDB connection with Mongoose

  • Set up Mongoose connection with proper error handling

  • Configure connection pooling and retry logic

  • Add environment variables for database connection

  • Create database connection utility functions

SCRUM-3: Create questions database schema and model

  • Implement the provided question schema with all college weights

  • Add validation rules and indexes for performance

  • Create Mongoose model with proper TypeScript types

  • Add schema validation for all question types (range, yes_no, multiple_choice, text)

SCRUM-4: Set up basic API structure and middleware

  • Create API route structure and organization

  • Set up request/response middleware

  • Add API versioning and documentation structure

  • Prepare for additional API endpoints

SCRUM-5: Build GET /api/questions endpoint

  • Implement endpoint to fetch all questions from database

  • Add proper error handling and response formatting

  • Include question ordering by index

  • Add basic API documentation

SCRUM-6: Build POST /api/questions endpoint

  • Create endpoint for adding new questions

  • Add validation for question schema compliance

  • Implement proper error handling for duplicate indexes

  • Add success/failure response formatting

SCRUM-7: Build PUT /api/questions/:index endpoint

  • Implement question update functionality

  • Add validation for existing question index

  • Handle partial updates and schema validation

  • Add proper error responses

SCRUM-8: Build DELETE /api/questions/:index endpoint

  • Implement question deletion functionality

  • Add validation for question existence

  • Handle cascade effects and data integrity

  • Add confirmation responses

SCRUM-9: Add comprehensive API error handling

  • Create global error handling middleware

  • Implement standardized error response format

  • Add logging for debugging and monitoring

  • Handle different error types (validation, database, server)

SCRUM-10: Create /health endpoint for monitoring

  • Implement health check endpoint

  • Add database connection status check

  • Include server uptime and basic metrics

  • Prepare for production monitoring

Frontend Foundation (Developer B)

SCRUM-11: Set up TanStack Router with /quiz route

  • Configure TanStack Router with proper route structure

  • Set up /quiz route with basic component structure

  • Add route guards and navigation utilities

  • Configure route-based code splitting

SCRUM-12: Create basic Quiz component structure

  • Build Quiz component with info page and quiz state

  • Implement basic state management for quiz progress

  • Add navigation between quiz info and actual quiz

  • Create responsive layout structure

SCRUM-13: Set up TanStack Query for API integration

  • Configure TanStack Query client with proper defaults

  • Set up query keys and cache management

  • Add error handling and retry logic

  • Prepare for questions API integration

SCRUM-14: Create ProgressBar component with milestone indicators

  • Build progress bar with 15/30/50 milestone markers

  • Add visual feedback for milestone achievements

  • Implement progress calculation logic

  • Create responsive design for different screen sizes

SCRUM-15: Create Question component structure

  • Build reusable Question component for all question types

  • Add support for range, yes_no, multiple_choice, and text inputs

  • Implement answer validation and selection logic

  • Create smooth transitions between questions

SCRUM-16: Add basic answer options display

  • Implement answer rendering for different question types

  • Add proper styling and interaction states

  • Create accessibility features (keyboard navigation, ARIA labels)

  • Add answer selection feedback

SCRUM-17: Implement progress calculation logic

  • Create progress tracking state management

  • Add milestone achievement detection

  • Implement “End Quiz” button logic after 15 questions

  • Add progress persistence during quiz session

SCRUM-18: Create quiz state management system

  • Implement comprehensive quiz state with React hooks

  • Add state persistence for quiz progress

  • Create state reset and cleanup functions

  • Add state validation and error handling

SCRUM-19: Set up basic error handling and loading states

  • Add error boundaries for React components

  • Implement loading states for API calls

  • Create user-friendly error messages

  • Add retry mechanisms for failed operations

SCRUM-20: Add basic styling and responsive design

  • Implement consistent design system with existing components

  • Add responsive breakpoints for mobile/tablet/desktop

  • Create loading skeletons and transition animations

  • Ensure accessibility compliance


Sprint 2 (Weeks 3-4): Results, College Pages & Launch

Backend Tickets (Developer A)

SCRUM-21: Set up results storage schema and validation

  • Create results schema for storing user quiz completion data

  • Add validation for result data structure

  • Prepare for storing quiz results when users complete the quiz

  • Note: All calculations are done on frontend, backend only stores results

SCRUM-22: Build POST /api/results endpoint

  • Create results schema (quizId, answers, completedAt, questionsAnswered)

  • Implement result saving logic for when user confirms quiz completion

  • Add basic validation for result data

  • Only called when user presses “Yes” on end quiz confirmation

  • Note: No college information stored - only user answers and completion data

  • College names/descriptions are all client-side, not stored in backend

SCRUM-23: Add GET /api/results/:id endpoint

  • Create endpoint to retrieve specific quiz result by ID

  • Add error handling for non-existent results

  • Return result data in consistent format

SCRUM-24: Implement PostHog analytics integration

  • Set up PostHog tracking for quiz events

  • Add tracking for page views, quiz completions, milestone achievements

  • Implement college result click tracking

SCRUM-25: Add comprehensive error handling and security

  • Add global error handling middleware

  • Create standardized error response format

  • Add logging for debugging and monitoring

  • Implement rate limiting for API endpoints

  • Add CORS configuration for production

SCRUM-26: Set up production deployment pipeline

  • Configure Vercel deployment for backend

  • Set up environment variables and secrets

  • Add health check endpoint for monitoring

  • Optimize database performance and indexing

Frontend Tickets (Developer B)

SCRUM-27: Build Question component with answer handling

  • Create reusable Question component for all question types (range, yes_no, multiple_choice, text)

  • Implement answer selection and validation logic

  • Add smooth transitions between questions

  • Trigger real-time score calculations on each answer

SCRUM-28: Implement ProgressBar with milestone indicators

  • Create progress bar component with 15/30/50 milestone markers

  • Add visual feedback for milestone achievements

  • Implement progress calculation and display

SCRUM-29: Add quiz state management with TanStack Query

  • Set up TanStack Query for API calls (only for saving results)

  • Implement quiz session state management with real-time calculations

  • Add real-time score tracking and college ranking updates

  • Only make API calls when user confirms quiz completion

SCRUM-30: Create “End Quiz” modal with confirmation

  • Build modal component for quiz completion confirmation

  • Add logic to show modal after 15 questions

  • Implement “Yes” button that triggers POST /api/results and navigation to results page

  • Implement “No” button that closes modal and continues quiz

SCRUM-31: Create client-side college data structure

  • Design college information data structure (name, description, pros, cons, tips, faqs)

  • Create seed data for all 10 UCSC colleges as client-side constants

  • Organize college data for easy access in frontend components

  • Note: This is the ONLY place college information is stored - not in backend

SCRUM-32: Build Results page with top 5 colleges

  • Create results display component showing top 5 matches

  • Add college cards with basic information from client-side data and “Learn More” buttons

  • Implement responsive design for results layout

  • Note: All college information comes from client-side constants, not backend

SCRUM-33: Create individual college detail pages

  • Build college detail page component with full information from client-side data

  • Add sections for pros/cons, tips, and FAQs using local college data

  • Implement smooth navigation and back button

  • Note: All college information is stored in client-side constants, not fetched from backend

SCRUM-34: Add PostHog tracking to frontend

  • Integrate PostHog client-side tracking

  • Add event tracking for quiz interactions

  • Implement page view tracking across all routes

SCRUM-35: Implement comprehensive error handling and loading states

  • Add error boundaries for React components

  • Create user-friendly error messages

  • Add retry mechanisms for failed API calls

  • Implement loading states for all async operations

  • Create skeleton screens for better perceived performance

SCRUM-36: Final testing, optimization and deployment

  • Conduct comprehensive testing across all features

  • Fix any remaining bugs and edge cases

  • Optimize performance and accessibility

  • Add lazy loading for components and routes

  • Implement proper ARIA labels and keyboard navigation

  • Optimize bundle size and loading performance

  • Deploy to production


Additional API Routes for Results

Suggested Results Routes:

  • POST /api/results - Save quiz results

  • GET /api/results/:id - Retrieve specific result (if you want to allow sharing)

  • GET /api/analytics/summary - Basic analytics (total quizzes taken, etc.)

PostHog Implementation Recommendations

Easy PostHog Setup:

  • Track page views automatically

  • Track quiz completion events

  • Track which milestone users reach (15/30/50)

  • Track college result clicks

Database Schema

Questions Schema:

 
const questionSchema = new mongoose.Schema({
 
index: { type: Number, required: true, unique: true },
 
type: { type: String, required: true, enum: ["range", "yes_no", "multiple_choice", "text"] },
 
questionContent: { type: String, required: true },
 
answers: [{
 
text: { type: String, required: true },
 
weights: {
 
oakes: { type: Number, required: true, default: 0 },
 
rachel_carson: { type: Number, required: true, default: 0 },
 
crown: { type: Number, required: true, default: 0 },
 
merrill: { type: Number, required: true, default: 0 },
 
porter: { type: Number, required: true, default: 0 },
 
kresge: { type: Number, required: true, default: 0 },
 
stevenson: { type: Number, required: true, default: 0 },
 
cowell: { type: Number, required: true, default: 0 },
 
college_nine: { type: Number, required: true, default: 0 },
 
john_r_lewis: { type: Number, required: true, default: 0 }
 
}
 
}]
 
}, { timestamps: true });
 

Technology Stack

Backend:

  • JavaScript + Express + Mongoose

  • MongoDB for database

  • Vercel for deployment

Frontend:

  • TypeScript + React + TanStack Router + TanStack Query

  • shadcn/ui components

  • Framer Motion for animations

  • PostHog for analytics

Sprint Dependencies (1 Month Timeline)

Cross-Sprint Dependencies:

  • Sprint 1 backend APIs must be ready before Sprint 2 frontend integration

  • PostHog setup in Sprint 2 backend should be completed before frontend integration

  • College data structure in Sprint 2 should be completed before college detail pages

Parallel Work Opportunities:

  • Backend API development can happen in parallel with frontend component development

  • Database schema design can be done early and shared between developers

  • UI/UX design decisions can be made independently of backend logic

Risk Mitigation:

  • Start with simple implementations and iterate

  • Test API endpoints early with tools like Postman

  • Use feature flags for gradual rollout of new features

  • Keep database migrations simple and reversible

  • Focus on MVP features first, polish later