| Reservations, group bookings, parking, housekeeping reconciliation, multi-shift cashier and monthly audit — modelled on how a front office actually runs. | Guest-data exports from Opera v5 to an online check-in platform for the daily traveller register, PMS data migration (Apaleo → Opera v5), REST APIs and reporting. | TypeScript, React / Next.js and Node.js / Express on MySQL, PostgreSQL or SQLite, shipped with Docker and Vercel. |
A multi-property Property Management System built from real front-office workflows — by someone who ran them.
|
hotelcode.stackbp.es → |
| Self-hosted productivity platform: mission → objectives → plans → tasks, GitHub sync, one isolated database per user. Also as an Electron desktop app. | Scaffolding and governance for AI-assisted projects: shared rules, reviewer / security / tester subagents, dry-run by default. |
React Express Drizzle SQLite Docker
|
Node.js Bash Claude Code opencode
|
| Local-first PDF annotation editor for Windows, Android and Linux. No server, no accounts — the original file is never modified. | Online store on a headless CMS, with SSR/ISR, cart, authentication and checkout. |
Dart Flutter Riverpod Clean Architecture
|
Next.js Strapi TypeScript
|
| Anonymised audit of a corporate website: performance, security, accessibility, SEO and a migration plan. | Offline-first weather PWA, installable on iOS and Android, with validated data and automatic updates. |
Astro Lighthouse WCAG
|
Next.js Serwist Zod
|
| Live site for a school parents' association, with a community forum secured by server-side Firebase rules. Private repository at the association's request. | Personal finance manager: bank-statement import with AI categorisation, budgets and investments. Installable PWA. |
Astro React Firebase Zod
|
Next.js TypeScript PWA
|
5 merged pull requests to midudev/spiderman-brand-new-day, the Spanish website for Spider-Man: Brand New Day: mobile layout fixes and an accessibility fix.
const howIWork = {
checks: 'every change passes formatting, type and test checks before it counts as done',
history: 'each commit says what changed and why; key decisions are written down',
ai: 'agents help me move faster; design and security decisions stay mine',
};
