Progress Bar

A modern, lightweight, and cost-efficient VPS-deployed progress bar service that automatically calculates and posts the current year progress (e.g. [▓▓▓▓▓▓▓▓░░░░░░░] 53%) to Mastodon.

Architecture

Local Development & Testing

You can run and test the service fully on your local machine using Docker / OrbStack.

1. Run Unit Tests

To verify the progress math and state storage logic, run:

cd backend
dart test

2. Build the Local Docker Container

To compile the native Dart CLI and assemble the Nginx + Cron production container locally:

make build-local

3. Run and Verify Locally

You can start the local container in the background (which runs the static web server on port 8080):

export MASTODON_ACCESS_TOKEN="your_access_token_here"
make run-local

Once running:

To stop the running container:

make stop-local

Frontend Build

To rebuild the legacy frontend/ using old Dart 2.0 SDK:

./build_to_server.sh

Deployment

The main application is deployed using Kamal 2 to the lokaj VPS.

1. Configuration

2. Deploy

To deploy the latest changes to production:

make deploy

Google App Engine Redirector

The /gae folder contains a modern, minimal Google App Engine project using Python 3. Its sole purpose is to redirect all legacy traffic from Google App Engine to the new VPS URL (https://progress.filiph.net).

Deploying the Redirector

To deploy updates to the GAE redirector:

cd gae
gcloud app deploy