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 upproduces 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.