I built my project 4 times, that's what I learned

Published: (March 30, 2026 at 08:28 AM EDT)
3 min read
Source: Dev.to

Source: Dev.to

Requirements

  • A landing page that could explain briefly what the Association was about
  • A web app to register people and to sign their presence at events

Initial Stack (2022)

  • React 18
  • PHP 8.1
  • MySQL

It worked well and felt snappy. The codebase was simple and naive.

Switching to a More Powerful Stack

Next.js

Wanted raw SSR power, server‑side logic from the frontend layer, and SEO optimization.

Go

Needed API scalability for a future mobile app and thousands of users.

PostgreSQL

Started paying for a managed PostgreSQL service, assuming it was needed over MySQL.

The first version was released in a month.

Price

The first problem was cost. Using render.com, each service cost $7 / month. With a frontend, backend, and database the total was around $21 / month, which was heavy for a small association.

Scalability

A major mistake was confusing scalability with complexity.
The system was full of abstractions and layers that made it organized but slow to change. Such a setup suits a large corporation with many developers, but for a small project it became a burden whenever a feature needed tweaking.

Version 3

After realizing we needed something cheaper, we switched to a different stack while keeping SEO benefits.

  • Next.js – for SEO
  • Directus – back‑office
  • PostgreSQL

Next.js connected directly to Directus APIs, which felt great locally. Deployment was on fly.io for its low cost and automatic machine scaling.

Drawbacks: Directus took 5–10 seconds to start, the frontend another 2–3 seconds, resulting in 7–13 seconds to load the landing page.
Benefit: No monthly fees.

Version 4

We later realized many Directus‑editable sections were unnecessary. The refactor reduced editable parts to three sections.

  • Next.js (full static site)
  • PostgreSQL with Prisma as ORM
  • NextAuth for a quick login system
  • Simple dashboard for the three editable sections

The result: a one‑week website after almost four years of work.

What I Have Learned

  • Complex solutions are great conversation pieces, not necessarily good for production code.
  • Cost and infrastructure decisions should be made before drawing UML diagrams.
  • The project taught me to view the product as an integral part of the overall system, aligning with the association’s needs.
  • Scalability is relative; it depends on your actual requirements.
  • “The less you think about the future of the product, the better.” Build simple things and leave room for growth—less is more.
0 views
Back to Blog

Related posts

Read more »

Understanding Next.js Cache (Part 5)

If you have built an application using the Next.js App Router, there is a 100 % chance you’ve come across the issue of updating the database but the page still...