Skip to content

Commit 5accdd9

Browse files
authored
Merge pull request #298 from HackYourFuture-CPH/specialism-final-projects-update
Specialism final projects requirements
2 parents 388e8ff + c29c1f4 commit 5accdd9

8 files changed

Lines changed: 165 additions & 45 deletions

File tree

SUMMARY.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@
131131
- [Requirements](courses/frontend/events-startup-project/requirements.md)
132132
- [Weekly Plan](courses/frontend/events-startup-project/weekly-plan.md)
133133
- [Final Project](courses/frontend/final-project/README.md)
134-
- [Requirements](courses/frontend/final-project/frontend-requirements.md)
134+
- [Requirements](courses/frontend/final-project/requirements.md)
135135
- [Session Plan](courses/frontend/final-project/session-plan.md)
136136

137137
- [Backend](courses/backend/README.md)
@@ -195,7 +195,7 @@
195195
- [Requirements](courses/backend/events-startup-project/requirements.md)
196196
- [Weekly Plan](courses/backend/events-startup-project/weekly-plan.md)
197197
- [Final Project](courses/backend/final-project/README.md)
198-
- [Requirements](courses/backend/final-project/backend-requirements.md)
198+
- [Requirements](courses/backend/final-project/requirements.md)
199199
- [Session Plan](courses/backend/final-project/session-plan.md)
200200

201201
- [Common Modules](shared-modules/README.md)

courses/backend/final-project/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
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.
44

5+
## How it works
6+
57
This module usually runs for 4-5 weeks.
68

79
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:
@@ -31,4 +33,4 @@ By the end of this session, you will be able to:
3133

3234
## Requirements
3335

34-
See [Requirements](backend-requirements.md).
36+
See [Requirements](requirements.md).

courses/backend/final-project/backend-requirements.md

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Backend Requirements
2+
3+
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.
4+
5+
## Product Requirements
6+
7+
Users must be able to:
8+
9+
- [ ] Browse or query the main resource(s) of your API (e.g. list, search, filter, paginate)
10+
- [ ] View detailed information about a specific resource
11+
- [ ] Create an account and log in
12+
- [ ] Perform authenticated actions (e.g. create, update, or delete resources they own)
13+
- [ ] Receive meaningful error messages when something goes wrong (e.g. validation errors, unauthorized access, missing resources)
14+
- [ ] Integrate with at least 1 third-party service or API (e.g. email delivery, file storage, payment simulation, geolocation, weather data)
15+
16+
## Technical Requirements
17+
18+
- [ ] Database
19+
- [ ] Use PostgreSQL as the database
20+
- [ ] Design and document your schema with an Entity-Relationship Diagram (ERD)
21+
- [ ] All database queries must use parameterised queries or a query builder (no SQL injection vulnerabilities)
22+
23+
- [ ] API design
24+
- [ ] RESTful API design following consistent resource naming and HTTP method conventions
25+
- [ ] API routes documented with Swagger / OpenAPI
26+
- [ ] Appropriate use of HTTP status codes (e.g. 201 for created, 404 for not found, 401/403 for auth errors)
27+
28+
- [ ] Authentication and authorisation
29+
- [ ] User registration with securely hashed passwords (e.g. bcrypt)
30+
- [ ] Login flow that returns a token or establishes a session
31+
- [ ] Protected routes that require authentication
32+
- [ ] Basic authorisation (e.g. users can only modify their own resources)
33+
34+
- [ ] Security and error handling
35+
- [ ] Input validation on incoming requests (e.g. required fields, correct types)
36+
- [ ] Centralised error handling middleware
37+
- [ ] No sensitive data (passwords, tokens) exposed in API responses
38+
39+
- [ ] External service integration
40+
- [ ] Securely integrate with a third-party service or API (e.g. without exposing secrets)
41+
42+
## Organisational Requirements
43+
44+
- [ ] Work as a team of 4-5 trainees to complete the project together
45+
- [ ] Assign clear roles and/or areas of ownership between each team member
46+
- [ ] Use Trello to organise your project tasks and visualise your progress
47+
- [ ] Define all of your tasks clearly using Trello cards
48+
- [ ] Organise your team using weekly sprints
49+
- [ ] Run weekly planning sessions to decide on the next tasks and priority order for the sprint
50+
- [ ] Submit small pull request(s) for each task, ready to be reviewed by other team members before merging
51+
52+
## Deliverables
53+
54+
To submit your finished project, you will need:
55+
56+
- [ ] A deployed and working API accessible via a public URL
57+
- [ ] Deployed and viewable API docs describing all of your functionality
58+
- [ ] A PostMan collection and test script(s) to demo your API
59+
- [ ] Code versioned using git along with meaningful commit messages
60+
- [ ] Code pushed to a public GitHub repo on your profile
61+
- [ ] A README in the root of your repo including:
62+
- [ ] A project description
63+
- [ ] How to run it locally
64+
- [ ] A link to your deployed API, docs and PostMan deliverables
65+
- [ ] Key technical summary & decisions
66+
- [ ] Known limitations & future improvements
67+
68+
## Optional Ideas
69+
70+
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.
71+
72+
- [ ] Build a simple frontend (e.g. with React) that consumes your API
73+
- [ ] Add role-based access control (e.g. admin vs regular user)
74+
- [ ] Implement rate limiting on your API
75+
- [ ] Add automated tests (e.g. integration tests for key endpoints)
76+
- [ ] Set up a CI pipeline (e.g. GitHub Actions) to run your tests and linting on each PR
77+
- [ ] Add pagination, sorting, and filtering across all list endpoints
78+
- [ ] Implement real-time features using WebSockets (e.g. notifications, live updates)
Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
11
# Session Plan
22

