make setup
cp local.env .env
make doctor
# terminal 1 — Go API (comics + auth + scrape)
make go-run
# terminal 2 — Vite frontend
make front-dev
# before pushing
make checkRun make or make help for the full grouped command list. Per-target detail:
make help TARGET=py-server.
The root Makefile is the canonical developer reference. Common targets:
| Area | Targets |
|---|---|
| Setup | setup, setup-venv, setup-front, setup-go, doctor |
| Frontend | front-dev, front-dev-https, front-build, front-test, front-deploy |
| Python | py-server, py-scrape, py-daemon, py-daemon-stop |
| Go | go-run, go-test, go-import-postgres |
| Database | db-backup, db-restore, db-check, db-repair-identity, db-audit-covers |
| Quality | check, check-go, check-front, contract-test, py-test |
make check runs Go test/vet/build (including HTTP contract tests), frontend test/build, and Python pytest.
Production and local development default to the Go server on port 8081. It serves
comics REST, JWT auth/profile, metrics, and native publisher scrapers. Python
Flask/scrape remain available for legacy workflows and contract-fixture generation.
make setup-venv
make setup-shell # prints activation commandImportant
For a corrupted virtual env:
make setup-venv-clean
make setup-venvmake setup # Python + Go + frontend + protobuf
make deps-py-upgrade # bump Python deps and rewrite requirements.txtmake py-scrape # one pass
make py-daemon # server + scraper loop in background (./output.log)
make py-daemon-stopmake py-test
make front-test
make go-test
make check # all release-path checksmake py-serverSet PRODUCTION=true on Render/production hosts to use gevent instead of the Flask dev server.
Set DB_ENGINE=sqlite explicitly to avoid env parsing warnings.
On startup, corrupt SQLite files are rebuilt automatically from src/db/comics.json.
cp go_server/local.env go_server/.env
make go-runThe Go server listens on https://localhost:8081 when tls/comics.crt and tls/comics.key
are present. See go_server/README.md for MongoDB, Postgres, and env details.
Import SQLite into Postgres:
make go-import-postgresgit push heroku
heroku logs --tailTriggered on pushes to main. Typical settings:
- Start command:
python ./src server - Env:
PRODUCTION=true,DB_ENGINE=sqlite,PORTfrom Render - Ensure
src/db/comics.jsonships with the deploy (SQLite recovery source)
On merge to main, CI can SSH to the host, git pull, and docker compose up -d.
See .github/workflows/ci-cd.yml.
Tip
Check the tls folder for HTTPS local development certificates.
make front-dev # http://localhost:3000
make front-dev-https # https://localhost:3000 (requires ./tls/comics.crt + .key)Open the Vite URL printed in the terminal. The page reloads on file changes.
Frontend API env (.env):
VITE_API_SERVER— preferred API base URLVITE_PY_SERVER— legacy fallback for the Python backend
make front-test
# or watch mode:
npm run test:watchmake front-build
make front-deploy && git push origin # GitHub PagesProduction build output goes to build/.