Hi, I'm DimitrisBuilding in public

I'm a Indie maker

Dimitris Alexiou

Indie maker shipping focused SaaS—product, billing, and polish in one surface.

Open to founders, agencies, eng hiring & collabs · not freelance tasks or cold outreach

  • Invoices

    Live in market · 3 products

  • Idea → production

    Scope

  • Next.js platform

    Default stack

Scroll

Live products

In production

3 SaaS products live today

Not mockups—real apps with billing and users. Tap a card to open the live site.

Next.jsShip end-to-endTypeScriptB2B SaaSReactAuth & billingTailwindSubscription modelsClerkEntitlements & limitsStripeWebhooks & integrationsPostgresRelational dataDrizzleType-safe SQLVercelDeploy & observabilityRadix UIAccessible UIVitestConversion-focused UXProduct designFull-stack ownershipIndie SaaSMakerMapNext.jsShip end-to-endTypeScriptB2B SaaSReactAuth & billingTailwindSubscription modelsClerkEntitlements & limitsStripeWebhooks & integrationsPostgresRelational dataDrizzleType-safe SQLVercelDeploy & observabilityRadix UIAccessible UIVitestConversion-focused UXProduct designFull-stack ownershipIndie SaaSMakerMap

Selected work

Products I ship and own

Live products and the private platform layer behind how I ship them.

Under the hood

How Invoices is wired

Production stack from the Invoices repo—a request spine through auth and data, with billing, uploads, and email when the handler needs them.

Invoices · architecture map

Open Invoices
  1. Vercel

    Edge & hosting

  2. Next.js

    Middleware & routes

  3. Clerk

    Session check

  4. Upstash

    Rate limits

  5. Drizzle

    ORM queries

  6. Neon

    Postgres

  7. Resend

    Email delivery

  8. Stripe

    Connect · billing

  9. UploadThing

    File uploads

Request path — Typical authenticated hit: Vercel serves the request → Next.js middleware and handler → Clerk session → Upstash rate limit → Drizzle reads/writes Neon.

Integrations — From the Next.js handler when the action needs it—not every request: Stripe for Connect and billing, UploadThing for uploads, Resend for transactional email.

Also in the codebase: PDFKit · React Email · Pusher · Vitest

Launch communities and directories where these products have shipped.

Connect with me on MakerMapFeatured on Product HuntFeatured on TinyShelfTinyLaunch Badge

Process

How I like to build

A rhythm I repeat across products—fast loops, full ownership, and room for craft.

  • Ship the whole surface

    Auth, billing, emails, and the landing page—one coherent product, not a pile of repos.

  • Polish where it converts

    Motion, copy, and empty states that respect attention. Details that make launch day feel calm.

  • Ship, then iterate

    Launch with a tight scope, learn from real usage, and improve what people actually pay for.

About

Builder first, founder by default

I build and ship small SaaS products end to end: product, UI, and the platform layer underneath.

Most of my work lives in Next.js—Clerk, Stripe, Postgres, and careful UX for makers who want to launch without reinventing the stack.

When I am not shipping, I am refining the private platform layer and tools that make the next launch faster.

Stack I reach for

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Radix UI
  • Clerk
  • Stripe
  • Stripe Connect
  • Postgres
  • Neon
  • Drizzle
  • Upstash Redis
  • Resend
  • OpenAI
  • Vercel
  • Vitest
  • ESLint
  • Zod
  • GitHub Actions

I pick tools that stay out of the way: managed auth and payments, a relational database I can reason about, and a framework team that can hire into.

Novelty is for the product—not the plumbing.

Let's build

Have a product idea or want to compare notes?

Open to founders with a scoped SaaS bet, agencies that need a technical partner on client work, eng teams hiring full-stack builders, and collabs with makers shipping product. Not task-based freelance, unpaid spec work, or cold vendor outreach.

Ship log

What I've been shipping

Launches, leaps, and quiet platform work—a public trail of building in the open.

  1. Launch

    Scopewise went live

    From brief to signed proposal on one shareable link—structured scopes agencies can send, track, and close.

  2. Craft

    Small updates to this portfolio site

    ⌘K palette for copy, mailtos, and theme; homepage live-products cards instead of the old “Now” list; ship log section at the bottom of the page.

  3. Ship

    Scopewise — share links & client sign-off

    Pro flow for sending scopes on a share link: clients view, comment, accept, and sign without another PDF thread.

  4. Ship

    Compliance Tracker — renew expired share links

    Shared checklist links can expire; recipients can now ask the sender to renew access instead of losing the thread and starting over.

  5. Launch

    Compliance Tracker shipped

    Personal compliance calendar for EU and UK freelancers—profile-matched obligations, official source links, deadline tracking, and email reminders tied to official government pages.

  6. Ship

    Invoices — recurring billing

    Repeat clients get invoices on a schedule—set cadence once instead of cloning the same line items every month.

  7. Launch

    Invoices hit production

    Stripe Connect invoicing and subscriptions for freelancers and small teams who want payouts and recurring revenue without enterprise accounting software.

  8. Platform

    Private SaaS starter hardened

    Auth, entitlements, Stripe, and observability in one reusable layer—the foundation every new product launches from.