Skip to content
/ FIG. 01 - HEROLive · 2026
Client Portal hero
Next.jsTypeScriptSupabaseFull-stackSaaSAI

Client Portal.

The client portal is the operations hub for my freelance software practice. Each client gets a private, secure sign-in and a dashboard of their work: live project status, invoices they can view and pay, contracts they can read and sign online, shared files, and a direct message thread with me. On my side, the same app runs the business end to end. I raise invoices that follow Greek e-invoicing rules, send outreach proposals drafted with AI help and localized in English and Greek, generate contracts from a fixed legal template with built-in e-signatures and PDF export, track whether each email was delivered and opened, run recurring retainers, and keep an audit trail with one-click data export. Everything updates in real time, so a client sees a new invoice or file the moment I add it. The whole thing is bilingual and built so each client only ever sees their own data.

/ META/ 02
Client
Self-initiated - georgemou.gr
Status
Live · 2026
Stack
Next.jsTypeScriptSupabaseFull-stackSaaSAI
/ THE CHALLENGE

Running a solo software practice means juggling proposals, contracts, invoices, files, and updates across email threads and scattered tools. Clients had no single place to see where their project stood or what they owed. I wanted one system that handled the whole engagement, from first proposal to final invoice, and gave clients a clear window into their own work.

/ WHAT I BUILT

A full-stack Next.js and TypeScript application on a typed Postgres backend. The client side is a clean dashboard: project timelines, invoices with online payment, online contract signing, file sharing, and messaging. The admin side runs the business: AI-assisted bilingual proposals, a fixed-template contract generator with e-signatures and PDF output, invoicing that follows Greek e-invoicing requirements, recurring retainers, email delivery and open tracking, notifications, an audit log, and full data export. Two-factor authentication protects the admin, and every client only ever sees their own data. Real-time updates keep both sides in sync without a refresh.

/ OUTCOME

One system replaced a stack of disconnected tools. Every engagement, from the first proposal to the signed contract to the paid invoice, now lives in one place, and clients get a live view of their own projects. Bilingual throughout and in production, used day to day to run the practice.

/ KEY DECISIONS
  • One app for both sides

    Rather than separate client and admin tools, both run on the same typed backend. A proposal can turn into a project, an invoice, and a contract without leaving the system or re-entering data.

  • Fixed contract template over free-form AI

    Contracts are generated from a fixed, reviewed legal template. AI only gathers the details that fill it in, so every agreement comes out consistent and correct rather than rewritten from scratch each time.

  • Real-time by default

    Client dashboards and email statuses update live over a realtime channel, so a new invoice, file, or delivery receipt shows up immediately without anyone reloading the page.

/ CTAEND

Want something like this?

I'm available for custom backend, web, and the weird integration work nobody else wants to touch.