Building CoinPulse: A Containerized Crypto Dashboard with Flask, PostgreSQL and Docker Compose
One command, three containers, and data that survives restarts.
Why I built it
For my Cloud Services course I wanted a project that needed more than one container and talked to something outside my own code. A crypto dashboard fit well: it needs live data from an external API, a database to keep user data, and a web interface. CoinPulse shows the top five cryptocurrencies by market cap in Indonesian Rupiah, with a personal watchlist saved in PostgreSQL. It is near-real-time (refreshed about every 60 seconds), not trading data. It also points in the direction I want for my career: cloud and DevOps engineering.
Architecture
The browser only talks to Flask on port 5000. Flask calls the CoinGecko API and talks to PostgreSQL over a user-defined network, using the service name db. The API key stays on the server and never reaches the browser's JavaScript.…