-
Notifications
You must be signed in to change notification settings - Fork 11
Initial docs for mid-specialism project #267
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
e6613ea
initial version
adamblanchard e60cb48
learning goals
adamblanchard 6bc0d32
refine product requirements
adamblanchard c153520
restructured files
adamblanchard 5ff395e
added weekly plan template
adamblanchard e2c8344
fixed linting
adamblanchard File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,73 @@ | ||
| # Events Startup Project | ||
|
|
||
| This is a standalone project where you will build a web application for an events startup. You will work individually to develop features for a ticketing platform that helps people view and buy tickets for events. | ||
|
|
||
| ## Project Learning Goals | ||
|
|
||
| By the end of this module, you will be able to: | ||
|
|
||
| - [ ] Apply your specialism knowledge and skills within a realistic work project | ||
| - [ ] Practice running a full end-to-end project (e.g. planning with trello, through to deployment) | ||
| - [ ] Transform requirements into functional working solutions | ||
| - [ ] Successfully deploy complex services/applications | ||
| - [ ] Overcome technical difficulties, find solutions independently, and know when to reach out and ask for help in a constructive manner | ||
| - [ ] Plan a complex project and deliver it on time | ||
| - [ ] Feel ready to run a similar process for the team final project | ||
|
|
||
| ## Scenario | ||
|
|
||
| Welcome to your new job! We are an events startup, and you're here to help us develop our web app, which helps our users view and buy tickets for events. | ||
|
|
||
| ### Practical details | ||
|
|
||
| - You'll work by yourself (sorry, you're the only developer we've hired!) | ||
| - We have an existing app that you'll build on top of - it's basic so there's lots to do. | ||
| - We have some strict requirements that you need to implement, but there is space for personalisation too. | ||
|
|
||
| ## Requirements | ||
|
|
||
| Familiarise yourself well with the following documents to understand what is required to complete the project. | ||
|
|
||
| Some of the requirements below are already working in the current version of the app, others will need to be implemented by you, and there are some suggestions of tasks where you can come up with additional ideas yourself. | ||
|
|
||
| 1. [Product Requirements Document (PRD)](./product-requirements-document.md) | ||
| 1. Technical Specification (spec) | ||
| 1. [Frontend Course Spec](./frontend/technical-specification.md) | ||
| 1. [Backend Course Spec](./backend/technical-specification.md) | ||
|
|
||
| ## How to organise your project | ||
|
|
||
| Follow the requirements and practices from the [Intro to Agile](/courses/foundation/intro-to-agile/README.md) module. | ||
|
|
||
| - [ ] Work as an individual to complete the project by yourself | ||
| - [ ] Use Trello to organise your project tasks and visualise your progress | ||
| - [ ] Define all of your tasks clearly using Trello cards | ||
| - [ ] Create and prioritise your tasks at the start of each week, to have a clear idea of what will be required in that sprint | ||
| - [ ] Submit a single pull request at the end of each sprint to be reviewed by your mentors. | ||
|
|
||
| <!-- TODO: Consider setting up a Trello template with tags like sprint 1, sprint 2, or specific tasks to get them started --> | ||
|
|
||
| ## Project delivery | ||
|
|
||
| These are the final deliverables that you should submit by the end-of-project deadline: | ||
|
|
||
| ### Frontend | ||
|
|
||
| Links to the following: | ||
|
|
||
| - [ ] Trello board | ||
| - [ ] Initial design sketches | ||
| - [ ] GitHub repo | ||
| - [ ] Deployed web app | ||
|
|
||
| ### Backend | ||
|
|
||
| Links to the following: | ||
|
|
||
| - [ ] Trello board | ||
| - [ ] GitHub repo | ||
| - [ ] Database schema with ERD | ||
| - [ ] Deployed API documentation | ||
| - [ ] Deployed API service | ||
| - [ ] Deployed database | ||
| - [ ] Postman collection | ||
21 changes: 21 additions & 0 deletions
21
shared-modules/mid-specialism-project/backend/technical-specification.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # Technical Specification (Spec) Backend | ||
|
|
||
| ## Implementation Requirements | ||
|
|
||
| You should use the technologies, skills, tools, and stack you've learned throughout the course. Here are some specific requirements that you must meet in your implementation: | ||
|
|
||
| <!-- TODO: These requirements are by no means complete, just a couple of examples from each course curriculum to give a good example of how it should map to what we teach in the course --> | ||
|
|
||
| - [ ] Database schema must be documented with an Entity-Relationship Diagram (ERD) | ||
| - [ ] Database must use PostgreSQL | ||
| - [ ] All database queries must use parameterized queries (no SQL injection vulnerabilities) | ||
|
|
||
| ## API | ||
|
|
||
| We already have a fully functional API that you should use during your frontend development. You are welcome to make changes to it to change the data or add additional data. You can also add additional endpoints, if it is required for a new feature idea you have. However, the existing API functionality should remain in place and not break. | ||
|
|
||
| We already have an API in place, but it is missing many features that you will be required to implement. You can find the API specification below, which describes what you will need to implement to complete the project. | ||
|
|
||
| <!-- Part of the project is to design APIs, not only implement planned interfaces, so this will be a mix of documented and working enpoints, fully specced endpoints, as well as placeholders for endpoints that the trainee must design themselves e.g. in line with their data model --> | ||
|
|
||
| <!-- TODO: Add or link to API contract specification - ultimately, this documentation should probably live inside the project skeletons, since the trainees will also own making changes to it as needed. --> |
25 changes: 25 additions & 0 deletions
25
shared-modules/mid-specialism-project/backend/weekly-plan.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| # Weekly plan | ||
|
|
||
| Here is a guideilne of the outcomes you should reach each week to stay on track. | ||
|
|
||
| <!-- Guide for writing these: | ||
| These weekly goals need to ensure two things: | ||
| 1. What trainees learn from the corresponding week in [database](/courses/backend/databases/README.md) and [node](/courses/backend/node/README.md) modules are practiced here in the right place | ||
| 2. All requirements/deliverables from the [project](../README.md) are well structured and ordered to ensure trainees can reach the end goals by week 5. | ||
|
|
||
| For some context on how we ordered the milestones in the old meal sharing project, check [here](https://github.com/HackYourFuture-CPH/program/blob/main/contributing/proposals/mid-specialism-course-project.md#old-meal-sharing-content). Note that we have changed the structure of the corresponding modules too, but there is a big overlap in learning goals. | ||
| --> | ||
|
|
||
| ## Week 1 Sprint | ||
|
|
||
| - [ ] (e.g. start with some planning tasks) | ||
|
|
||
| ## Week 2 Sprint | ||
|
|
||
| ## Week 3 Sprint | ||
|
|
||
| ## Week 4 Sprint | ||
|
|
||
| ## Week 5 Sprint | ||
|
|
||
| - [ ] (e.g. end with some deploying tasks) |
18 changes: 18 additions & 0 deletions
18
shared-modules/mid-specialism-project/frontend/technical-specification.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # Technical Specification (Spec) Frontend | ||
|
|
||
| ## Implementation Requirements | ||
|
|
||
| You should use the technologies, skills, tools, and stack you've learned throughout the course. Here are some specific requirements that you must meet in your implementation: | ||
|
|
||
| <!-- TODO: These requirements are by no means complete, just a couple of examples from each course curriculum to give a good example of how it should map to what we teach in the course --> | ||
|
|
||
| - [ ] App must use React Router with distinct routes (e.g. event list, event detail, cart, orders) | ||
| - [ ] Shared state (e.g. cart, user session) must use React Context | ||
|
|
||
| ## API | ||
|
|
||
| We already have a fully functional API that you should use during your frontend development. You are welcome to make changes to it to change the data or add additional data. You can also add additional endpoints, if it is required for a new feature idea you have. However, the existing API functionality should remain in place and not break. | ||
|
|
||
| <!-- For frontenders, the API will already be working and complete. For backenders, the API will also have some placeholders - part of the project is to design APIs, not only implement planned interfaces. --> | ||
|
|
||
| <!-- TODO: Add or link to API contract specification - ultimately, this documentation should probably live inside the project skeletons, since the trainees will also own making changes to it as needed. --> |
25 changes: 25 additions & 0 deletions
25
shared-modules/mid-specialism-project/frontend/weekly-plan.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| # Weekly plan | ||
|
|
||
| Here is a guideilne of the outcomes you should reach each week to stay on track. | ||
|
|
||
| <!-- Guide for writing these: | ||
| These weekly goals need to ensure two things: | ||
| 1. What trainees learn from the corresponding week in [React](/courses/frontend/react/README.md) module are practiced here in the right place | ||
| 2. Requirements from the [PRD](../product-requirements-document.md) and [frontend spec](../frontend/technical-specification.md) are well structured and ordered to ensure trainees can reach the end goal by week 5. | ||
|
|
||
| For some context on how we ordered the milestones in the old meal sharing project, check [here](https://github.com/HackYourFuture-CPH/program/blob/main/contributing/proposals/mid-specialism-course-project.md#old-meal-sharing-content). Note that we have changed the structure of the corresponding modules too, but there is a big overlap in learning goals. | ||
| --> | ||
|
|
||
| ## Week 1 Sprint | ||
|
|
||
| - [ ] (e.g. start with some planning tasks) | ||
|
|
||
| ## Week 2 Sprint | ||
|
|
||
| ## Week 3 Sprint | ||
|
|
||
| ## Week 4 Sprint | ||
|
|
||
| ## Week 5 Sprint | ||
|
|
||
| - [ ] (e.g. end with some deploying tasks) |
48 changes: 48 additions & 0 deletions
48
shared-modules/mid-specialism-project/product-requirements-document.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| # Product Requirements Document (PRD) | ||
|
|
||
| These requirements describe the overall functionality of the app. Some of these are already implemented in the current app (marked with a check), the rest will need to be implemented by you. | ||
|
|
||
| ## 1. Browsing and Searching | ||
|
|
||
| - [x] 1.1 Users can view a basic list of events | ||
| - [ ] 1.2 Users can search and paginate through events | ||
| - [ ] 1.3 Users can view individual event details (date, time, venue, description) | ||
| - [ ] 1.4 Users can see ticket availability and pricing for an event | ||
|
|
||
| ## 2. Authentication | ||
|
|
||
| - [x] 2.1 Unauthenticated users can browse events | ||
| - [ ] 2.2 Authenticated users can see their account, previous orders etc. | ||
| - [ ] 2.3 Unauthorized actions result in clear and actionable error to the user | ||
|
|
||
| ## 3. Shopping Cart | ||
|
|
||
| - [x] 3.1 Users can add tickets to their shopping cart | ||
| - [ ] 3.2 Users can select ticket quantity when adding to cart | ||
| - [ ] 3.3 Items can be added, updated, or removed while in the cart | ||
| - [ ] 3.4 Cart is saved across the session (and beyond the session, if authenticated) | ||
|
|
||
| ## 4. Checkout | ||
|
|
||
| - [ ] 4.1 A user must be authenticated to checkout | ||
| - [ ] 4.2 During checkout, the cart is finalized into an order, which can then no longer be changed | ||
|
|
||
| ## 5. History and Review | ||
|
|
||
| - [ ] 5.1 Authenticated users can view a list of completed orders | ||
| - [ ] 5.2 Authenticated users can view a specific order and its details | ||
| - [ ] 5.3 Authenticated users can easily view and show their purchased tickets | ||
|
|
||
| ## 6. Error Handling and UX | ||
|
|
||
| - [x] 6.1 Loading states are displayed while data is being fetched (Frontend only) | ||
| - [ ] This is only implemented in the existing pages, you'll need to implement this for all the additions you make too! | ||
| - [ ] 6.2 Meaningful error messages are shared when actions fail | ||
| - [ ] 6.3 Form inputs are validated before submission (Frontend only) | ||
|
|
||
| ## 7. Admin and Reporting (optional idea) | ||
|
|
||
| <!-- TODO: I'm not sure if we should include a list of optional ideas here too, but here's one for now --> | ||
|
|
||
| - [ ] 7.1 Admins can view ticket sales statistics per event (e.g. tickets sold, revenue) | ||
| - [ ] 7.2 Admins can see an overview of all events and their performance |
16 changes: 16 additions & 0 deletions
16
shared-modules/mid-specialism-project/temp-planning-notes.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| # Temp Planning Notes | ||
|
|
||
| <!-- TODO: These are planning notes to be removed or moved before going live --> | ||
|
|
||
| We will create two apps, frontend and backend, from [hyf-project-template](https://github.com/HackYourFuture-CPH/hyf-project-template). Both courses should start with some state of runnable, working app. The starting point is up to us. They should have some code they have to "work out" at the start, just like when you start in a new job. | ||
|
|
||
| **Backend:** | ||
|
|
||
| - Basic API, runnable | ||
| - Initial API docs in place | ||
| - Initial database | ||
|
|
||
| **Frontend:** | ||
|
|
||
| - Basic frontend app, runnable | ||
| - Fully working, documented API via json-server, easily editable |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right now the frontend and backend stuff is a bit mixed up as it's all in this same parent directory, but later on i will work out a reasonable way to split it into the separate courses directories properly. Doing it all in here is ok for now!