Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 3 additions & 1 deletion courses/backend/final-project/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -31,4 +33,4 @@ By the end of this session, you will be able to:

## Requirements

See [Requirements](backend-requirements.md).
See [Requirements](requirements.md).
39 changes: 0 additions & 39 deletions courses/backend/final-project/backend-requirements.md

This file was deleted.

78 changes: 78 additions & 0 deletions courses/backend/final-project/requirements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Backend Requirements

This document describes all requirements that you _must_ complete as part of finishing your project. You are strongly encouraged to implement your own ideas to showcase the range of your technical abilities - now is the time to push yourself! Don't forget to implement the requirements below, first, though.

## Product Requirements

Users must be able to:

- [ ] 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

- [ ] 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
- [ ] Securely integrate with a third-party service or API (e.g. without exposing secrets)

## Organisational Requirements

- [ ] Work as a team of 4-5 trainees to complete the project together
- [ ] Assign clear roles and/or areas of ownership between each team member
- [ ] Use Trello to organise your project tasks and visualise your progress
- [ ] Define all of your tasks clearly using Trello cards
- [ ] Organise your team using weekly sprints
- [ ] Run weekly planning sessions to decide on the next tasks and priority order for the sprint
- [ ] Submit small pull request(s) for each task, ready to be reviewed by other team members before merging

## Deliverables

To submit your finished project, you will need:

- [ ] A deployed and working API accessible via a public URL
- [ ] Deployed and viewable API docs describing all of your functionality
- [ ] A PostMan collection and test script(s) to demo your API
- [ ] Code versioned using git along with meaningful commit messages
- [ ] Code pushed to a public GitHub repo on your profile
- [ ] A README in the root of your repo including:
- [ ] A project description
- [ ] How to run it locally
- [ ] 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)
34 changes: 33 additions & 1 deletion courses/backend/final-project/session-plan.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
# 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.
4 changes: 3 additions & 1 deletion courses/frontend/final-project/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -31,4 +33,4 @@ By the end of this session, you will be able to:

## Requirements

See [Requirements](frontend-requirements.md).
See [Requirements](requirements.md).
Original file line number Diff line number Diff line change
Expand Up @@ -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+
34 changes: 33 additions & 1 deletion courses/frontend/final-project/session-plan.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
# 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.
Loading