.direnv/bin | ||
backend | ||
frontend | ||
shared_models | ||
.gitignore | ||
.ignore | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
README.md |
fartstack
Flutter and Dart full stack template, Lovingly called FartStack
Optimising for iteration speed, correctness, and deployability.
Because building a product is like a fart: You can't be sure its not crap until the follow-through.
HowTo
Dev is done all in dart, with the flutter framework as a frontend. The backend uses dart_frog, a dart backend framework with a focus on developer experience. This whole stack revolves around my Dart expertise, so its not about being blazingly fast, but the quickest stack I can build in with a statically-typed language.
Installing
If you have the nix package manager and direnv setup, its as easy as running direnv allow
, bingo bango.
If not, well, you need to setup flutter
, dart
(should get installed with flutter), and dart_frog
Running
This codebase makes use of RPS, just to standardize calling various tools, like Make, but for dart.
- Frontend is started with
cd frontend
andflutter run
(not included in rps because there are lots of cli flags I change often with flutter run) - Backend is started with
cd backend
andrps dev
ordart_frog dev
- The
build_runners
(codegen) for each subproject can all be runcd backend
andrps watch
for development orrps build
for a one off codegen- If you dont want to bother installing rps, you can run the script directly:
dart backend/scripts/run_build_runner.dart
And if you dont want to run all three watchers, you can just run an individual one with
dart run build_runner watch # or other args
Testing
Backend
End to end tests can be run with cd backend
and rps e2e
.
All end to end tests are located in the backend/test_e2e/tests
folder.
There is a helper script that compiles and launches the backend and runs some end to end tests through it.
Frontend
:|
Frontend ./frontend/
WIP
Backend ./backend/
Uses the great dart frog framework. Its an file-based framework, so to create a new route on /new_route/bingo
,
you would create a new file in routes/new_route/bingo.dart
that contains a function
Response onRequest(RequestContext context) {
return Response
}
Easy Peasy.
Go to the docks for more.
In the box, fartstack has authentication with JWT tokens setup