Damjan Tepic

Case Study · SaaS Product

FakturaOne

An invoicing and business management platform for freelancers and small businesses in the Balkans — documents, clients, PDFs, and email delivery in one place.

Role
Design & Development
Year
2025–2026
Type
SaaS Product
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Supabase
  • @react-pdf/renderer
  • Resend
  • Vercel
FakturaOne invoicing dashboard

Problem

Invoicing tools are either too heavy or too foreign

Small businesses and freelancers in the region either fight with spreadsheets and Word templates, or pay for enterprise ERP systems built for other markets. Existing tools rarely speak the local language — literally and figuratively: local document types, bank account formats, and business customs are an afterthought.

Solution

One focused app for the whole billing flow

FakturaOne covers the full document lifecycle: invoices, quotes (predračuni), and delivery notes (otpremnice) with automatic numbering per type, a client database, per-company settings with logos and bank accounts, real PDF export, and sending documents by email — all localized for how businesses here actually work.

Key Features

Built for reliability, not just aesthetics

  • Three document types, one flow

    Invoices, quotes, and delivery notes share a single creation flow with type-specific numbering prefixes (INV, PRO, OTP), due-date labels, totals, and default notes — so switching document type never means relearning the UI.

  • Multi-company support

    One account can manage multiple companies, each with its own logo, bank accounts, document numbering, and settings. The active company context follows you across the dashboard.

  • Real PDF generation

    Documents render server-side with @react-pdf/renderer into properly named files — not a window.print() hack. The same document model drives the on-screen preview and the PDF, so they never drift apart.

  • Email delivery with attachments

    Documents go straight from the app to the client's inbox via Resend, with the PDF attached and a localized message template — no downloading and re-attaching in a mail client.

Flow

From link to local file

  1. Set up a company

    Add company details, logo, and bank accounts once — they appear on every document automatically.

  2. Create a document

    Pick invoice, quote, or delivery note. Client data auto-fills from the client base; numbering is automatic.

  3. Preview & export

    Review the document exactly as the client will see it, then download a named PDF.

  4. Send & track

    Email the document with one click and track statuses — draft, sent, paid, overdue.

Architecture

Next.js App Router on a Supabase backbone

The app is a Next.js 16 application with Supabase handling auth, Postgres storage, and row-level security so each user only ever sees their own companies and documents. Server actions drive document mutations; a shared document model feeds both the live preview and the server-side PDF renderer. Emails are sent through Resend with generated PDFs attached. Typed database definitions keep the Supabase schema and the TypeScript layer in sync.

Learnings

Localization is a feature, not a translation

The hardest problems weren't technical — they were about matching how local businesses actually issue documents: grammatical cases in UI copy (kreiraj fakturu vs. nova faktura), document-type-specific labels, and defaults that make sense for the region. Building the document model around those differences from day one made features like PDF export and email templates dramatically simpler later.

Available for Select Collaborations

Start a Project

Or email directly: damjan.tepic@icloud.com