With TinyImg you can upload any image you want, and change it's size, format and quality. You will be able to either store the image in the server, download it directly or even share it with a link.
graph LR
A[Auth Service]
B[TinyImg Service]
B <--> C[Notification Service]
B <--> D[FFmpeg Service]
D <--> C
- Function requirements
- Non-functional requirements
- Business rules
- Tech stack
- GoF patterns adopted
- Code quality and coverage
- Communication protocols
- ALM - Application Lifecycle Management
- The user should be able to sign up.
- The user should be able to sign in.
- The user should be able to upload an image.
- The user should be able to change the image size.
- The user should be able to change the image format.
- The user should be able to change the image quality.
- The user should be able to store the image in the server.
- The user should be able to download the image converted image.
- The user should be able to share the image with a link.
- The image processing should be done using FFmpeg.
- The image should be able to store images.
- The user should be able to upload images up to 5MB.
- The user should be able to store up to 10 images.
- The user should be able to store images up to 30 days.
- The user should be able to download up to 5 images per day.
- The user should be able to share up to 3 images per day.
Pattern | Reason |
---|---|
Builder | Will be used on Authentication Service to build the user during the sign up process |
Adapter | Will be used on FFmpeg Service and TinyImg Service to communicate with Message Queue |
Strategy | Will be used on FFmpeg Service to process the image |
Singleton | Will be used on FFmpeg Service to ensure only one instance of the message queue |
This will be handled by SonarQube during the CI/CD pipeline. All services must meet a quota of 100% code coverage. Yes, you read it right, 100%.
Protocol | Reason |
---|---|
REST | Will be used to communicate between the user and the TinyImg Service and Authentication Service |
WebSockets | Will be used to communicate between the Notification Service and the user |
AMQP | Will be used to communicate between the TinyImg Service, FFmpeg Service, and the Message Queue |
The project backlog can be found in this repo project section.