Frameworks
Standardise on the frameworks used to encourage collaboration and efficiency.
Cross-platform
- Qt — C++ / Python (PyQt / PySide)
- React Native — JavaScript / TypeScript
- Flutter — Dart
- Quasar — JavaScript, Vue-based
- BeeWare — Python
- Kivy — Python
Desktop
- Prefer Qt for native apps.
- Tauri — JavaScript / Rust (Rust backend + JS frontend; alternative to Electron).
Mobile
If you’re not going fully native, use a cross-platform framework.
Web
- Preferred: Django (Python) — batteries included; pair with Django REST Framework for APIs.
- Flask (Python): lightweight microservice or gateway.
- FastAPI (Python): async-first REST APIs; use when ASGI/async is needed.
- Express (JavaScript): server-side Node.js.
- Next.js (JavaScript): server-side React.
Docs
Use Material for MkDocs for project documentation.
Jamstack
Default to Hugo.
GIS
- Frontend: MapLibre GL JS, OpenLayers, Leaflet, CesiumJS, Turf.js
- Backend: GeoDjango, pg_featureserv, pg_tileserv
UI
Consistent component libraries improve quality and speed.
CSS frameworks
- Bootstrap
- Bulma
- Tailwind CSS
Component libraries
- React (web): Chakra UI or Material UI
Choosing outside these defaults is possible, but expect lower momentum and fewer collaborators. Document rationale in the project README.