A minimal, full‑stack Todo app demonstrating Serverpod (Dart) backend + Flutter client with a generated client package.
- REST + WebSocket API with Serverpod
- Flutter client (mobile & web)
- PostgreSQL + Redis support
- Dockerfile and guides for Railway / Heroku
- Migrations and generated protocol client
- todo_server/ — Serverpod server
- bin/main.dart — server entrypoint
- Dockerfile — for containerized deploys
- migrations/ — DB migrations
- lib/src/generated/ — generated protocol & endpoints
- todo_flutter/ — Flutter client
- lib/main.dart — app entrypoint
- todo_client/ — generated client package
Prereqs: Docker, Flutter, Dart SDK (for server).
-
Clone:
git clone https://github.com/techwithsam/todo_serverpod cd todo -
Start local DB & Redis (example using docker-compose):
cd todo_server && docker compose up -d
-
Run the server:
# from todo_server/ dart pub get dart run bin/main.dart # (or run with migrations) dart run bin/main.dart --apply-migrations
-
Run the Flutter app:
cd ../todo_flutter flutter pub get flutter run -
Access localhp:
curl http://localhost:8080/
-
Regenerate client after changing server models/endpoints:
# from todo_server/ serverpod generate -
Set SERVER_URL in Flutter (web / build):
flutter build web --dart-define=SERVER_URL=https://your-app.example
See DEPLOYMENT.md for step‑by‑step Railway and Heroku instructions, Dockerfile, env vars, and common fixes.
Quick notes:
- Use production config:
config/production.yaml - Apply migrations on first deploy
- Ensure port 8080 exposed and publicHost set to your domain
- Fork, branch, and open PRs
- Add tests under respective
test/directories - Keep UI screenshots in
todo_flutter/assets/screenshots/
MIT — see LICENSE file.


