- Microservice architecture
- gRPC between services
- Fast serialization with MessagePack
- Access and refresh JWT tokens
- Active sessions control
- Fast file upload/downolad
- Emails with new login info
- Main DB - PostgreSQL
- DB for cache - Redis
- S3 for files - MinIO
- Message broker between Gateway and Mail service - Apache Kafka
- Tests
- Logs processing - Graylog, Elasticsearch, MongoDB
- Metrics processing - Prometheus, Grafana
Note
API located at /api
Docs located at /api/docs
, but Swagger does not support MessagePack, so use another tool to send requests with this content type
- Docker
-
Copy
.env
file fromexamples/dev/
todev/
folder and fill it in -
(For dev/prod) Copy
redis.conf
file fromexamples/
todev/
orprod/
folder and fill it in -
(For prod) Copy
.env
file fromexamples/prod/
toprod/
folder and fill it in -
(For prod) Copy
nginx.conf
file fromexamples/prod/
toprod/
folder and fill it in -
(For prod) Copy
docker-compose.cert.yml
file fromexamples/prod/
toprod/
folder and fill it in
-
Run the dev ver.
docker compose -f docker-compose.dev.yml up --build -d
-
Run the prod ver. and get a SSL certificate
-
Create the directory on the server
mkdir -p /cloud_storage/
-
Use SCP to copy the prod files to the server
scp -r ./prod/* <username>@<host>:/cloud_storage/
-
Run the deploy script
bash deploy.sh
-
docker compose -f docker-compose.<dev/prod>.yml stop