← Back to the blog

A year at DomikSmart: what rewired my view of SaaS

From March 2025 to March 2026 I ran a CRM for short-term rentals — 50 properties, calendars, messengers, a public site. What I'm taking from that year into GChat and every product after it.

  • domiksmart
  • saas
  • devops

March 2025. I signed on to “work for a few months” at OOO DS — to build a CRM for managing short-term rental apartments. March 2026. I wrapped the contract, and in those thirteen months the product went from a single Google Sheet to a full SaaS platform serving 50+ properties.

I didn’t leave because I was burned out. I left because the job was done. But that year at DomikSmart changed how I look at any SaaS now. I’m writing this as notes to myself — and for anyone who can use them.

Frontend and backend are one product, not two projects

Before DomikSmart I treated backend and frontend as two different creatures with a shared API. On Next.js SSR with server actions that border literally disappears. A single request can start rendering on the server, pull data in parallel from three sources, ship ready HTML to the client, and hydrate only what’s actually interactive.

This forced me to rethink what a “page” is. A page is a contract for delivering data to a user. Not a React component, not a route, not an endpoint. If I can’t describe a page on a napkin as “this user gets this data in this time,” I don’t understand what I’m doing yet.

Deploys are a product feature

In the first weeks a deploy took two hours: build, push, rsync, manual service reload, check, roll back if something broke. A month later I put Coolify on a self-managed VPS, wired up GitHub Actions → Docker → Coolify, and the cycle collapsed to five minutes.

Sounds trivial, but here’s the point: deploys are not technical chores, they’re a product feature. If I ship in five minutes instead of two hours, I’m twenty-four times more willing to push a small fix. The feedback loop with real users compresses by twenty-fourfold. That’s a different quality of decisions, not just a different speed.

The lesson carried over into GChat as a built-in default: CI → Docker → Coolify from day one, a green “deploy” button right away. No “we’ll set that up later.”

+40% organic traffic, not magic — discipline

The marketing side of DomikSmart — the public site for finding apartments — grew organic traffic by 40% in a year. No magical SEO, no investment in blogs. Three things:

  1. Server rendering with real meta tags. Not “SSR in theory”, but Next.js with full hydration, proper OG images, structured data for every property card.
  2. First-byte speed. Edge cache + Redis for static assets + smart invalidations on price updates. TTFB < 120 ms from Moscow nodes.
  3. Zero popups, no cookie banners, no “subscribe”, no third-party ad scripts. The user opens the page and sees the apartment.

Quick takeaway: good SEO is just being a good website.

Where I screwed up and paid dearly

To keep this from sounding like “everything went perfectly”: I lost three weeks on a Prisma migration with nested transactions on PostgreSQL. I thought — “let’s upgrade carefully.” I got — hidden race conditions on production bookings when two managers moved the same calendar simultaneously.

Lesson: dependency upgrades are production incidents in waiting. Especially anything touching transactional logic. On GChat I already keep a DEPENDENCIES.md with an explicit policy: every crypto-library bump is its own PR, with its own load test, with its own week of stabilization.

What I’m taking with me

  • One stack, one infrastructure, one deploy language. In my case — Docker + Coolify + Traefik. Everything else is proprietary gloss that’s easy to avoid.
  • SSR as default, client-side as exception. As long as a page can be server-rendered — it is.
  • Dependency discipline. Every upgrade is a deliberate decision, not npm update.
  • Deploy time as a UX metric. Five minutes — good. Twenty seconds — better. One hour — that’s tech debt.

A year solo on a product isn’t about “surviving.” It’s about becoming that person — the one who knows where the floorboards creak and who installed them. It’s a rare state. And it’s worth the year.