Quality Requirements Demo 1 - COS301-SE-2026/Mealchemy GitHub Wiki

Quality Requirements


QR1: Performance

  • QR1.1 The system shall respond to API requests within acceptable time limits.

    • QR1.1.1 Standard REST endpoints shall respond at p95 within 500ms.
    • QR1.1.2 The recommendation engine shall return ranked recipe suggestions in 2 000 ms at p95.
    • QR1.1.3 The Flutter appplication shall reach an interactive state within 3 seconds of cold-start.
  • QR1.2 The system shall allow basic usability without an internet connection.

    • QR1.2.1 Saved recipes and pantry data will be accessible offline via local caching.
    • QR1.2.2 Data will sync automatically once connectivity is restored.

QR2: Scalability

  • QR2.1 The system shall be able to handle up to 1 000 simultaneous active users without a performance drop.

    • QR2.1.1 The PostgreSQL connection pool shall be configured to support at least 1 000 concurrent connections.
  • QR2.2 The backend shall be stateless to support horizontal scaling.

    • QR2.2.1 All authentication shall use JWT only , no server-side session state.

QR3: Reliability

  • QR3.1 The system must be designed to support at least 99% during a 30-day period .

  • QR3.2 All database operations shall be ACID-compliant, ensuring no data loss on failure or restart.

  • QR3.3 In the case recommendation engine is unavailable( when the system is offline ), the system shall resort to keyword-based search within 200 ms.


QR4: Security

  • QR4.1 All endpoints other than registration and login shall require a valid JWT bearer token.

    • QR4.1.1 Unauthenticated requests shall return HTTP 401.
  • QR4.2 Data of the user shall only be accessed and modified by the user.

    • QR4.2.1 Ownership mismatches shall return HTTP 403 at the service layer.
  • QR4.3 Passwords shall be hashed using BCrypt (cost factor ≥ 12) before persistence no plaintext in the database or logs.

  • QR4.4 All client-server communication shall use TLS 1.2 or higher.


QR5: Maintainability

  • QR5.1 Backend service and repository code shall maintain at least 70% line coverage (Java Code Coverage).

  • QR5.2 The code base shall enforce strict layering. There shall be no calls to the repository from within Controller classes.

  • QR5.3 Every push to a feature branch shall trigger a GitHub Actions build; no merges on a failing build.


QR6: Usability and Accessibility

  • QR6.1 A new user shall be able to add a pantry item and get a recipe suggestion within 3 minutes, without a tutorial.

  • QR6.2 All UI text must meet WCAG 2.1 AA contrast ratios.

    • QR6.2.1 Normal text shall have a contrast ratio of at least 4.5:1.
    • QR6.2.2 Large text shall have a contrast ratio of at least 3:1.
  • QR6.3 The UI shall render without overflow on screen widths between 360 px and 430 px.

  • QR6.4 Recipe step screens shall have a minimum font size of 16 sp with line height ≥ 1.4×.


QR7: Portability

  • QR7.1 The app shall be fully functional on Android API 30+ and iOS 15+.

  • QR7.2 The backend shall be containerised so that docker compose up produces a healthy running stack.

  • QR7.3 All schema changes shall be handled through Flyway migrations no manual DDL permitted.


QR8: Cost

  • QR8.1 All infrastructure shall remain within free-tier limits for the duration of the project (R0 operational cost).

  • QR8.2 If a paid LLM API is used, a caching layer will have a hit rate of at least 60% for repeated prompts.