Frela
Accounting and invoicing for freelancers: hours, invoices and expenses, with the logic in the API.
- Type
- Web
- Year
- Categories

About the project
Frela is an accounting and invoicing app for freelancers in Spain, for the web and Android: clients, projects, hours, invoices and deductible expenses in one place.
Goal. To let a freelancer track their hours, invoice without mistakes and know which expenses they can deduct, without spreadsheets. So that the web and Android can never give different results, it follows one clear rule: the API decides and the app draws. All the logic, security and calculations live in the API; the app only shows what it receives.

What it does.
- Tax profile and optional brands, each with its own identity on the invoices.
- Clients, people or companies, with their contacts.
- Projects billed by the hour or at a fixed price, with encrypted credentials and linked repositories.
- Time tracking with a live timer, manual entries and a monthly calendar.
- Invoices from draft to issued and paid, with configurable numbering and a branded PDF copied to Google Drive.
- Deductible expenses with their categories, their VAT and deductibility rules, and their receipts.
- Summary of what is billable, what has been collected and the year's hours, in Spanish and English with light and dark themes.
Security and privacy. Argon2id passwords, a short-lived access token and a refresh token that rotates and is stored hashed. Sign-in and sign-up are rate-limited and answer the same whether the account exists or not. Every request goes through validation that drops unexpected fields, with Helmet and a closed list of origins for CORS. GitHub and Drive tokens and project credentials are encrypted with AES-256-GCM, uploaded SVGs are sanitised, and every user can export their data or delete their account, as the GDPR requires.
Architecture and quality. An API in NestJS with Prisma and PostgreSQL: 16 models, 43 migrations and about 140 routes documented with OpenAPI. A Flutter app for the web and Android with Riverpod, Dio and go_router. 36 test files in the API and 27 in the app, deployed with Docker and GitHub Actions.
Status. Deployed; notifications are still to come.




