The Problem
A mid-sized company came to us with a challenge. They were managing their bids and proposals with a large spreadsheet that had become difficult to control. At first, it worked well enough, but as the business grew, the spreadsheet turned into a bottleneck:
- Multiple people could not work on it at the same time without creating conflicts and version issues
- Reporting and forecasting required manual pivot tables and filters, which was slow and error-prone
- As the rows piled up, performance lagged and historical data became messy
- No validation rules meant inconsistent data entry, which broke accuracy in reports
- Reminders, notifications, and follow-ups all had to be done manually, which meant deadlines slipped through the cracks
The company needed more than just a better spreadsheet. They needed a system that could handle multi-user collaboration, deliver accurate reports, scale as they grew, and automate routine processes.
The Rules
When we take on a project like this, we follow a few guiding principles:
- Technology agnostic – Choose tools that solve the specific problem, not force-fit a preferred stack.
- Industry-standard and open source – Use widely supported, non-proprietary tools so the client is never locked in.
- Best practices – Build solutions that are secure, efficient, collaborative, and durable enough to evolve with the business.
- Keep it simple for users – Adoption depends on making the tool intuitive, not more complicated than the spreadsheet it replaces.
- MVP first – Deliver a working solution in months, not years. Start with the essentials, then add enhancements once the foundation is proven.
The Solution: The Tech Stack We Chose
With those rules in mind, we are building an application tailored to this company’s needs. Here is the stack we selected and how it addresses their challenges.
Frontend Experience
- Next.js, shadcn/ui, TailwindCSS, React Table, React Hook Form
- How it addresses the problem: Employees needed a simple, modern interface for working with large datasets. This combination delivers a fast, intuitive UI with clean tables and smooth form validation, similar to the apps they already know.
Data Integrity and Reliability
- Postgres, Prisma, Zod, Zustand, React Query
- How it addresses the problem: Spreadsheets made it hard to trust the data. This setup ensures accuracy and consistency, prevents conflicts when multiple users work at once, and supports growth without the risk of errors.
Real-Time Collaboration
- Socket.io, React Query
- How it addresses the problem: Teams needed to collaborate without stepping on each other’s work. This stack supports true real-time updates, so multiple people can edit and view data simultaneously without confusion.
Automation and Efficiency
- Express.js, REST API, BullMQ, AWS SES, S3
- How it addresses the problem: Manual reporting and file management were slowing the team down. Automation handles tasks like importing and exporting data, sending notifications, and managing documents, freeing employees to focus on higher-value work.
Deployment and Monitoring
- Vercel, Railway, GitHub Actions, Sentry
- How it addresses the problem: The company needs reliability and fast iteration. Modern hosting and continuous deployment will ensure updates are quick, performance is stable, and issues are caught before they become bigger problems.
Conclusion
This project is just getting underway, but already the benefits of a thoughtful approach are clear. By setting rules that emphasize choosing the right technology, keeping it simple, prioritizing data integrity, supporting collaboration, and focusing on MVP delivery, we are building a solution that will replace inefficiencies with a reliable, modern system. The takeaway is not that every project requires this exact stack, but that every project deserves a solution designed around the real business problems at hand.