Build and Run Guide
An example of landscape covering backend, website and mobile apps for hobby projects and startups. Tooling, processes, best practices.
This list covers the landscape more-or-less end-to-end but bear in mind it is biased to certain technologies and choices. Consider it a simple guide shared to build your own solution of it. Choices were made towards open source technologies where self hosting is easy or commercial appliances with free tier. This is bootstrapping friendly option which solo developers may welcome.
Language stack
- Backend - Java Spring
- Mobile Apps - Flutter or React Native
- Websites - NextJS, Typescript, TailwindCSS, DaisyUI
Core infrastructure for budget optimized prototyping (on premise)
- Code Repository - GitHub
- CI/CD - GitHub Actions
- VPC - Hetzner ARM Ubuntu Server
- Containers - Docker
- Storage - AWS S3 (free tier)
- Domains - OVH
- Database - MariaDB
- Analytics - Plausible CE
- Monitoring - Prometheus and Grafana
- Web Server - Caddy
- Security - UFW, Fail2Ban
- Production Process Manager - PM2
Serverless extensions
- On premise - OpenFaaS
- Cloud - AWS Lambda, DynamoDB
- CDN - Cloudflare
Testing components
- Unit Tests
- Integration Tests
- Contract Tests - Pact
- BDD/ATDD - Cucumber
- Web End-2-End - Playwright
- Mobile - Appium
- Devices - BrowserStack
- StaticAnalysis - SonarQube
- Security - Snyk
- A/B Testing - feature flags
Best Practices
- Circuit Breaker
- Feature Flags with Kill Switch
- Code Review
- Definition of Ready
- Definition of Done
- Non-functional Requirements
Future Evolution
- Technologies to include: Python and Go
- Scope to cover AI and ML
- Tooling to include: Matomo and Pentaho