New project - architectural decisions
Damian Wróblewski - October 2025

Table of contents
What's the problem?
Friend of mine asked me to create quite simple application that will allow employees of his company to sign up for assignments added by their manager based on their availability. The application is intended to be used primarily on mobile devices.
After gathering the necessary information about business logic, it is time to choose a technology stack.
Key architectural characteristics
Based on the requirements I defined key quality attributes as:
- usability
- simplicity
- self-sustainability
- extensibility
Frontend
When it comes to frontend, I decided to go with Angular because it's the framework I have the most experience with.
Mobile support
Due to simplicity, I want to initially provide mobile device support through PWA — Angular provides good support. If the project develops, better mobile support can be provided in the future through Capacitor.
This will allow to bypass the problematic process of placing applications on Google Play and the App Store.
Backend
Here again, I wanted to focus on simplicity but also ensure the extensibility/scalability.
Here’s a quick breakdown of the options I considered:
Option 1: Full backend – Angular + NestJS
✅ Pros: Total control, scalability, clean architecture.
✅ Pros: Ready for SaaS-level growth.
❌ Cons: More complexity — backend maintenance, CORS, deployments.
Enterprise-grade, but too heavy for a lightweight MVP.
Option 2: Full-stack Angular with Analog.js
✅ Pros: Unified frontend and backend, SSR and API routes built in.
❌ Cons: Still maturing, not yet production-proven.
Promising direction for Angular developers, but not fully stable yet.
Option 3: Angular + Supabase
✅ Pros: No need to write backend code — Supabase provides Postgres, REST API, and Auth.
✅ Pros: Serverless, scalable, and integrates seamlessly with Angular.
✅ Pros: Real-time updates and edge functions for backend logic.
❌ Cons: Less backend customization, though can be extended later.
In this case, the entire backend is provided by Supabase. The obvious disadvantage of this solution is potential vendor lock-in, but the Supabase database is based on Postgres, so the only potential problem would be writing auth and CRUD. An additional advantage is the fact that I have experience with Supabase working on GymCraft.
Bonus: PWA Support
Angular has great Progressive Web App support — users can install the app on their phones or desktops, use it offline, and receive push notifications.
No need for a separate mobile version.
What did I choose?
As you might guess, I chose the latter option which seems to be a perfect balance between simplicity and scalability. This stack seems let me build fast, modify fast, and scale when the time comes.
Stay in touch with me on or LinkedIn if you're interested in the world of web applications 😉
Join the discussion