Project Support Links
Team Project Description
Overview
You will work in your team to design, develop, and deploy a full-stack web application using Next.js. This project will demonstrate your ability to apply contemporary workflows, use a modern framework, collaborate effectively using agile methods, conduct peer code reviews, build relevant technical documentation, and build a production-ready application.
This is a block-long project, with incremental deliverables each week. You will apply concepts learned in class while exploring additional features independently. By the end of the course, you will have a deployed, functional web application that showcases your full-stack development skills.
Specifications
The final application must include the following technical requirements and features:
Technical Requirements
- Framework: Next.js using App Router
- Database: MongoDB, PostgreSQL, or a managed platform such as Supabase
- Authentication: Auth.js v5 (NextAuth.js) or Clerk. Auth.js is the default recommendation, but Clerk is an approved alternative if your team wants a lower-risk setup.
- Version Control: GitHub Repository with feature branch workflow
- Hosting: Vercel or similar hosting service
- Design System: Defined palette, type scale, and component library
- API Route Handler: a route that performs a database operation and is consumed by the client component, demonstrating the full client - server - database request cycle
- Code Quality: Adherence to best practices and coding standards
Minimum Features and Functionality
- A clear user purpose, target audience, and value proposition (a problem statement and solution). This does not have to be unique, however it should be well-defined and clearly communicated.
- At least 3 distinct user interfaces or views.
- Users and authentication (For example, sign-up, login, profile management, logout).
- CRUD operations for managing content (Create, Read, Update, Delete) for at least two different data models. Minimal implementations are acceptable; for example, a profile update can count as Update for one model, and a soft delete can count as Delete when it is the intended way that record is removed from normal use.
- Responsive design that works well on both desktop and mobile devices.
- Proper error handling and user feedback for actions (For example, form validation, loading states, error messages).
- Use of both server-side and client-side rendering where appropriate.
- At least 5 components used across multiple pages.
- Proper TypeScript typing for props, state, and API responses.
- Consistent code formatting.
- Consistent branding with a cohesive design.
- A project README file with clear descriptions of the project, team members, instructions for setup and deployment, API documentation, and known issues or opportunities for improvement.
Team Workflow
- Hold weekly live team meetings to discuss sprint goals, progress, blockers, and next steps. Rotate the responsibility of leading meetings.
- Use Git and GitHub effectively for version control and collaboration.
- Use GitHub Projects/Boards to manage tasks and track progress.
- Follow a feature branch workflow, with regular commits and pull requests for code reviews. Each team member must make regular, meaningful contributions.
- Use code reviews to maintain code quality and share knowledge among team members.
- Communicate effectively and professionally with teammates, and resolve conflicts constructively.
Professional Application: Managing the Project Effectively
This project is designed to simulate professional team development in an accelerated timeline. The practices below help teams stay organized, reduce risk, and deliver meaningful progress throughout the block.
1. Use MVP Definition
Define the smallest set of features that delivers clear user value, and place all non-essential ideas in a "Phase 2" backlog. Teams that protect MVP scope are more likely to ship a stable, complete solution.
2. Define Clear Tasks and Ownership
Each GitHub issue should represent 4–8 hours of work (a small feature or component). Assign one primary owner per issue. This prevents confusion and ensures accountability. Use issue labels (backend, frontend, bug, docs) to organize work.
3. Establish Weekly Iteration Planning both Synchronously and Asynchronously
Your team should:
- Plan each week around clear sprint goals and achievable issue counts
- Backlog upcoming work without over-specifying far-future details
- Move issues as work progresses: Not Started → In Progress → Review → Done
This keeps your board a living tool, not a static artifact.
4. Make Database and Deployment Decisions Early
Choose your database (PostgreSQL, MongoDB, or similar) and hosting approach (Vercel or similar platforms) early in the project. Early platform decisions reduce late-stage blockers and integration surprises.
5. Develop Component-Driven Architecture
Build reusable components early and share them across your team. A ProductCard component written once can be used on multiple pages. This multiplies your productivity.
6. Use Frequent Code Reviews as Sanity Checks (not as a gatekeeping device)
At least one other team member should review each Pull Request before merging. The goal: catch bugs and maintain consistency, not perfection. A good code review takes 15–20 minutes, not an hour. The course has these formallyl scheduled, however, each team should set a 24-hour turnaround expectation.