================================================================ HOMEWORK 3 — CAPSTONE: Production-Ready Web App (Team) ================================================================ Course: Web Technologies Topics: All lectures + Agile (Scrum/Kanban) + DevOps Weight: 30% of course mark Team: 3 students Due: Last lab session of the semester Submit: GitHub repo URL + live URL on Moodle (one per team) ---------------------------------------------------------------- BRIEF ---------------------------------------------------------------- Design, build, deploy, and present a complete web application that solves a real problem for a real user group at SUZA, in Zanzibar, or in your community. Examples (you may propose your own, must be approved in week 9): - Tutor / study-group matchmaker for SUZA students - Boat / dala-dala timetable + crowd-sourced delays - Local NGO event registration + volunteer signup - Used-textbook marketplace - Lecturer's office-hours / appointment booking - Community fish-price tracker for Zanzibar markets ---------------------------------------------------------------- PROCESS REQUIREMENTS (Agile + GitHub) ---------------------------------------------------------------- 1. Public GitHub repo with a Projects board (Kanban or Scrum view) 2. README, CONTRIBUTING.md, and a one-page architecture diagram 3. Issues represent user stories ("As a..., I want..., so that...") 4. At least one PR per member per week, reviewed by another member 5. Weekly milestones; mid-project demo in week 12 lab 6. Final 10-minute team presentation + 5-minute Q&A ---------------------------------------------------------------- TECHNICAL REQUIREMENTS ---------------------------------------------------------------- Frontend: - React (or another framework, justify in README) - At least 5 distinct routes/screens - Responsive (mobile, tablet, desktop) Backend: - Spring Boot, Node/Express, or Django REST - 3+ resources, full CRUD on each - Authentication (JWT or sessions); at least 2 user roles - Input validation on all endpoints - Layered architecture (controller / service / repository) Database: - PostgreSQL or SQLite - 4+ tables with proper foreign keys - At least one report query that uses JOIN + GROUP BY Quality: - Automated tests (unit OR integration; >= 10 cases) - GitHub Actions CI that runs tests on every PR - Dockerfile + docker-compose for local dev - Deployed live (Render, Fly.io, Railway, or self-hosted VPS) - HTTPS in production - Security headers + bcrypt-hashed passwords Documentation: - README: what, why, who, how to run, live link, screenshots - API docs (OpenAPI/Swagger or hand-written) - One-page user guide (PDF in /docs) - Each team member: 200-word reflection on what they learned ---------------------------------------------------------------- GRADING (100 marks) ---------------------------------------------------------------- Process & teamwork (Projects board, PR flow, weekly progress) ... 15 Architecture & code quality .................................... 20 Frontend UX + responsiveness ................................... 15 Backend correctness + auth ..................................... 15 Database design + queries ...................................... 10 Tests + CI ..................................................... 10 Live deployment + DevOps ....................................... 10 Final presentation + demo ...................................... 5 ---------------------------------------------------------------- INDIVIDUAL VS TEAM MARK ---------------------------------------------------------------- Default: every team member gets the team's mark. Adjusted by ±20% based on: - Git contribution distribution (commits, PRs reviewed) - Peer evaluation (anonymous, submitted with deliverable) - Lecturer observation during demos and standups ---------------------------------------------------------------- WHAT WE LOOK FOR (BEYOND THE CHECKLIST) ---------------------------------------------------------------- - A real user could actually use this for its intended purpose - The team learned to disagree productively and ship anyway - The codebase is something you'd put on your CV