About this Project
Building better software for municipal services
This project embodies a philosophy of simplicity and clarity in software development. Rather than defaulting to complex architectures, we follow the principle that good code has two requirements:
- It solves the problem
- It doesn't suck to read
We believe that the most sophisticated design choice you can make is to choose simplicity. Our approach focuses on building things that last by making them easy to understand, easy to change, and easy to deploy.
This project is inspired by SIGEM (Sistema de Gestión Municipal), a comprehensive municipal management platform originally developed for the city of San Luis, Argentina. The original system included:
- Citizen portal for permits, payments, and public services
- Administrative backend for city employees
- Financial modules for billing and payment processing
- Document management for permits and records
- Reporting dashboards for city management
Our goal isn't to recreate SIGEM exactly, but to rebuild similar functionality with modern tooling while avoiding the complexity of the original implementation.
High-Level Game Plan
- Monolith-first approach with one repo and deploy target
- Vertical slices instead of layered architecture
- Single relational database as source of truth
- Frontend & backend sharing TypeScript
- Optimizing for the realistic 80% use case
Technology Choices
- React for the UI framework (popular and familiar)
- Next.js for the full-stack solution
- TypeScript for type safety
- shadcn/ui for accessible components
- Simple architecture over complex systems
This project is being developed as a proof of concept alongside the "Large Software Projects" blog series. The series shares insights from years of experience building software and explores better approaches to tackle complexity in large systems.
This is not a finished product but a demonstration of concepts and tools that could be applied to similar projects. The goal is to explore how modern tools and simple architectures can deliver the same or better functionality than traditional complex implementations.
Building a large software project doesn't require a large team. Inspired by successful projects like:
Telegram
~30 employees, hundreds of millions of users
Stardew Valley
1 person, 20+ million copies sold
Lichess
Mostly 1 person, #1 chess platform
Small, focused teams can build incredible things when they're not spending half their time in coordination meetings. Sometimes the answer to complex problems is a simpler solution—this proof of concept explores that approach.
This project explores the idea that large software doesn't have to mean complicated software. By choosing simplicity, focusing on real-world problems, and using proven technologies, we can potentially build maintainable, scalable systems that are a joy to work with instead of a constant source of frustration.
This is an open source project. You can find the source code and contribute on GitHub: https://github.com/franBec/tas/