Work
Projects
Each with its own page, in the same order: what the problem was, what was decided and why, how it was built and what came out of it.
A commercial API that crawls property portals, normalises them into a single schema and publishes the result as a data product.
- Portals integrated
- 7
- Verified listings
- ~900
- Monthly extraction cost
- €400 → €20–35
- Laravel 13
- PHP 8.5
- Next.js 16
- TypeScript
- Playwright
A CRM with a document portal serving several companies from one installation, built on the aggregator’s data.
- Laravel 13
- PHP 8.5
- Next.js 16
- React 19
- TypeScript
A compliance and coordination platform between suppliers and property managers. It doubled the company’s revenue and is still in production.
- Business impact
- Revenue doubled
- In production since
- 2021
- Laravel 8
- PHP
- Bootstrap
- FullCalendar
- DataTables
Multi-club SaaS for youth basketball: teams, call-ups, attendance, fees, treasury and public sign-ups.
- Dashboard sections
- 20
- Entities in the model
- 13
- Laravel 12
- Next.js 16
- React 19
- TypeScript
- Tailwind
A Playwright suite that audits every route before a deployment and fails it when something slips. This portfolio included.
- Checks
- 177
- Routes audited
- 14
- JavaScript budget
- 200 kB
- Playwright
- axe-core
- Lighthouse
- TypeScript
- Node 24
A private package with the primitives and tokens the portfolio, Rebote and future CRMs all consume, so they stop drifting apart.
- Primitives
- 29
- Design tokens
- 108
- Consuming applications
- 2
- TypeScript
- React 19
- Tailwind 4
- Radix
- pnpm workspaces
A central invoicing service: issues, calculates, renders the PDF and keeps a tamper-evident audit trail with a Verifactu-style hash chain.
- Laravel 13
- PHP 8.5
- PostgreSQL
- Redis
- Gotenberg
Exam preparation for the Catalan police force. All ten phases are done: design, back end, catalogue, spaced repetition, study sessions, mock exams, admin with editorial review, AI generation and observability. With an interface to study, sit exams and review content. Deployed, and without a single question yet.
- Phases completed
- 10 of 10
- Decision records
- 7
- Tests
- 285
- Laravel 13
- PHP 8.5
- PostgreSQL 17
- Redis 7
- Next.js 16