all work

nderoga

building paraguay's modern real estate platform.

// year
2025
// role
founder & engineer
// client
founder project
// stack
next.jsfastapipythontailwindpostgrespagoparci/cdarchitecture
live · nderoga.com
nderoga real-estate saas — search results with map and listing grid
// overview

nderoga is a free real estate listing platform built for the paraguayan market. property owners and agencies can publish unlimited listings, while seekers browse houses, apartments, and land across the country through a fast, modern interface.

i built it end-to-end as a solo founder — every decision from product strategy to deployment — while collaborating with a designer on the visual identity.

after one year live, the platform hosts 95 active listings and grows organically through seo without any marketing spend.

// the problem

paraguay's real estate market is large but digitally underserved. the platforms that exist tend to share the same set of issues: slow load times, dated visual design, intrusive paywalls for basic listings, and mobile experiences that feel like afterthoughts. for a country where mobile is the primary way most people access the internet, that gap is significant.

when my family went through the process of looking for a property, the friction was obvious. search felt clunky, photos were low resolution, and there was no clear way for small agencies or individual owners to publish without paying upfront. i kept thinking the same thing: this could be so much better with modern tooling.

so i decided to build it.

// goals

i set three north stars early on:

  1. free to publish.
    lower the barrier to entry so individual owners and small agencies can compete with established players.
  2. mobile-first and fast.
    optimize for the device and connection most paraguayans actually use.
  3. modern but familiar.
    feel current to anyone used to airbnb or zillow, but speak the local language — both literally and culturally.
// branding

the name nderoga comes from guaraní. the phrase nde róga means "your home." i wanted a name rooted in local identity rather than another anglicized startup name parachuted into the market. it's short, memorable, and carries cultural weight.

for the visual identity, i worked with a designer who translated the brief into a full system: logo, typography scale, color palette, and component states. managing that collaboration was its own challenge — communicating product intent clearly, giving structured feedback across iterations, defining when something was "done enough" to move forward, and adapting the design system into code without losing fidelity. translating a figma file into a living tailwind theme involves dozens of small judgment calls the designer never sees, and getting those right is part of the founder job.

one deliberate choice we landed on together: the entire ui supports light and dark themes natively. it signals modernity without saying a word.

// architecture

i went with a clean separation between frontend and backend — two services, one shared contract.

frontend · next.js 15 + tailwind v4
  • app router with react server components for fast initial loads and seo-friendly listing pages.
  • tailwind v4's new engine for design tokens and theme variables, which made the light and dark system trivial to maintain.
  • typescript end-to-end with shared types generated from the fastapi openapi schema.
  • image optimization through next.js image with a cdn-backed object storage layer for property photos.
backend · fastapi + postgresql
  • fastapi for the api layer, combining python's productivity with type hints and auto-generated openapi docs that the frontend consumes directly.
  • postgresql as the source of truth, with postgis extensions reserved for future geospatial search.
  • sqlalchemy and alembic for orm and migrations.
  • jwt-based auth with role-based access for the multi-tenant agency model (owner, editor, advertiser).
why this stack?

i considered a single next.js app with api routes, but i wanted the backend to be portable and the api reusable for a future mobile app. splitting them upfront cost a few extra days of setup but bought long-term flexibility. fastapi specifically because python lets me prototype data and search logic quickly, and the openapi auto-generation eliminates an entire category of frontend/backend type drift.

// product decisions
unlimited free publishing for organizations.

most competitors gate listing volume behind paid tiers. i made the bet that monetization should come from premium visibility (featured listings, promoted placement) rather than basic access. if a small agency can't even get on the platform, they go elsewhere — and the marketplace dies before it starts.

multi-tenant agency model from day one.

real estate in paraguay is dominated by small agencies with a handful of agents each. i built organizations with role-based permissions (owner, editor, advertiser) early — even though it added complexity — because retrofitting multi-tenancy is brutal.

search before maps.

i deliberately shipped strong filtered search (city, property type, price, operation type) before investing in interactive maps. maps are expensive to build well, and most users start with text-based filtering anyway.

// seo & organic growth

seo was a first-class concern from the first commit, not something bolted on later. the result: a google pagespeed insights score of 90 and organic growth that's carried the platform through its first year without any paid marketing.

a few things that made the difference:

  • server-rendered listing pages with full metadata, structured headings, and clean semantic html.
  • slug-based urls everywhere. every property, city, and agency gets a human-readable, seo-friendly url like /propiedad/casa-en-asuncion-3-dormitorios-… — critical for organic discovery in a market where most traffic eventually comes from google.
  • structured data and rich previews. every listing emits schema.org realestatelisting json-ld and a dynamically generated og image. sharing a listing on whatsapp — the dominant channel here — produces a rich preview, which dramatically improves click-through.
  • image pipeline. property photos go through a transcoding step on upload that produces multiple webp variants. the frontend serves the smallest viable size based on viewport and device pixel ratio.
  • internationalization-ready. even though i'm shipping in spanish only for now, all user-facing strings live in translation files. adding guaraní or portuguese later is a config change, not a refactor.
// ci/cd

i refused to ship without a real deployment pipeline, even as a solo founder. the cost upfront is small. the cost of not having it shows up the first time you break production at midnight.

  • github actions for both repos. every pr runs lint, typecheck, unit tests, and a build.
  • frontend deploys to vercel on merge to main. preview deployments on every pr for visual review.
  • backend containerized with docker, deployed to a managed container platform with automatic rollbacks. database migrations run as a separate gated step before the new image goes live.
  • environment parity. local development runs against the same postgresql version as production via docker compose, which has saved me from "works on my machine" bugs more than once.
// where it stands today

after one year live, nderoga is at 95 active listings and counting, growing entirely through organic search. no ads, no paid acquisition, no growth hacks. just a fast, well-indexed product that people find when they search.

i keep iterating on it. recent and upcoming work:

  • geospatial search with map view.
  • saved searches with email alerts.
  • a native mobile app reusing the same fastapi backend.
  • a premium tier for featured placements — the first monetization layer.
// what i learned

building nderoga reminded me that shipping is the hardest skill. picking the stack was easy. designing the schema was satisfying. the grind was the last 20% — empty states, error handling, auth edge cases, the tax compliance footer, the cookie banner. the work nobody talks about in tutorials but that separates a side project from a real product.

i also learned how much leverage modern tooling gives a single founder. tailwind v4, the next.js app router, fastapi's auto docs, github actions — together they let one person ship something that would have required a small team five years ago.

the biggest lesson is the simplest one: there's an enormous gap between recognizing a problem and building the thing that solves it. closing that gap, and then keeping it closed week after week, is the only part that counts.

// 15-min call · free, no commitment

is your saas buckling under growth?

book a 15-min call