Week 6

Test

Week 7

Assignment Technical requirements

Hand in & Rubric

Legenda

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.