- The application stores only pictures' names and associated IDs. Pictures, metadata, and other information are stored on a distant back server and can be retrieved and updated with specific requests.
- Pictures taken from the phone camera need to be compressed before being stored, with a compromise between performance and quality.
- The user who creates an album becomes its only owner and owns all the pictures it contains. Ownership cannot be shared, transferred, or resigned.
- Only the owner of a picture/album can modify/delete it.
- Users can only see pictures/albums they own or have been granted access to.
- Implementation of a research engine without external libraries.
- The application should be reactive, with no lag when accessing pictures.
- Architecture designed with scalability in mind.
- Use of efficient algorithms and database models.
- Containerization of services with Docker and orchestration with Docker Compose.
- Automation of the construction of the mobile application and the back-end within containers.
- Comprehensive documentation including Software Architecture Specification and Software Qualification.
- Implementation of a testing policy.
- Logging of all errors and important messages in a clear manner.
- Optimized for Python 3.11.
To run the application in production, follow these steps:
- Clone this repository.
- Navigate to the project directory.
- Fill in the
.envfile with the required environment variables. You can use the.env.examplefile as a template. docker-compose up --buildto build and start the services.- The application is now running on
localhost:3000you can use reverse proxy engine like nginx or apache to handle http/https.
To run the application in development, follow these steps:
- Clone this repository.
- Navigate to the project directory.
- Fill in the
.envfile with the required environment variables. You can use the.env.examplefile as a template. python main.pyto build and start the services.- The application is now running on
localhost:3000, you will found a complete swagger onlocalhost:3000/.