SaaS de faturação para pequenas e médias empresas — clientes, produtos e faturas com PDF, num dashboard moderno.
Sistema de faturação pensado para PMEs portuguesas: gerir clientes e produtos, emitir faturas em PDF e acompanhar a receita num dashboard com métricas. Projeto de portfolio full-stack com foco em segurança por desenho (Row Level Security — cada utilizador só acede aos próprios dados, garantido pela base de dados).
- Setup Next.js 16 + TypeScript + Tailwind 4
- Clientes Supabase (browser + server) com padrão SSR oficial
- Schema da base de dados com RLS (
supabase/schema.sql) - Autenticação (email + password) com rotas protegidas via proxy
- CRUD de clientes e produtos (validação server-side)
- Emissão de faturas com linhas dinâmicas, IVA e numeração sequencial
- Máquina de estados da fatura (rascunho → emitida → paga/anulada)
- Fatura imprimível / exportável em PDF (impressão do browser)
- Dashboard com métricas (receita do mês, a receber, faturas recentes)
- Testes (Vitest + Playwright) e CI
- Deploy na Vercel
- Download direto de PDF
| Camada | Tecnologia |
|---|---|
| Framework | Next.js 16 (App Router) + React 19 |
| Linguagem | TypeScript 5 |
| Estilos | Tailwind CSS 4 |
| Backend | Supabase (PostgreSQL, Auth, RLS) |
| Deploy | Vercel |
git clone https://github.com/losmanim/faturaflow.git
cd faturaflow
npm install
# 1. Criar projeto gratuito em https://supabase.com
# 2. SQL Editor → executar supabase/schema.sql
# 3. Copiar credenciais:
cp .env.local.example .env.local # preencher URL + anon key
npm run dev # http://localhost:3000- Row Level Security em todas as tabelas — isolamento por utilizador garantido pelo PostgreSQL
- Anon key no frontend é segura por desenho (RLS);
service_rolenunca é exposta .env.localfora do git (.gitignore)- Sessão via cookies httpOnly (padrão
@supabase/ssr)
faturaflow/
├── src/
│ ├── app/ # Rotas (App Router)
│ └── lib/supabase/ # client.ts (browser) + server.ts (server)
├── supabase/
│ └── schema.sql # Tabelas + RLS (executar no SQL Editor)
└── .env.local.example # Template de variáveis de ambiente
Luiz Antonio — Web Developer · Porto, Portugal
📧 los486@hotmail.com · 🌐 Portfolio
MIT
Invoicing SaaS for small and medium businesses — clients, products and PDF invoices in a modern dashboard.
Full-stack portfolio project built with Next.js 16, TypeScript, Tailwind 4 and Supabase, with a security-first design: Row Level Security ensures each user can only access their own data at the database level.
npm install
cp .env.local.example .env.local # fill in your Supabase project URL + anon key
# Run supabase/schema.sql in the Supabase SQL Editor
npm run devLuiz Antonio — Web Developer, Porto, Portugal · Portfolio
MIT