Skip to content
This repository was archived by the owner on Oct 10, 2026. It is now read-only.
ralvarezdevPublic archive

Latest commit

 

History

52 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uru-mobiles-imdb-api

Main Docker Compose deployment for the IMDB App, built for the Mobile Development college course. It wires together the auth, user and movies microservices (consumed by uru-mobiles-imdb-app), an internal mailer worker, a public Nginx edge, and a full observability stack, behind a Cloudflare Tunnel.

Architecture

Each application service is its own repository, pulled in as a git submodule: auth (connect-auth, JWT Ed25519 + 2FA), user (connect-user), movies (connect-movies, backed by the TMDB API), internal-mailer (connect-internal-mailer, RabbitMQ consumer for transactional email), api.ralvarez.app (Nginx edge), plus sql-auth/sql-user/sql-movies migration files.

Infrastructure declared directly in docker-compose.yml: PostgreSQL (per-service databases/users), Redis (token storage with per-service ACLs), RabbitMQ (mail exchange/queues), and Grafana + Prometheus + Loki + Promtail + Node Exporter + cAdvisor (Grafana public, the rest on the internal monitoring network).

Services

Container Port Notes
api-ralvarez-app 9000 Public Nginx edge
auth 9001 gRPC (8080) + HTTP
user 9002 depends on auth
movies 9003 depends on auth, calls TMDB
worker-internal-mailer — RabbitMQ consumer, no inbound port
grafana 3000 public dashboard
postgres, redis, rabbitmq, prometheus, node-exporter, cadvisor, loki, promtail internal only

Configuration

Copy .env.example to .env. Groups: general mode flags and DOMAIN; Postgres superuser + per-service POSTGRES_{AUTH,USER,MOVIES}_DB_*; Redis default password + per-service users; RabbitMQ users and mail queue names; JWT token durations; internal mailer (MailerSend/Resend keys, INTERNAL_MAILER_MAILER); auth settings (bootstrap admin, 2FA, password policy); MOVIES_TMDB_API_KEY; Grafana admin credentials.

A GITHUB_TOKEN build secret (file ./.github_token) is required to build the private submodule images.

Running

  1. git submodule update --init --recursive (or update_submodules.sh).
  2. Generate the JWT key pair: ./generate_keys.sh.
  3. Prepare SQL init files: ./prepare.sh.
  4. Create .env from .env.example and fill in every variable.
  5. docker compose up --build.

Cloudflare Tunnel ingress is configured via cloudflared/config.yml.example — copy it, fill in your tunnel ID/credentials, and never commit the real file.

Related repositories

License

GNU General Public License v3.0 (see LICENSE).

Releases

Packages

Used by

Contributors

Languages