From 465081aa5423c88a92d378477ea0ddc3709201c5 Mon Sep 17 00:00:00 2001 From: Adam Blanchard Date: Mon, 20 Apr 2026 09:09:44 +0200 Subject: [PATCH 1/7] Added final project session plan --- courses/backend/final-project/session-plan.md | 28 ++++++++++++++++++- .../frontend/final-project/session-plan.md | 28 ++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/courses/backend/final-project/session-plan.md b/courses/backend/final-project/session-plan.md index e449f38e..5ae92a2a 100644 --- a/courses/backend/final-project/session-plan.md +++ b/courses/backend/final-project/session-plan.md @@ -1,3 +1,29 @@ # Session Plan -TODO +## Week 1: Team Formation & Ideation +- Form teams and participate in an ideation session. +- Collaborate to agree on a project idea and define the core concept. + +## Week 2: Planning & Foundation +- Expand ideas into a structured plan. +- Divide tasks among teammates and begin building the project foundation. +- We will use Trello to track tasks and progress. + +## Week 3: Development & Refinement +- Focus on adding features and complexity to the application. +- Dedicate time to resolving errors, bugs, and merge conflicts. + +## Week 4: Mid-Project Demo +- Prepare a short progress demo. +- Goal: Share initial goals, progress so far, a live demo, and next steps. + +## Week 5: Finalization, Deployment & Presentation Prep +- Complete the project and ensure it is fully deployed. +- Enter a code freeze (no new features). +- Use this week to build your demo and slides. +- In this workshop we help you to learn best practices and prepare effectively. +- Presentation workshop to prepare for graduation. + +## Graduation Day: Final Presentation +- Each team will be given a specific time limit for their presentation. This duration will be communicated during the session itself. +- Every member must speak. As a team, you are responsible for dividing the presentation topics so that each person explains one part of the process. diff --git a/courses/frontend/final-project/session-plan.md b/courses/frontend/final-project/session-plan.md index e449f38e..5ae92a2a 100644 --- a/courses/frontend/final-project/session-plan.md +++ b/courses/frontend/final-project/session-plan.md @@ -1,3 +1,29 @@ # Session Plan -TODO +## Week 1: Team Formation & Ideation +- Form teams and participate in an ideation session. +- Collaborate to agree on a project idea and define the core concept. + +## Week 2: Planning & Foundation +- Expand ideas into a structured plan. +- Divide tasks among teammates and begin building the project foundation. +- We will use Trello to track tasks and progress. + +## Week 3: Development & Refinement +- Focus on adding features and complexity to the application. +- Dedicate time to resolving errors, bugs, and merge conflicts. + +## Week 4: Mid-Project Demo +- Prepare a short progress demo. +- Goal: Share initial goals, progress so far, a live demo, and next steps. + +## Week 5: Finalization, Deployment & Presentation Prep +- Complete the project and ensure it is fully deployed. +- Enter a code freeze (no new features). +- Use this week to build your demo and slides. +- In this workshop we help you to learn best practices and prepare effectively. +- Presentation workshop to prepare for graduation. + +## Graduation Day: Final Presentation +- Each team will be given a specific time limit for their presentation. This duration will be communicated during the session itself. +- Every member must speak. As a team, you are responsible for dividing the presentation topics so that each person explains one part of the process. From c330b08cb3a56e4d0ca37842078feb4f5a229082 Mon Sep 17 00:00:00 2001 From: Adam Blanchard Date: Mon, 20 Apr 2026 09:11:29 +0200 Subject: [PATCH 2/7] renamed to requirements --- courses/backend/final-project/README.md | 2 +- .../final-project/{backend-requirements.md => requirements.md} | 0 courses/frontend/final-project/README.md | 2 +- .../final-project/{frontend-requirements.md => requirements.md} | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename courses/backend/final-project/{backend-requirements.md => requirements.md} (100%) rename courses/frontend/final-project/{frontend-requirements.md => requirements.md} (100%) diff --git a/courses/backend/final-project/README.md b/courses/backend/final-project/README.md index 1ddcadf1..609ebf8d 100644 --- a/courses/backend/final-project/README.md +++ b/courses/backend/final-project/README.md @@ -31,4 +31,4 @@ By the end of this session, you will be able to: ## Requirements -See [Requirements](backend-requirements.md). +See [Requirements](requirements.md). diff --git a/courses/backend/final-project/backend-requirements.md b/courses/backend/final-project/requirements.md similarity index 100% rename from courses/backend/final-project/backend-requirements.md rename to courses/backend/final-project/requirements.md diff --git a/courses/frontend/final-project/README.md b/courses/frontend/final-project/README.md index 9715e735..fa7ed97b 100644 --- a/courses/frontend/final-project/README.md +++ b/courses/frontend/final-project/README.md @@ -31,4 +31,4 @@ By the end of this session, you will be able to: ## Requirements -See [Requirements](frontend-requirements.md). +See [Requirements](requirements.md). diff --git a/courses/frontend/final-project/frontend-requirements.md b/courses/frontend/final-project/requirements.md similarity index 100% rename from courses/frontend/final-project/frontend-requirements.md rename to courses/frontend/final-project/requirements.md From a0773f2e92e2fd1cff54aa4929bc8abffb5eb918 Mon Sep 17 00:00:00 2001 From: Adam Blanchard Date: Mon, 20 Apr 2026 14:04:14 +0200 Subject: [PATCH 3/7] backend requirements --- courses/backend/final-project/requirements.md | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/courses/backend/final-project/requirements.md b/courses/backend/final-project/requirements.md index 0fb48608..356bf152 100644 --- a/courses/backend/final-project/requirements.md +++ b/courses/backend/final-project/requirements.md @@ -6,11 +6,38 @@ This document describes all requirements that you _must_ complete as part of fin Users must be able to: -TODO +- [ ] Browse or query the main resource(s) of your API (e.g. list, search, filter, paginate) +- [ ] View detailed information about a specific resource +- [ ] Create an account and log in +- [ ] Perform authenticated actions (e.g. create, update, or delete resources they own) +- [ ] Receive meaningful error messages when something goes wrong (e.g. validation errors, unauthorized access, missing resources) +- [ ] Integrate with at least 1 third-party service or API (e.g. email delivery, file storage, payment simulation, geolocation, weather data) ## Technical Requirements -TODO +- [ ] Database + - [ ] Use PostgreSQL as the database + - [ ] Design and document your schema with an Entity-Relationship Diagram (ERD) + - [ ] All database queries must use parameterised queries or a query builder (no SQL injection vulnerabilities) + +- [ ] API design + - [ ] RESTful API design following consistent resource naming and HTTP method conventions + - [ ] API routes documented with Swagger / OpenAPI + - [ ] Appropriate use of HTTP status codes (e.g. 201 for created, 404 for not found, 401/403 for auth errors) + +- [ ] Authentication and authorisation + - [ ] User registration with securely hashed passwords (e.g. bcrypt) + - [ ] Login flow that returns a token or establishes a session + - [ ] Protected routes that require authentication + - [ ] Basic authorisation (e.g. users can only modify their own resources) + +- [ ] Security and error handling + - [ ] Input validation on incoming requests (e.g. required fields, correct types) + - [ ] Centralised error handling middleware + - [ ] No sensitive data (passwords, tokens) exposed in API responses + +- [ ] External service integration + - [ ] Integrate securely with a third-party service or API (e.g. without exposing secrets) ## Organisational Requirements From e5effd818e03674dc69c1c859e95ffe223359136 Mon Sep 17 00:00:00 2001 From: Adam Blanchard Date: Mon, 20 Apr 2026 14:09:41 +0200 Subject: [PATCH 4/7] added how it works header --- courses/backend/final-project/README.md | 2 ++ courses/frontend/final-project/README.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/courses/backend/final-project/README.md b/courses/backend/final-project/README.md index 609ebf8d..76326be1 100644 --- a/courses/backend/final-project/README.md +++ b/courses/backend/final-project/README.md @@ -2,6 +2,8 @@ This module contains information about the final module of the program, where you will take everything you have learned so far and work together as a team to build a final project together. +## How it works + This module usually runs for 4-5 weeks. The final project can be organised differently, depending on the team responsible, mentors and the opportunities available at the time. The default option is to run it with: diff --git a/courses/frontend/final-project/README.md b/courses/frontend/final-project/README.md index fa7ed97b..2cdded6a 100644 --- a/courses/frontend/final-project/README.md +++ b/courses/frontend/final-project/README.md @@ -2,6 +2,8 @@ This module contains information about the final module of the program, where you will take everything you have learned so far and work together as a team to build a final project together. +## How it works + This module usually runs for 4-5 weeks. The final project can be organised differently, depending on the team responsible, mentors and the opportunities available at the time. The default option is to run it with: From 14dc40c4fdbb1cf0293eb55bf8d18ca2dae12dc9 Mon Sep 17 00:00:00 2001 From: Adam Blanchard Date: Mon, 20 Apr 2026 14:10:38 +0200 Subject: [PATCH 5/7] reword requirement --- courses/backend/final-project/requirements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/courses/backend/final-project/requirements.md b/courses/backend/final-project/requirements.md index 356bf152..7f0960c0 100644 --- a/courses/backend/final-project/requirements.md +++ b/courses/backend/final-project/requirements.md @@ -37,7 +37,7 @@ Users must be able to: - [ ] No sensitive data (passwords, tokens) exposed in API responses - [ ] External service integration - - [ ] Integrate securely with a third-party service or API (e.g. without exposing secrets) + - [ ] Securely integrate with a third-party service or API (e.g. without exposing secrets) ## Organisational Requirements From 34fa6f7ae2a138cd9ea837118cf40e8f9a1f9f0c Mon Sep 17 00:00:00 2001 From: Adam Blanchard Date: Mon, 20 Apr 2026 14:14:55 +0200 Subject: [PATCH 6/7] added optional ideas --- courses/backend/final-project/requirements.md | 12 ++++++++++++ courses/frontend/final-project/requirements.md | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/courses/backend/final-project/requirements.md b/courses/backend/final-project/requirements.md index 7f0960c0..74c33718 100644 --- a/courses/backend/final-project/requirements.md +++ b/courses/backend/final-project/requirements.md @@ -64,3 +64,15 @@ To submit your finished project, you will need: - [ ] A link to your deployed API, docs and PostMan deliverables - [ ] Key technical summary & decisions - [ ] Known limitations & future improvements + +## Optional Ideas + +These are not required, and you must complete all other requirements and deliverables first to pass this project. Then you are welcome to implement these ideas or use them for inspiration to improve your project and develop your skills further. + +- [ ] Build a simple frontend (e.g. with React) that consumes your API +- [ ] Add role-based access control (e.g. admin vs regular user) +- [ ] Implement rate limiting on your API +- [ ] Add automated tests (e.g. integration tests for key endpoints) +- [ ] Set up a CI pipeline (e.g. GitHub Actions) to run your tests and linting on each PR +- [ ] Add pagination, sorting, and filtering across all list endpoints +- [ ] Implement real-time features using WebSockets (e.g. notifications, live updates) diff --git a/courses/frontend/final-project/requirements.md b/courses/frontend/final-project/requirements.md index bdab47d9..cb84ccfc 100644 --- a/courses/frontend/final-project/requirements.md +++ b/courses/frontend/final-project/requirements.md @@ -63,3 +63,16 @@ To submit your finished project, you will need: - [ ] A link to your deployed app - [ ] Key technical summary & decisions - [ ] Known limitations & future improvements + +## Optional Ideas + +These are not required, and you must complete all other requirements and deliverables first to pass this project. Then you are welcome to implement these ideas or use them for inspiration to improve your project and develop your skills further. + +- [ ] Use Firebase as an auth provider +- [ ] Add dark mode / theme switching +- [ ] Implement offline support with service workers or local caching +- [ ] Add end-to-end tests (e.g. with Cypress or Playwright) +- [ ] Set up a CI pipeline (e.g. GitHub Actions) to run your tests and linting on each PR +- [ ] Add animations and transitions for a polished user experience +- [ ] Implement internationalisation (i18n) to support multiple languages +- [ ] Achieve a Lighthouse accessibility score of 90+ From c29c1f4339490ea37df5db3e36effd60a4e6a454 Mon Sep 17 00:00:00 2001 From: Adam Blanchard Date: Mon, 20 Apr 2026 14:19:10 +0200 Subject: [PATCH 7/7] linting fixes --- SUMMARY.md | 4 ++-- courses/backend/final-project/session-plan.md | 6 ++++++ courses/frontend/final-project/session-plan.md | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/SUMMARY.md b/SUMMARY.md index 12b9f531..828e0b65 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -131,7 +131,7 @@ - [Requirements](courses/frontend/events-startup-project/requirements.md) - [Weekly Plan](courses/frontend/events-startup-project/weekly-plan.md) - [Final Project](courses/frontend/final-project/README.md) - - [Requirements](courses/frontend/final-project/frontend-requirements.md) + - [Requirements](courses/frontend/final-project/requirements.md) - [Session Plan](courses/frontend/final-project/session-plan.md) - [Backend](courses/backend/README.md) @@ -195,7 +195,7 @@ - [Requirements](courses/backend/events-startup-project/requirements.md) - [Weekly Plan](courses/backend/events-startup-project/weekly-plan.md) - [Final Project](courses/backend/final-project/README.md) - - [Requirements](courses/backend/final-project/backend-requirements.md) + - [Requirements](courses/backend/final-project/requirements.md) - [Session Plan](courses/backend/final-project/session-plan.md) - [Common Modules](shared-modules/README.md) diff --git a/courses/backend/final-project/session-plan.md b/courses/backend/final-project/session-plan.md index 5ae92a2a..8b7f4192 100644 --- a/courses/backend/final-project/session-plan.md +++ b/courses/backend/final-project/session-plan.md @@ -1,23 +1,28 @@ # Session Plan ## Week 1: Team Formation & Ideation + - Form teams and participate in an ideation session. - Collaborate to agree on a project idea and define the core concept. ## Week 2: Planning & Foundation + - Expand ideas into a structured plan. - Divide tasks among teammates and begin building the project foundation. - We will use Trello to track tasks and progress. ## Week 3: Development & Refinement + - Focus on adding features and complexity to the application. - Dedicate time to resolving errors, bugs, and merge conflicts. ## Week 4: Mid-Project Demo + - Prepare a short progress demo. - Goal: Share initial goals, progress so far, a live demo, and next steps. ## Week 5: Finalization, Deployment & Presentation Prep + - Complete the project and ensure it is fully deployed. - Enter a code freeze (no new features). - Use this week to build your demo and slides. @@ -25,5 +30,6 @@ - Presentation workshop to prepare for graduation. ## Graduation Day: Final Presentation + - Each team will be given a specific time limit for their presentation. This duration will be communicated during the session itself. - Every member must speak. As a team, you are responsible for dividing the presentation topics so that each person explains one part of the process. diff --git a/courses/frontend/final-project/session-plan.md b/courses/frontend/final-project/session-plan.md index 5ae92a2a..8b7f4192 100644 --- a/courses/frontend/final-project/session-plan.md +++ b/courses/frontend/final-project/session-plan.md @@ -1,23 +1,28 @@ # Session Plan ## Week 1: Team Formation & Ideation + - Form teams and participate in an ideation session. - Collaborate to agree on a project idea and define the core concept. ## Week 2: Planning & Foundation + - Expand ideas into a structured plan. - Divide tasks among teammates and begin building the project foundation. - We will use Trello to track tasks and progress. ## Week 3: Development & Refinement + - Focus on adding features and complexity to the application. - Dedicate time to resolving errors, bugs, and merge conflicts. ## Week 4: Mid-Project Demo + - Prepare a short progress demo. - Goal: Share initial goals, progress so far, a live demo, and next steps. ## Week 5: Finalization, Deployment & Presentation Prep + - Complete the project and ensure it is fully deployed. - Enter a code freeze (no new features). - Use this week to build your demo and slides. @@ -25,5 +30,6 @@ - Presentation workshop to prepare for graduation. ## Graduation Day: Final Presentation + - Each team will be given a specific time limit for their presentation. This duration will be communicated during the session itself. - Every member must speak. As a team, you are responsible for dividing the presentation topics so that each person explains one part of the process.