🛠️ Full-stack developer from southern Spain, happiest knee-deep in data. I specialize in APIs, ETL and data migration (PHP · Python · JavaScript), with a soft spot for large-scale processing, GIS and web scraping. After hours I build things I'd actually use: Kana~boo, to learn Japanese; langstats, a Claude Code plugin that powers the language stats at the bottom of this page; spain-postal-codes, an open dataset of Spanish postal codes published on npm and Packagist; Preparados72h, a family emergency-preparedness portal and Android app that works offline; and Currency Flow, the ECB's official euro exchange rates since 1999 as a free static JSON API and a PHP library. Lately I spend a lot of time where backend meets LLMs: MCP servers, RAG and agents that know when to hand work to a local model. Quality over quantity, always.
|
Learn Japanese from zero with Boo, a little ghost. It started with Hiragana & Katakana (charts, quizzes and a Romaji → Kana reverse mode) and now covers ~2,500 kanji from N5 to N1 plus Kotoba: vocabulary and grammar tracks from your first words up to ≈N2, kanji with furigana, stroke tracing practice and spaced-repetition reviews. Fully static and multilingual (🇪🇸 ES / 🇬🇧 EN / 🇯🇵 JA, route-based i18n): every dataset is validated at build time, SEO and analytics are covered by tests, and it uses privacy-friendly analytics. |
A Claude Code plugin that records which languages Claude reads and edits while it works for you, and turns them into text bars for your GitHub profile README (the Code Crafting block below is generated by it). Bars can be flowers 🌸, rockets 🚀, hearts 💖 or any emoji you like. The hook runs in the background so it never slows Claude down, works on macOS, Linux and Windows, and GitHub is optional: connected, it updates your README by itself (with optional auto-publish); not connected, it hands you the block to paste. |
|
An open, versioned dataset of Spanish postal codes and the municipalities they serve, built from official INE data and refreshed automatically: 10,791 postal codes · 8,132 municipalities · 52 provinces. Use it as a CSV, a static JSON API (no server, no API key, open CORS), an npm package or a PHP library via Composer, all with the same API.
Offline lookup and accent-insensitive search with zero dependencies (~110 KB gzipped on npm),
leading-zero recovery ( |
A family emergency-preparedness portal and Android app that keeps working with no signal. Its supplies calculator uses official figures: water broken down by use, five age groups, dogs by size, hot weather, "no stove" mode, allergies, intolerances and diets, plus a sample menu and the real kilos to buy. Then an inventory with expiry dates tells you what's missing. Also: guides per emergency (blackout, flood, heatwave, cyberattack…), survival skills with offline illustrations, a Morse code translator and SOS emitter, offline meeting points with GPS, a world map of official recommendations per country and a battery-saving blackout mode. News is curated from RSS every 6 hours by GitHub Actions, and CI builds and releases the APK. No dependencies, no build step, accessibility reviewed. |
|
The official euro exchange rates published by the European Central Bank, every business day since 1999: 29 active currencies · 12 discontinued. Use them as a static JSON API on GitHub Pages (no server, no API key, open CORS), a PHP library via Composer or a self-hosted HTTP API with an OpenAPI 3.1 spec. Cross rates and conversions between any two currencies, weekends and holidays resolved to the previous publication (and every answer says which date was used), and rates kept as the ECB's exact decimal strings, with no float rounding. GitHub Actions rebuilds the site after each ECB publication and refuses to publish data that fails validation. Docs and converter in 6 languages. |
|
🧭 Agent orchestrator · From first idea to Notion tasks, routing clear-cut work to local models.
Takes a project from first idea to a task breakdown in Notion. Frontier models plan, review and test; clear-cut tasks are delegated to local models depending on difficulty, scope and context size, and the router learns from its own hit/miss history.
Go · Notion · Ollama · SQLite
🧠 MCP server with RAG · Internal docs queryable from Claude and ChatGPT, deployed continuously.
Makes internal documentation queryable from Claude and ChatGPT: PDF parsing and chunking, vector search in sqlite-vec, local models via Ollama. Deployed continuously from GitHub Actions with an SSH key locked to a single command, no overlapping deploys and a health check gate.
Python · MCP · sqlite-vec · Ollama · GitHub Actions
💬 Local RAG bot · Chat with a knowledge base without anything leaving the machine.
Chat over a knowledge base without anything leaving the machine: chunked ingestion, CPU embeddings, top-k retrieval and a 7B model answering with streaming.
Python · FastEmbed · Ollama · Gradio
💼 DashJobs · Local-first job-search dashboard that turns offers into a study plan.
A local-first dashboard for anyone running a job search. It pulls your applications from LinkedIn and InfoJobs through your own signed-in browser, uses a local LLM to extract each offer's requirements, and turns them into a study plan with drafted notes on every topic. It syncs with Notion, and everything stays on your machine (JSON store with atomic writes, export/import backups).
React · Express · Playwright · Ollama · Notion
🛠️ Hefesto · Live dev control panel for services, containers, databases and AI usage.
My own dev control panel. A Fastify daemon collects the state of my services, containers, databases and AI subscription usage, and streams it over SSE to a terminal UI (Ink) and a React dashboard.
TypeScript · Fastify · React · PostgreSQL · Docker
🔐 Tamper-evident audit framework · A hash-chained event log nobody, admins included, can quietly rewrite.
An isolated service other apps (SSO, CRM, internal tools) send their events to, so nobody, admins included, can quietly rewrite history. FastAPI ingestion → stream queue → worker that hash-chains every event → immutable store, synced to a read-only PostgreSQL copy for dashboards, plus an integrity checker that alerts on any mismatch.
FastAPI · Valkey Streams · immudb · PostgreSQL · Superset
📉 Market screener · Stocks near historical lows, backtested and sent to Telegram.
Spots stocks trading near historical lows and alerts me on Telegram. Signals are checked with a point-in-time backtest (no look-ahead, no survivorship bias) and the engine is covered by 300+ tests.
Python · Flask · PostgreSQL · pytest · Telegram
✈️ Planedex · Point your phone at the sky and identify the plane flying over you.
A Pokédex for planes: point your phone at the sky and identify the aircraft flying over you, using live ADS-B data, the camera and device sensors. Offline-first, so your collection survives with no signal.
Expo · React Native · SQLite
🏋️ AniFit · A fitness diary where your training levels up an anime character.
A fitness diary with anime gamification: log steps, calories, protein, water, weight and workouts, find out which anime character archetype matches your body composition (FFMI + body fat), and see the positive and negative routes your habits lead to. Live demo.
FastAPI · PostgreSQL · React · Vite · TailwindCSS
💬 Curious about any of these, or fancy building one together? Most of the repos are private for now, but I'm always happy to share the details, swap ideas or collaborate. Drop me a line at [email protected].
| Category | Technologies |
|---|---|
| 🌐 Languages | |
| 🖥️ Frameworks & Libraries | |
| 📦 Databases & Messaging | |
| 📊 Data, AI & Integration | |
| 🤖 Testing & Automation | |
| ⚙️ Tools & Platforms | |
| 🖋️ IDEs & Editors |
|
|
|
Python 🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌱············· 46.31 % JavaScript 🌸🌸🌸🌸🌸···················· 19.13 % HTML 🌸🌸······················· 07.78 % Docker 🌸🌸······················· 07.04 % Astro 🌸🌱······················· 06.51 % PHP 🌸🌱······················· 05.78 % Other 🌸🌸······················· 07.44 %



