This is an API for a simple image processing service. It allows users to upload images, transform them, and store them in the cloud. Written in Go.
- User registration and basic account management
- Two-factor authentication using JWTs and TOTPs
- Image uploading and downloading to and from Azure Blob Storage
- Image transformation using the imaging package
- Image preview generation
- Email verification, password reset and 2FA using TOTPs
- Observability using Loki, Prometheus, and Grafana
- Reverse proxy using Traefik
- PostgreSQL and Redis for data storage
- Terraform IaC for Azure resources, including Azure Container Apps
- Docker Compose for container management
- CI/CD using GitHub Actions
- Clone the repository
- Configure the environment variables in the
.envfile; see the.env.examplefile for reference - Make sure Docker is installed
- Run
docker-compose up --buildto start the service - The API can now be accessed at
localhost:80
The API is documented here using Postman.
This project is licensed under the MIT License - see LICENSE.
- This project is primarily a learning exercise and is not intended for production use, though I did my best to make it at least somewhat viable for small-scale deployment.
- The project is my boot.dev Capstone Project and my solution to the roadmap.sh project.