Week 6
Test
Week 7
Assignment Technical requirements
Legenda
- π = Mentioned in rubric
- π = Mentioned in technische randvoorwaarden
- ππ = Mentioned in both
1. Frontend
- Code frontend in TypeScript ππ
- Use component-based architecture ππ
- Implement input validation for all required fields ππ
- Communicate with backend via JWT tokens π
- Implement UI tests (automated, happy flows) π
- Ensure frontend is version-controlled in Git π
2. Backend
- Code backend in TypeScript ππ
- Structure backend following Onion Architecture ππ
- Implement input validation for all required fields ππ
- Handle CRUD operations: create, read, update (at least) π
- Implement business logic tests π
- Implement unit tests (min. 5) ππ
- Implement system tests (min. 5) ππ
- Ensure backend is version-controlled in Git π
3. MongoDB Integration
- Host MongoDB online (Atlas) ππ
- Ensure MongoDB is accessible via Compass π
- Persist data in MongoDB ππ
- Implement read, create, update operations on functionally required data π
- Implement data validation π
- Implement error handling for database operations π
- Optional: implement advanced queries corresponding to functional requirements π
4. Testing
- Create test plan with traceability matrix linking tests to functional requirements ππ
- Execute happy path integration tests (min. 1) ππ
- Execute unhappy path integration tests (min. 1) ππ
- Execute unit tests (min. 5) ππ
- Execute system tests (min. 5) ππ
- Include automated UI tests for happy flows π
- Achieve >=80% code coverage (frontend & backend) π
- Generate test reports π
5. CI/CD
- Set up automatic test execution in CI/CD pipeline ππ
- Ensure release branch triggers deployment to cloud/container ππ
- Deploy frontend and backend independently ππ
- Implement linting in pipeline π
- Implement rollback functionality π
- Explain fail-safes for pipeline failed states π
6. Deployment & Hosting
- Host frontend and backend in cloud (App Service or container) π
- Handle CORS issues π
- Ensure CI/CD automatic deployment on release branch π
7. Security
- Ensure no API keys or secrets are hardcoded π
- Use JWT for secure communication π
- Handle failed states gracefully π
8. Presentation & Research
- Prepare presentation explaining:
- Choice of frontend & backend frameworks π
- Choice of Onion Architecture π
- CI/CD setup π
- MongoDB setup π
- Test plan and examples π
- How functional requirements were translated into PoC π
- Include demo & practical examples π
- Demonstrate critical reflection on framework & architecture choices π
- Show any creative or extra functionality beyond base requirements π
Assignment User Stories
Epic 1: Module Browsing & Filtering
- As a student, I want to see a list of available modules so that I can explore my options.
- As a student, I want to filter modules by study points (15 or 30 EC) so that I can find modules that fit my schedule.
- As a student, I want to filter modules by level (NLQF-5 or NLQF-6) so that I only see suitable modules.
- As a student, I want to filter modules by theme so that I can focus on my interests.
- As a student, I want to search for modules by name or keyword so that I can quickly find specific modules.
Epic 2: Module Detail Page
- As a student, I want to see detailed information about a module including description, EC, and type so that I can make an informed choice.
- As a student, I want buttons to add modules to my favorites so that I can save modules I am interested in.
- As a student, I want a button for βmore infoβ to access additional details or links.
Epic 3: Favorites & Comparison
- As a student, I want to save modules as favorites so that I can easily access them later.
- As a student, I want to view a comparison of selected modules side by side so that I can make better decisions.
- As a student, I want to remove modules from my favorites list so that I can keep it organized.
Epic 4: Recommendations
- As a student, I want to see recommended modules based on my study program so that I can discover modules I might like.
- As a student, I want recommendations to be generated using a static/mock algorithm so that I can get suggestions even without AI.
Epic 5: Accessibility & Inclusivity
- As a student, I want the app to be compatible with screen readers so that it is accessible to visually impaired users.
- As a student, I want a dark mode so that I can comfortably use the app at night.
- As a student, I want clear fonts and readable layouts so that content is easy to read.
- As a student, I want a language toggle (NL/EN) so that I can use the app in my preferred language.
Epic 6: Guidance & Support
- As a student, I want a built-in FAQ or chatbot so that I can get help quickly.
- As a student, I want a contact button to reach a study advisor so that I can get personal guidance.
Epic 7: PWA Features
- As a student, I want to install the app on my phone so that I can access it like a native app.
- As a student, I want the last visited modules available offline so that I can access them without an internet connection.
Epic 8: MongoDB Integration & CRUD
- As a developer, I want modules to be stored in MongoDB so that data persists.
- As a developer, I want to implement create/read/update operations for modules so that data can be managed effectively.
- As a developer, I want to validate data before storing it so that only correct information is saved.
- As a developer, I want to handle database errors gracefully so that the app doesnβt crash.
- As a developer, I want to implement advanced queries (filter/search) in MongoDB to support app features.
Epic 9: Security & Authentication
- As a student, I want secure communication between frontend and backend using JWT so that my data is protected.
- As a developer, I want to ensure no secrets or API keys are hardcoded so that the app is secure.
- As a student, I want failed requests to be handled gracefully so that I understand what went wrong.