3-
TODO
3+
## Week 1: Team Formation & Ideation
4+
5+
- Form teams and participate in an ideation session.
6+
- Collaborate to agree on a project idea and define the core concept.
7+
8+
## Week 2: Planning & Foundation
9+
10+
- Expand ideas into a structured plan.
11+
- Divide tasks among teammates and begin building the project foundation.
12+
- We will use Trello to track tasks and progress.
13+
14+
## Week 3: Development & Refinement
15+
16+
- Focus on adding features and complexity to the application.
17+
- Dedicate time to resolving errors, bugs, and merge conflicts.
18+
19+
## Week 4: Mid-Project Demo
20+
21+
- Prepare a short progress demo.
22+
- Goal: Share initial goals, progress so far, a live demo, and next steps.
23+
24+
## Week 5: Finalization, Deployment & Presentation Prep
25+
26+
- Complete the project and ensure it is fully deployed.
27+
- Enter a code freeze (no new features).
28+
- Use this week to build your demo and slides.
29+
- In this workshop we help you to learn best practices and prepare effectively.
30+
- Presentation workshop to prepare for graduation.
31+
32+
## Graduation Day: Final Presentation
33+
34+
- Each team will be given a specific time limit for their presentation. This duration will be communicated during the session itself.
35+
- 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.

courses/frontend/final-project/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
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.
44

5+
## How it works
6+
57
This module usually runs for 4-5 weeks.
68

79
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:
@@ -31,4 +33,4 @@ By the end of this session, you will be able to:
3133

3234
## Requirements
3335

34-
See [Requirements](frontend-requirements.md).
36+
See [Requirements](requirements.md).

courses/frontend/final-project/frontend-requirements.md renamed to courses/frontend/final-project/requirements.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,16 @@ To submit your finished project, you will need:
6363
- [ ] A link to your deployed app
6464
- [ ] Key technical summary & decisions
6565
- [ ] Known limitations & future improvements
66+
67+
## Optional Ideas
68+
69+
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.
70+
71+
- [ ] Use Firebase as an auth provider
72+
- [ ] Add dark mode / theme switching
73+
- [ ] Implement offline support with service workers or local caching
74+
- [ ] Add end-to-end tests (e.g. with Cypress or Playwright)
75+
- [ ] Set up a CI pipeline (e.g. GitHub Actions) to run your tests and linting on each PR
76+
- [ ] Add animations and transitions for a polished user experience
77+
- [ ] Implement internationalisation (i18n) to support multiple languages
78+
- [ ] Achieve a Lighthouse accessibility score of 90+
Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
11
# Session Plan
22

3-
TODO
3+
## Week 1: Team Formation & Ideation
4+
5+
- Form teams and participate in an ideation session.
6+
- Collaborate to agree on a project idea and define the core concept.
7+
8+
## Week 2: Planning & Foundation
9+
10+
- Expand ideas into a structured plan.
11+
- Divide tasks among teammates and begin building the project foundation.
12+
- We will use Trello to track tasks and progress.
13+
14+
## Week 3: Development & Refinement
15+
16+
- Focus on adding features and complexity to the application.
17+
- Dedicate time to resolving errors, bugs, and merge conflicts.
18+
19+
## Week 4: Mid-Project Demo
20+
21+
- Prepare a short progress demo.
22+
- Goal: Share initial goals, progress so far, a live demo, and next steps.
23+
24+
## Week 5: Finalization, Deployment & Presentation Prep
25+
26+
- Complete the project and ensure it is fully deployed.
27+
- Enter a code freeze (no new features).
28+
- Use this week to build your demo and slides.
29+
- In this workshop we help you to learn best practices and prepare effectively.
30+
- Presentation workshop to prepare for graduation.
31+
32+
## Graduation Day: Final Presentation
33+
34+
- Each team will be given a specific time limit for their presentation. This duration will be communicated during the session itself.
35+
- 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.

0 commit comments

Comments
 (0)