Repository navigation
Technology Requirements Demo 4
Keegan edited this page Sep 28, 2026
·
1 revision
| Logo | Technology | Use | Justification |
|---|---|---|---|
| Next.js | Frontend | Next.js was selected because it is familiar to the development team and provides a structured framework for building modern web applications. It supports reusable components, routing, and server-side capabilities, which improve maintainability and development productivity. It is open source, which supports the requirement of prioritising free and open-source software and technologies. | |
| Python | Backend and ML | Python was selected for its readability, large ecosystem, and support for machine learning. It is also open source, which supports the requirement of prioritising free and open-source software and technologies. | |
| FastAPI | Backend API Framework | FastAPI was selected because it is a high-performance framework for developing APIs in Python, which is also used by other backend technologies in the system. It supports asynchronous functionality, making it suitable for the backend's asynchronous operations. It is open source, which supports the requirement of prioritising free and open-source software and technologies. | |
| PostgreSQL | Relational Database | PostgreSQL was selected because it is familiar to the development team and is a reliable relational database management system. It supports structured data, relationships, constraints, and useful data types like JSONB. It suites the system's requirements for storing Users, Cases, Reports, and Comments. PostgreSQL is open source, which supports the requirement of prioritising free and open-source software and technologies. | |
| Cloudflare R2 | Object Storage | Cloudflare R2 was selected to provide object storage for uploaded media files, including images, PDFs, and videos. Its S3-compatible API also integrates easily with Python libraries used by the backend. Its free tier supports the requirement of prioritising free or low-cost technologies. | |
| PyTorch | Machine Learning | PyTorch was selected for the development of classification models for the various media types supported by the system. As a Python library, it integrates easily with the backend and provides functionality for developing, training, evaluating, and executing neural network models. PyTorch is open source, which supports the requirement of prioritising free and open-source software and technologies. | |
| Docker | Containerisation and Deployment | Docker was selected because of the development team's familiarity with it and the isolated execution environment it provides. Containerisation helps reduce environment-specific config issues and allows the system to be deployed consistently across development, testing, and production environments. Docker also provides the tooling necessary for deployment and container management. Its freely available tooling supports the requirement of prioritising free software and technologies. | |
| Jest | Frontend Testing | Jest was selected as the frontend testing framework because it supports JavaScript and TypeScript and is familiar to the development team. It provides useful testing functionality such as assertions, test isolation, mocking, and automated test execution. Jest also supports code-coverage reporting, allowing the team to measure progress towards the 85% testing coverage target defined by the system's reliability requirements. Jest is open source, which supports the requirement of prioritising free and open-source software and technologies. | |
| PyTest | Backend Testing | Pytest was selected because it easily integrates with the Python-based backend and can also be used to test machine-learning functionality implemented using PyTorch. It provides simple and readable test syntax and supports fixtures, parameterised testing, and asynchronous testing. Asynchronous testing is useful because the backend makes use of asynchronous programming. Pytest is open source, which supports the requirement of prioritising free and open-source software and technologies. | |
| PlayWright | End-to-end Testing | Playwright was selected for end-to-end testing because it supports automated testing of user workflows through real browser environments. It allows the development team to simulate user interactions with the system and verify the successful execution of user stories across the frontend and backend. Playwright is open source, which supports the requirement of prioritising free and open-source software and technologies. |
- User Stories
- Use Cases
- Use Case Diagrams
- Functional Requirements
- API Service Contracts
- Quality Requirements
- Constraints
- Technologies Required
- Architecture Diagram
- Domain Model
- Introduction
- User Stories
- Use Case Diagrams
- Functional Requirements
- Non-Functional Requirements
- Domain Model
- Introduction
- User Stories
- Use Case Diagrams
- Functional Requirements
- Non-Functional Requirements
- Domain Model
- Introduction
- Architectural Requirements
- Technology Requirements
- API Contracts
- Deployment
- NFR Testing
- NFR Traceability Matrix
- Introduction
- User Stories
- Use Case Diagrams
- Functional Requirements
- Non-Functional Requirements
- Domain Model
- Introduction
- Architectural Requirements
- Technology Requirements
- API Contracts
- Deployment
- NFR Testing
- NFR Traceability Matrix