pablo.rejón Journey

DevLog & Technical Ideas

DevLog

Oct 21, 2026

Discovering Orca: The Agent Development Environment for Parallel AI Coding (Juan Llamazares' Recommendation)

On the recommendation of my mentor at Indexa Capital, Juan Llamazares, I started using Orca (onorca.dev), an open-source...

On the recommendation of my mentor at Indexa Capital, Juan Llamazares, I started using Orca (onorca.dev), an open-source Agent Development Environment (ADE) built to run, monitor, and orchestrate fleets of AI coding agents (such as Claude Code, Codex, or Cursor) in parallel across isolated Git worktrees. The experience has been a total paradigm shift in my daily software engineering workflow.

Discovering Orca: The Agent Development Environment for Parallel AI Coding (Juan Llamazares' Recommendation)

1. Transitioning to the ADE Paradigm & Mentorship at Indexa Capital

Oct 21, 2026

Within the context of my backend internship at Indexa Capital, Juan Llamazares recommended exploring Orca to scale technical output and accelerate complex engineering tasks:

  • Agentic Engineering Culture: At Indexa Capital, the engineering workflow actively leverages cutting-edge agentic tools. Juan Llamazares' recommendation came as a direct solution to avoid the sequential bottlenecks of conventional agent interactions.
  • From Legacy IDE to ADE (Agent Development Environment): Embedded chat extensions in legacy editors force developers into single-threaded waiting loops. Orca redefines the workspace as a unified command bridge to orchestrate autonomous agent fleets in parallel.

2. Fleet Architecture & Git Worktree Isolation

Oct 21, 2026

The core technical differentiator that sets Orca apart from conventional AI coding tools:

  • Strict Git Worktree Isolation: Each agent or session runs in a fully isolated Git worktree within the same repository. Multiple agents can refactor code, write test suites, or implement endpoints simultaneously without branch collisions or polluting the primary working tree.
  • High-Performance WebGL Terminal Splits: Fluid WebGL-accelerated splits (inspired by Ghostty) to simultaneously inspect live logs, execution traces, and code diffs across every agent with zero rendering overhead.
  • Sovereign BYO (Bring Your Own Subscriptions) Philosophy: MIT-licensed open-source desktop environment that natively drives locally installed CLI agents (Claude Code, Cursor CLI, Codex), honoring existing developer subscriptions and keys without proprietary lock-in.

3. Daily Developer Ergonomics: Screenshots & Mobile Monitoring

Oct 21, 2026

Practical UX nuances that transform day-to-day developer velocity:

  • Instant Visual Context Injection: Native clipboard support to paste screenshots and technical diagrams directly into agent sessions, instantly feeding UI bug traces and layout specs into the agent context.
  • Remote Monitoring via Mobile Companion: Companion app for iOS and Android enabling real-time monitoring of long-running agent tasks, builds, or test suites without remaining anchored to the desktop monitor.
  • Immediate Velocity Leap: A genuinely game-changing tool that has instantly become an indispensable staple in my developer stack for both Indexa Capital workflows and large-scale personal engineering projects.
Read more ➔
Oct 21, 2026

The Engineering Story of Blobby: From Login Mascot to Full-System Autonomous Copilot in Organizator

I have been working intensely on this project for nearly a month, engineering Blobby as the conversational voice copilot...

I have been working intensely on this project for nearly a month, engineering Blobby as the conversational voice copilot and autonomous agent for Organizator. While the platform has not yet been publicly launched and remains in active development / closed beta, its official release is coming soon. This is the engineering chronicle of its evolution across 38 commits: how it transformed from an organic welcome animation at login into a sovereign VPS-hosted agent with ultra-low latency conversational AI (~1s latency), advanced budgeting with category caps, autonomous meeting minutes generation («Listen Mode»), long-term episodic memory, and voice-driven system administration protected by single-use cryptographic tokens.

The Engineering Story of Blobby: From Login Mascot to Full-System Autonomous Copilot in Organizator

1. Agent Architecture: From Local Worker to VPS Deployment with Ultra-Low Latency AI (~1s Latency)

Oct 21, 2026

Evolution of Blobby's conversational pipeline from a desktop local worker prototype into a decoupled production agent on the Hetzner VPS:

  • Curved Flight Paths & Organic Blinking: Visual genesis featuring curved SVG flight trajectories from the login view into its persistent corner position, paired with mathematical pseudo-random blinking (4-7s) for an organic idle state.
  • VPS Migration & Tool-Calling Agent Protocol: Replaced the local desktop worker with a robust VPS backend service powered by optimized cloud language models (streamlined execution for instant turns), adopting the exact raw assistant tool protocol to eliminate 400 errors during voice sessions.
  • Sub-Second Latency Optimization (~1s): Direct server-side confirmation summary generation upon valid tool execution, eliminating a redundant second LLM roundtrip and dropping response latency to ~1 second.
  • Audio Hallucination Mitigation (mencionaA): Lexical heuristics (`mencionaA` and `pareceCortado`) preventing spurious mutations or unintended entity linking when microphone audio cuts off or references ambiguous events.

2. Adaptive Ergonomics & «Listen Mode»: Automated Meeting Minutes Generation

Oct 21, 2026

Non-intrusive desktop/mobile interfaces and real-time processing of in-person or virtual meetings:

  • Desktop Voice Island & Mobile Bottom Sheet: Floating dynamic audio island with live waveform transcription on desktop, paired with an ergonomic gesture-driven bottom sheet on mobile to keep boards visible while speaking.
  • Real-Time Meeting «Listen Mode»: Continuous background audio processing during meetings, capturing agreements, strategic takeaways, and delegated action items without conversational friction.
  • Enforced Meeting Minutes Linked to Milestones: Automated structured meeting minutes compilation enforced strictly against the parent project or milestone, establishing bidirectional links with discussed tasks.
  • Temporal Consistency & Schedule Gap Detection: Algorithmic schedule inspection finding open slots between commitments and proactively warning against scheduling appointments at already-elapsed times.

3. End-to-End Financial Engine: Dynamic Pockets, Monthly Caps & Debt Tracking

Oct 21, 2026

Blobby assumes operational management of personal ledgers with active categorization and zero-friction onboarding:

  • Active Categorization & In-Flight Reclassification: Elimination of catch-all 'Others': Blobby actively clarifies ambiguous expenses and reclassifies records directly within the flow without generating duplicates.
  • Monthly Category Spending Limits: Voice-configured monthly spending ceilings per category, tracking ongoing consumption and issuing alerts as burn rates approach defined limits.
  • Chained Frictionless Financial Onboarding: If a fresh user records an expense without existing accounts, Blobby buffers the amount, guides the creation of the initial financial pocket, and settles the transaction seamlessly.
  • Advanced Accounting: Refunds, Debts & Recurring Subscriptions: Support for refund tracking (incomes offsetting past outlays), peer-to-peer debt settlements, automated savings goal allocation, and scheduled recurring income/expenses.

4. Cognition & Persistent Memory: Volatile, Episodic & Right to be Forgotten

Oct 21, 2026

Context retention across conversation turns and long-term biographical episodic memory built with privacy safeguards:

  • Volatile Session Memory & Idempotent Actions: In-memory session state preventing redundant clarifications and ensuring strict idempotency across complex multi-step user prompts.
  • Persistent Long-Term Episodic Memory: Long-term episodic recall storing operating preferences and personal routines to contextualize future planning and budgeting recommendations.
  • Privacy First: User-Audited Right to be Forgotten: Interactive inspection of stored memories paired with an explicit voice command to purge specific memory fragments from the database upon request.

5. DevSecOps: Voice-Driven User Administration with Cryptographic Tokens

Oct 21, 2026

Blobby assumes system super-administrator capabilities fortified under banking-grade double-confirmation protocols:

  • Usage Quota Governance & Sleep States: Calibrated `blobby_uso_diario` quota tracking against Europe/Madrid timezone with amber warnings at 80%, UI sleep state at 100% capacity, and automated admin email alerts.
  • Conversational System User Administration: Natural-language administration commands restricted to authenticated admins for assigning modules, updating plan tiers, suspending accounts, and adjusting live rate limits.
  • Double-Confirmation Ephemeral Cryptographic Tokens: Two-phase security protocol: Blobby stages the administrative action and the backend generates a single-use 2-minute cryptographic token. No database mutation occurs without presenting and verifying the signed token against the admin identity.
Read more ➔
Oct 7, 2026

Organizator: Unified TipTap Editor with Line Git Blame, Side-Rail Task Navigation, Official AEAT Modelo 303 & Granular Reconciliation

20 major commits rolled into Organizator: complete migration to a unified WYSIWYG editor (TipTap) with line-level LCS gi...

20 major commits rolled into Organizator: complete migration to a unified WYSIWYG editor (TipTap) with line-level LCS git blame traceability, task inspection redesign with non-destructive desktop side-rail and mobile bottom sheet, official AEAT Modelo 303 BOE export with reverse-charge handling (Modelo 349), and granular split-payment bank reconciliation.

1. Rich Notes Engine: Unified TipTap WYSIWYG & Line Traceability («Git Blame»)

Oct 7, 2026

Replacing fragmented editing modes with a unified word-processor experience backed by a lossless two-way Markdown AST:

  • Unified WYSIWYG Experience (TipTap / ProseMirror): Consolidated split/edit/preview modes into a single distraction-free WYSIWYG surface powered by TipTap, maintaining lossless bidirectional serialization with structured Markdown.
  • Line Traceability Algorithm (LCS / Git Blame): Longest Common Subsequence (LCS) diffing engine tracking the revision phase and timestamp of every line in technical notes, enabling a color-coded 'blame' view across project milestones.
  • Aligned Markdown Tables & Typographic Polish: Automatic Markdown table column padding on Tab keystrokes, fixed macOS ::marker disappearing during predictive text, seamless list numbering continuity over blank entries, and a focused /link modal for sprint meeting notes.

2. Task Detail Redesign: Side-Rail Architecture & Mobile Bottom Sheet

Oct 7, 2026

Non-destructive contextual navigation for inspecting linked tasks without breaking active focus:

  • Non-Destructive Side-Rail Inspector: Clicking an internal task link inside technical notes renders a preview in the desktop side-rail instead of navigating away, preserving uninterrupted writing flow.
  • In-Rail Navigation History («Back»): Internal navigation stack featuring a 'Back' action across interrelated tasks and dependencies, with an explicit 'Open task' button to transition primary focus.
  • Native Touch Bottom Sheet on Mobile: Mobile viewports transform the task inspector into a gesture-driven bottom sheet, while backlog rows streamline status text into compact contextual tooltip icons.

3. Tax & Freelance Engine: Official AEAT Modelo 303 (BOE) & Modelo 349

Oct 7, 2026

Generating official tax filings strictly adhering to the Spanish Tax Agency (AEAT) technical specifications:

  • Official Modelo 303 BOE File Generator: Direct generation of the official fixed-width flat file in ISO-8859-1 encoding matching AEAT BOE specifications, enabling one-click quarterly VAT filing import on the tax agency portal.
  • Strict Regulatory Mapping (General 21%): Calibrated mapping aligning 21% output VAT taxable base and quota strictly into official boxes [07] and [09] under Spanish tax regulations.
  • EU/Cross-Border Reverse Charge & 48h Deadlines: Automatic vendor origin classification (domestic, EU, third-country), reverse-charge VAT computation, zero-rated intra-EU invoicing for Modelo 349, and automated 48-hour deadline push alerts.

4. Financial Engineering: Granular Reconciliation & Split Payments

Oct 7, 2026

Advanced banking reconciliation for grouped settlements and recurring cashflow tracking:

  • Split-Transaction Payment Matching: Allows splitting a single consolidated bank transaction (e.g. combined transfer or Bizum) across multiple recurring flows, each preserving its independent accounting ledger.
  • Integrity Filtering on Historical Cycles: Automatic suppression of historical charges linked in previous billing periods, preserving ledger integrity and preventing duplicate reconciliation.

5. Intelligent Backlog & Multi-Device Sync Resiliency

Oct 7, 2026

Streamlined operational planning and deterministic conflict resolution across desktop and mobile:

  • Context-Aware Task Partitioning: Visual backlog grouping into 'Doing › Review › To Do', dynamically collapsing empty review states to eliminate redundant nesting in personal boards.
  • Normalized Real-Time Search: Instant header search bar with diacritic and case normalization, enabling lightning-fast task filtering regardless of accentuation.
  • Deterministic 3-Way Merge Synchronization: Deterministic identifier generation paired with a 3-way merge strategy preventing duplicate entity generation when mobile and desktop clients create records simultaneously.
Read more ➔
Sep 28, 2026

JARVIS: Autonomous, Local-First & Hybrid Edge-Cloud Voice Assistant with GPU Inference & WireGuard

Technical case study on JARVIS, my 100% self-hosted, private AI voice orchestrator: home GPU LLM inference (Qwen 2.5 7B ...

Technical case study on JARVIS, my 100% self-hosted, private AI voice orchestrator: home GPU LLM inference (Qwen 2.5 7B on RTX 4060 Ti) with an asymmetric CPU audio pipeline (0 MB VRAM), kernel-level WireGuard P2P tunnel to a Hetzner VPS (jarvis.pablorejon.com), the 'Zero-VRAM Gaming Guard' Linux subsystem, and multi-turn Function Calling with Organizator and Home Assistant.

1. Asymmetric CPU/GPU Separation: 0 MB VRAM for Voice & Full CUDA for LLM

Sep 28, 2026

Extreme resource optimization on consumer hardware (AMD Ryzen 7 5800X + NVIDIA RTX 4060 Ti 8GB) running a 7B LLM without Out-Of-Memory hazards:

  • Zero-VRAM Voice Processing Pipeline: With Qwen 2.5 7B Instruct (Q4_K_M, 8192 context window) demanding ~5.5 GB of VRAM on an 8 GB GPU, offloading STT or TTS to CUDA would trigger fatal OOM crashes. The entire audio stack was rearchitected across the 8 cores / 16 threads of the Ryzen 7 5800X, ensuring exactly 0 MB of VRAM used for voice.
  • Ultra-Low Latency Multi-Threaded Audio Stack: Faster-Whisper int8 transcribes 3s audio bursts in 400–600 ms, Silero VAD filters 100% of background noise before CPU cycles, neural Piper TTS achieves Time-to-First-Audio under 150 ms, and openWakeWord ('Hey Jarvis') operates continuously below 1% CPU utilization.
  • Dedicated NVMe Cache Partition: Configured a high-speed dedicated solid-state storage partition for model weights, context buffer offloading, and KV Cache, preventing disk I/O bottlenecks during continuous token generation bursts.

2. Zero-VRAM Gaming Guard: Frictionless Linux Gaming Coexistence

Sep 28, 2026

Double-layer instant memory eviction architecture ensuring zero FPS drops when launching demanding Steam/Linux games:

  • Feral GameMode Hook & GPU Watchdog Daemon: Script hooked into gamemoded sending an eviction signal to Ollama (keep_alive: 0) and setting a flag in /tmp/jarvis_gaming_mode before game engines initialize. A secondary systemd --user daemon polls nvidia-smi as a fallback for Wine/Proton processes.
  • Orchestrator State Interceptor: Incoming requests while the gaming flag is asserted receive an immediate courtesy response ('I am in standby mode while you play'), preventing the LLM from reloading into VRAM and degrading game framerates.

3. Hybrid Edge-Cloud Network: Kernel WireGuard P2P & WebGL Shader PWA

Sep 28, 2026

Sovereign networking infrastructure linking remote mobile clients to home compute hardware without third-party brokers:

  • Kernel-Level WireGuard P2P Tunnel: Native point-to-point WireGuard tunnel (10.0.0.1 <=> 10.0.0.2 via ChaCha20-Poly1305) between the Hetzner VPS and home desktop. PersistentKeepalive = 25 maintains state tables across CGNAT without opening residential ports or relying on third-party SaaS (Tailscale, Ngrok, Cloudflare).
  • Caddy Reverse Proxy & Automatic TLS: Caddy on the VPS manages automated Let's Encrypt certificates for jarvis.pablorejon.com with HTTP/2 and HTTP/3 QUIC support, routing HTTPS and WebSockets over WireGuard with sub-50ms latency.
  • React 19 PWA & Reactive WebGL (OGL) 3D Orb: Interactive React 19 PWA featuring a 3D WebGL shader orb (OGL) dynamically morphing based on microphone volume and agent state (Listening, Thinking, Speaking), with native iOS PWA support and Siri Shortcuts ('Hey Siri, Jarvis' -> POST /api/text).

4. FastAPI Orchestrator & Multi-Turn Function Calling with Organizator

Sep 28, 2026

Python 3.14 conversational orchestrator with structured tool calling and seamless productivity suite integration:

  • Recursive Multi-Turn Tool Parser (_tool_calls_in_text): Custom async parser inside FastAPI capturing tool invocations even when the 7B model outputs mixed prose and JSON schemas (>99% success rate), supporting multi-turn loops up to 6 iterations per conversational turn.
  • P.A.R.A. Integration with Organizator: Direct REST API bridge with constant-time SHA-256 Bearer authentication (timingSafeEqual). Enables querying daily tasks, logging calendar events, and validating project assignments using conversational voice commands.
  • Roadmap: Home Assistant IoT & «Anime Mode» Macro: Upcoming integration with Home Assistant for ambient smart home control ('Jarvis, turn on the TV') and complex lifestyle macros like 'Anime mode' (dimming lights, powering on the Smart TV, and launching Crunchyroll directly).
Read more ➔
Sep 14, 2026

New Chapter: Software Engineer Intern at Indexa Capital (Backend & Agentic AI)

Starting a new professional chapter as Software Engineer Intern in the technology team at Indexa Capital: how I set my s...

Starting a new professional chapter as Software Engineer Intern in the technology team at Indexa Capital: how I set my sights on a company whose engineering culture and product I deeply admired, the interview process while attending the Cyber Bootcamp in Málaga, and diving into scalable backend architectures and agentic AI developer workflows.

1. Intentional Search: Why Indexa Capital

Sep 14, 2026

When seeking university internships to take a qualitative leap as an engineer, the premise was clear: join a company with an exemplary engineering culture and a product I already used and believed in:

  • Culture of Radical Transparency & Technical Rigor: Indexa Capital stands out as Spain's leading independent automated manager, guided by radical transparency, sustainably low fees, and mathematical automation of index portfolios.
  • High-Reliability Backend Engineering: Managing hundreds of millions of euros across thousands of clients requires unwavering reliability, transactional consistency, and architectural robustness where every line of code matters.

2. The Selection Process During the Málaga Cyber Bootcamp

Sep 14, 2026

Preparing and advancing through each interview round coincided directly with my intensive stay at the Google/UMA Cybersecurity Bootcamp in Málaga:

  • Balancing Intensive Training with Technical Rounds: Between lectures, security labs, and networking events in Málaga, I dedicated late hours to deeply study the business model, architecture, and fintech challenges, tackling every technical stage with preparation and ambition.
  • Transparency & Human Connection in Interviews: Every conversation with the technology team was transparent, direct, and centered on software engineering fundamentals, problem-solving, and sound technical reasoning, confirming the high caliber of the team.

3. Onboarding on September 9: Backend & Agentic AI

Sep 14, 2026

On September 9th, I officially joined the technology team as a Software Engineer Intern:

  • Backend Systems & Scalability: Deep dive into the platform's backend ecosystem, learning design patterns for fault-tolerant financial services, query optimization, and automated continuous deployment pipelines.
  • Integrating Agentic AI into Daily Workflows: Exploration and adoption of modern workflows powered by agentic AI and intelligent assistants in daily programming, refactoring, and automated verification, accelerating engineering velocity and precision.
  • Warm Welcome & Mentorship: Deeply grateful for the warm welcome, mentorship, and support from all teammates, making every day an enriching and fast-paced learning experience.

4. Goals & Continuous Learning

Sep 14, 2026

Eager to deliver tangible engineering value and make the absolute most of this chapter:

  • Delivering Value from Day One: Commitment to actively contribute across backend tasks, incident resolution, service optimizations, and deploying new user-facing functionality for Indexa clients.
  • Synergy with Final Thesis & Graduation: This experience marks the culmination of my Computer Science degree at UGR, balancing production engineering with the upcoming thesis defense.
Read more ➔
Sep 13, 2026

Organizator: Multitenant Enterprise Suite, PSD2 Open Banking, Cryptographic Invites & Gesture Mobile UX

Major architectural milestone in Organizator: B2B Multitenant Enterprise suite with collaborative Kanban boards, zero-fr...

Major architectural milestone in Organizator: B2B Multitenant Enterprise suite with collaborative Kanban boards, zero-friction PSD2 Open Banking integration with protected quotas, atomic cryptographic invitations via Resend, gesture-based mobile swipe navigation, and maskable logo geometry refinement.

1. Enterprise Suite (v1): Multitenant Architecture & Collaborative Kanban

Sep 13, 2026

Transforming Organizator into a collaborative multi-tenant workspace with strict tenant isolation and optimistic concurrency control:

  • Multitenant Relational Schema & Strict Isolation: Normalized relational schema (organizations, organization_departments, organization_projects, organization_tasks, and organization_members). Enforced organization_members.user_id uniqueness and mandatory organization_id parameterized SQL queries ensuring airtight tenant isolation.
  • Optimistic Concurrency Control (HTTP 409 Conflict): Incremental versioning on organization tasks that rejects concurrent mutations from stale client sessions with HTTP 409 Conflict, preventing silent data loss.
  • Fractional Ordering Algorithm & In-Memory Store: Symmetric fractional positioning algorithm in backend and frontend (tablero.ts) verified against float precision loss. useEmpresaStore (Zustand) remains strictly in volatile memory, resets on logout, and syncs via WebSockets.
  • Corporate Views & Kanban Drag-and-Drop: Enterprise Overview dashboard with metrics and 4-state segmented department progress bars (EmpresaOverviewView), interactive Kanban boards powered by dnd-kit (EmpresaDepartamentoView), member directory, and Admin Panel tooling.

2. PSD2 Open Banking: Frictionless Connection & Quota Protection

Sep 13, 2026

Complete overhaul of the Enable Banking integration, eliminating technical jargon while safeguarding API usage quotas:

  • Zero-Jargon Flow & Direct Bank Discovery: Eliminated manual entry of UUIDs and tokens. Users now search an active ASPSP bank catalog (Santander, BBVA, CaixaBank, Revolut, Sabadell, ING...), redirect to official banking OAuth/PSD2 portals, and map accounts into Organizator pockets.
  • Modular Opt-In & API Quota Protection: The bank-sync module is now opt-in across all subscription tiers (including full plans). Only accounts explicitly enabled by administrators consume Enable Banking API quotas, protected by an idempotent migration for existing admins.
  • Endpoint Rate Limiting & 24h ASPSP Cache: Hardened banking endpoints with rate limiting on /api/finances/* (60 req / 15 min), in-memory 24h caching for ASPSP institution lists, and one-click account unlinking with direct confirmation.

3. Cryptographic Invites & Closed Beta Gateway

Sep 13, 2026

Replacing manual temporary passwords with cryptographic onboarding links and invite-only beta requests:

  • 32-Byte SHA-256 Cryptographic Tokens: Secure 32-byte cryptographically signed tokens with a strict 7-day expiration. Users land on InvitacionView, set their password with real-time validation, and auto-login atomically.
  • Transactional Email Pipeline via Native Resend API: Invitations dispatched via native fetch with an AbortController (10s timeout) directly to the Resend API, keeping the backend bundle lean without bulky external client packages.
  • Closed Beta Access Modal with Invisible Honeypot: Private beta banner on LoginView with an access request modal protected by an invisible honeypot (empresa_confirmacion) and backend proxy routing to sovereign contact infrastructure.

4. Gesture-Based Mobile Navigation (Swipe), «My Account» & Maskable Logo Geometry

Sep 13, 2026

Ergonomic mobile refactor for touchscreens and resolving geometric clipping on the official brand emblem:

  • Horizontal Gesture Swipe Navigation: Fluid gesture switching across [Account] ↔ [Calendar] ↔ [Money]. The banking card carousel remains isolated to prevent unintentional view transitions, while vertical scrolling and pull-to-refresh stay buttery smooth.
  • Dedicated Mobile «My Account» Hub: Replaced the header bell with a dedicated user hub in the bottom nav: profile avatar with role and tier badges, Web Push toggle with Safari iOS guidance, company affiliation, password updates, and safe logout checks.
  • Maskable Safe-Zone Logo Geometry: Diagnosed tight corner clipping in Login (60x60px, r:14px) and Sidebar (32x32px, r:8px) caused by a 94% full-bleed asset. Replaced with icon-512-maskable (~68% central footprint), restoring proper visual breathing room without touching CSS.

5. Engineering Rigor: Enforced pnpm, CI/CD Probes & 100% Test Coverage

Sep 13, 2026

Hardening development standards and continuous automated verification on production pipelines:

  • Strict pnpm Enforcement & Centralized AI Hub: Strict deprecation of npm documented in CLAUDE.md and README.md for dependency integrity. Centralized ultra-low latency AI engine integration in aiConfig with secure auth headers and redacted client error payloads.
  • CI/CD Deployment Health & Migration Probe: GitHub Actions deploy workflow now asserts /api/health responds with ok: true and migraciones: 'ok' before completing rollout on the Hetzner VPS.
  • Comprehensive Test Verification: 482 Passing Tests: 482 unit tests across 37 suites passing cleanly (TZ=UTC), 41 integration tests on ephemeral PostgreSQL testing multitenancy and 409 Conflict logic, with 0 TypeScript and ESLint errors.
Read more ➔
Sep 3, 2026

Organizator: Complete UI Redesign, Brand Identity Overhaul & Mobile-First Experience

Comprehensive visual and ergonomic redesign in Organizator: brand new emblem embodying the 5 core productivity dimension...

Comprehensive visual and ergonomic redesign in Organizator: brand new emblem embodying the 5 core productivity dimensions, complete UI restructuring focused on swift mobile workflows, and a unified authentication gateway ('Entrar al Cerebro').

1. New Brand Identity & Symbolism of the Brain

Sep 3, 2026

Introducing the new official logo of Organizator, designed as a modular circular wheel integrating the 5 core facets of personal management:

  • The 5 Productivity Dimensions: Time and daily schedules (clock), operational tasks (coral checkmark), projects and milestones (golden radar waves), documentation and knowledge (slate note icon), and finances & life streams (emerald wave).
  • Native Icon for PWA & App Docks: Crafted with squircle geometry and balanced contrast over deep teal (#183e4b), optimized for high-definition rendering on macOS Dock and mobile home screens.

2. Complete UI Restructuring: Mobile-First Ergonomics

Sep 3, 2026

Restructuring the UI starting from the mobile viewport to maximize speed and clarity during daily tracking:

  • Clean Access Gateway ('Entrar al Cerebro'): Full redesign of the welcome portal featuring refined serif typography, delicately outlined inputs, soft ambient blur, and the new emblem anchoring access to the workspace.
  • Swift & Ergonomic Touch Interactions: Streamlined layouts and navigation menus for effortless one-handed use, cleaner card spacing, and eliminated visual clutter so logging tasks and checking finances is immediate.
  • Warm & Professional Design Language: Adoption of warm cream backgrounds combined with understated deep teal and slate accents, delivering a modern, humane, and distraction-free visual environment.
Read more ➔
Sep 2, 2026

Organizator: Cross-Device State Sync, PDF Invoicing Pipeline & Freelance Cashflow Modeling

Engineering chronicle on Organizator: cross-device offline state sync, multi-session isolation, PDF invoice rendering, a...

Engineering chronicle on Organizator: cross-device offline state sync, multi-session isolation, PDF invoice rendering, and moving past naive recurring income abstractions in favor of invoice-driven cashflow.

1. Cross-Device Synchronization & Offline Persistence

Sep 2, 2026

Diagnosing and fixing cross-device state drift between mobile and desktop clients when updating tasks and calendar schedules:

  • Persistent Pending-Push Markers: Client-side pendingSync was kept exclusively in volatile memory; if a mobile browser reloaded or closed mid-debounce, pending mutations were lost. Markers are now persisted in local storage until an explicit HTTP 200 acknowledgment from the backend.
  • Multi-User Session Switch Guard: Implemented a strict boundary preventing queued mutations from a previous session from syncing into another user account after a logout/login switch, securing multi-user data integrity.
  • Bidirectional State Reconciliation on GET /api/state: Resolved race conditions when fetching server state, ensuring clients reconcile remote changes without overwriting local mutations pending transmission.

2. PDF Invoicing Pipeline & UI Refinement

Sep 2, 2026

Hardening the invoicing suite and visual cleanup of core operational components:

  • PDF Engine & Edge-Case Handling: Validated the integrated side-panel PDF viewer and fixed edge-case regressions for lump-sum single-item invoices without line breakdown, preserving VeriFactu and audit compliance.
  • Clean & Professional UI Polish: Removed noisy decorative elements (such as generic clock emojis in task lists) in favor of clean technical typography aligned with professional daily workflows.

3. Cashflow Domain Modeling: Invoices Over Naive Recurring Flows

Sep 2, 2026

Refactoring financial cashflow projections by retiring a simplistic abstraction that triggered false overdue warnings:

  • The Static Recurring Cashflow Flaw: Modeling monthly freelance billing as a fixed recurring flow (dueDate pinned to day 1 of the worked month) triggered false '32 days overdue' alerts. In professional services, worked hours (e.g. August) are billed next month (September) and collected 30 days later (October), with totals fluctuating based on overtime.
  • Invoice as Source of Truth & Distinct Projections: Shifted to a paradigm where realized cashflow is strictly governed by issued invoices (holding exact amounts and due dates). Unbilled future months display clearly marked provisional estimates without polluting official accounting ledgers.
  • Zero-Friction Overtime UI & Form Fixes: Radical streamlining of the billable overtime card removing clutter fields, alongside a form validation fix resolving a collapsed description input that blocked submission.
Read more ➔
Sep 1, 2026

Case Study: Building Self-Hosted Infrastructure & Redesigning my Tech Services Landing Page

End-to-end overhaul of my services platform (servicios.pablorejon.com) into an ultrafast, bilingual, 100% self-hosted co...

End-to-end overhaul of my services platform (servicios.pablorejon.com) into an ultrafast, bilingual, 100% self-hosted conversion engine: custom contact API on a Linux VPS with Docker and Caddy (100% GDPR, zero third-party processors), perfect Core Web Vitals (100/100), semantic pricing tabs with progressive enhancement, and a dual-market strategy.

1. Backend: Self-Hosted Contact API on VPS (Zero Third Parties, 100% GDPR)

Sep 1, 2026

Radical replacement of third-party form processors (Formspree, Typeform, Google Forms) with a self-hosted microservice ensuring customer data never leaves sovereign infrastructure:

  • Sovereign Stack & Deployment: Lightweight microservice deployed on a Linux VPS via Docker behind Caddy reverse proxy with automatic TLS at POST https://api.pablorejon.com/contacto.
  • Zero-Friction Honeypot Anti-Spam: Instead of conversion-killing CAPTCHAs, a hidden decoy field ('web') with display: none and tabindex="-1" silently drops bot submissions on the server side.
  • Strict CORS & Transactional Audit Trail: Strict origin whitelisting in deploy.env (ALLOWED_ORIGINS) and rich transactional emails with client Reply-To headers and audit metadata (exact timestamp, language, IP, and User-Agent).

2. Frontend: Performance, Accessibility & Mobile-First UX

Sep 1, 2026

Interaction engineering focused on frictionless usability, accessible keyboard navigation, and graceful degradation:

  • Semantic Pricing Tabs (role='tablist'): Replaced binary toggles with semantic role='tablist' / role='tab' buttons supporting native keyboard navigation (Arrow keys) and progressive degradation (both panels readable if JS is disabled).
  • Smart Count-Up & Scroll Geometry: Price counter starting at 72% of target value to animate smoothly without misleading on quick scans, and scroll-margin-top: 5.5rem ensuring sticky header clearance on anchor jumps.
  • iOS Safari Mobile Optimization: Inputs styled at 16 px (text-base) to prevent mobile Safari auto-zoom, 48 px touch targets (min-h-12) for ergonomic thumb taps, and responsive 1-to-2 column grids.

3. Value Proposition, Conversion Copywriting & Dual-Market Strategy

Sep 1, 2026

Transparent communication tailored for technical trust and regulatory differentiation:

  • Proof-Backed Pricing & Production Track Record: Eliminated fluff in favor of concrete proof and transparent pricing right in the Hero ('Websites from €1,500. Monthly care from €45/mo, optional with no lock-in. 1 custom e-commerce in production, 2+ years systems administration with zero downtime, and 1 business day response time').
  • GDPR Art. 28 Guarantees & Real Deliverables: Dedicated compliance section (#datos) featuring Data Processing Agreements (Art. 28 GDPR), verified backup restores, and real downloadable monthly PDF report samples.
  • Dual-Market Bilingual Strategy (ES vs EN): Spanish (/) tailored for full-service local business IT (workstations, servers, web in Granada); English (/en/) tailored for international startups seeking high-speed custom web engineering.

4. Production Metrics, Security & Conversion Results

Sep 1, 2026

Technical and operational impact following production deployment:

  • 100/100 Core Web Vitals & Lighthouse: Flawless 100/100 Lighthouse scores across Performance, Accessibility, Best Practices, and SEO with Tailwind CSS v4 minified into a single ultralight bundle.
  • Zero-Tracking Privacy & Direct Channels: Zero invasive tracking scripts or third-party cookies, empowering clients with flexible direct contact channels (custom API, WhatsApp direct, phone, or email).
Read more ➔
Aug 31, 2026

Organizator: Freelance Tax Engine (HAC/773/2019 Order), Multi-Charge Payments & Multi-User Architecture

Major architectural and feature overhaul in Organizator: full implementation of the 3 official tax ledger books under Sp...

Major architectural and feature overhaul in Organizator: full implementation of the 3 official tax ledger books under Spanish Order HAC/773/2019, precise Form 303 calculations, inverse VAT breakdowns with multi-charge cycles, and multi-user scaling for real active users with strict banking isolation.

1. Freelance Tax Module & Official Spanish Tax Ledgers (HAC/773/2019)

Aug 31, 2026

Architecture and design of regulatory tax ledgers compliant with Spanish Order HAC/773/2019 with reactive synchronization between income tax and VAT:

  • Three Distinct Official Tax Ledgers: Sales Invoices Ledger (income with immutable SHA-256 chaining), Income Tax Expenses Ledger (featuring the 11 official income tax categories and non-invoiced Social Security deductions), and a reactively derived Purchase Invoices VAT Ledger preventing duplicate entries.
  • Accurate Form 303 VAT Computations: Tuned box [28] calculations to compute exclusively the taxable base subject to deductible VAT, correctly excluding non-VAT charges and reverse-charge B2B operations (e.g. foreign services like Cloudflare or Anthropic).

2. Smart Financial Engine: Recurring Expenses & Multi-Charge Matching

Aug 31, 2026

Advanced bookkeeping automation for periodic expenses and split billing obligations:

  • Inverse VAT Breakdown on Expenses: Recurring flows marked as 'Freelance expense' with vendor, Tax ID, and rate (21%, 10%, 4%, 0%), calculating net base and exact VAT down to the cent from total paid.
  • Multi-Charge Cumulative Matching: Support for obligations billed across multiple bank debits under a single mandate (e.g. split Social Security charges). The cycle remains open accumulating charges until matching the expected total (±€1 tolerance), generating an idempotent consolidated record.
  • Overdue Recurring Charges Banner: Persistent top banner in Finances with quick actions ('Link to charge', 'Generate entry', 'Hide') and automatic reset on every monthly cycle change.

3. Multi-User Scaling & Security Architecture

Aug 31, 2026

Platform evolution to support multiple real active users managing their personal finances on the application daily:

  • Finance Module Opened to Standard Users: The full personal finance module (pockets, budgets, projections, recurring expenses, and ledger transactions) is now fully available to all registered users.
  • Secure Isolation & Zero-Data Cold Start: Open Banking live sync (via Enable Banking) is strictly isolated to admin role. Users operate in secure manual mode with zero credential risk, receiving automatic provisioning of base categories and pockets on first login.
Read more ➔
Aug 30, 2026

DevLog · Organizator: The Silent Notification (Three Chained Failures in Web Push, Docker & PostgreSQL)

Deep engineering post-mortem on background Web Push notifications for iOS/PWA in Organizator: debugging three chained si...

Deep engineering post-mortem on background Web Push notifications for iOS/PWA in Organizator: debugging three chained silent bugs (unpropagated client tokens, a 2-hour UTC container timezone drift, and JSON state overwrites in PostgreSQL) resolved down to idempotent real-time delivery.

1. The Architecture & The Three Chained Silent Bugs

Aug 30, 2026

The event notification selector stored values in the database but relied exclusively on ICS calendar alarms. The goal was true background Web Push delivery with the app closed, uncovering three layered silent bugs that produced no error logs:

  • Bug 01: Unpropagated Calendar Token in State: Client state was sanitized with a whitelist that omitted calendarToken (resulting in undefined). The sync URL silently hit a safety endpoint returning an empty calendar (0 events). Fixed by declaring the key across the 4 client lists.
  • Bug 02: Docker Container Operating in UTC: All-day event notifications anchored to midnight used new Date(), inheriting the container's process zone (UTC). In Madrid (UTC+2), a '30 mins before' alarm ran at 23:30 UTC (01:30 local). Fixed by strictly parsing Europe/Madrid via Intl.DateTimeFormat independently of host TZ.
  • Bug 03: PostgreSQL State Blob Overwrite: The client periodically saved application state via SET data = $2. Every 600ms debounce cycle completely wiped server-managed keys (push subscriptions, notification logs, calendar tokens). Fixed by ensuring the backend preserves internal keys against client payloads.

2. Debugging Timeline, Idempotency & Takeaways

Aug 30, 2026

From the initial UTC container discovery at 23:04 to verified delivery at 12:00:17 with registered idempotency keys:

  • Silence is Indistinguishable from Inaction: A missing push notification throws no red exceptions or failed HTTP requests: it yields silence. Only inspecting PostgreSQL tables and network payloads revealed that subscriptions were being wiped.
  • Guaranteed Notification Idempotency: Every alert is dispatched with a unique deterministic key (ev:id:date:offset) logged in the database during minute sweeps, preventing duplicated alerts across container restarts.
  • Verified Production Delivery: Test v3 delivered to iOS PWA at 12:00:17 (17s sweep cycle latency), validating the full stack: React PWA, Express, PostgreSQL, VAPID Web Push, and Docker VPS.

3. Extension: Overdue Milestone Warnings, Calendar Banner & Daily Planner Integration

Aug 30, 2026

After stabilizing the push notification pipeline, we expanded the engine to cover project milestones with a noise-free alert policy, while synchronizing warning banners and events directly into the Calendar and Daily Planner:

  • Milestone Alerts: Pre-Deadline & Overdue: Zero per-milestone selector friction: pre-deadline alert the day before at 12:00 (shared event anchor) and uncompleted overdue milestone warnings bundled into the 9:00 AM morning summary (capped at 3 to prevent noise). Strictly filtered for active projects (1_Proyectos/).
  • Overdue Calendar Banner & Cross-View Navigation: Inspired by the finances warning banner, the calendar now features a persistent banner (non-dismissible until resolved) listing overdue milestones with a direct 'Go to milestone' action. It routes across views and mounts the edit modal safely after project load.
  • Highlighted Events in Daily Planner: The Daily Planner top banner now showcases both milestones and scheduled events side by side, unifying daily operations on desktop.
  • Centralized Logic & Test Suite: Eliminated duplication by extracting eventOccursOn into lib/events.ts. 30 new unit tests (20 backend, 10 calendar) validate pre-deadline alerts, chronological sorting, timezone isolation in UTC, and archived project exclusion.
Read more ➔
Aug 22, 2026

Launching servicios.pablorejon.com: Custom Web Development & Managed Hosting with Transparent Pricing & Written Contracts

Officially presenting my freelance business services for companies in Granada and remote: bespoke web development withou...

Officially presenting my freelance business services for companies in Granada and remote: bespoke web development without templates (presence, CMS, and custom e-commerce), monthly managed care with no lock-in (hosting, verified backups, security updates, and technical support), written contracts with GDPR compliance, and 100% transparent published rates.

1. Professional Philosophy & Value Proposition

Aug 22, 2026

A proposition designed to handle small business web presence with rigor, transparency, and full legal guarantees.

  • Public & Transparent Pricing: Fixed, publicly listed rates on the website without opaque agency estimates. Custom websites from €1,500 (one-off) and optional monthly managed care from €45/mo with zero lock-in.
  • Written Contracts & GDPR: Every engagement includes a formal contract with GDPR data protection compliance and regular written reports detailing completed tasks.
  • No Lock-in Guarantee: Domains, SSL certificates, and credentials are always registered under the client's name. If we part ways, full technical handover and documentation are provided.

2. Bespoke Web Development & Managed Maintenance

Aug 22, 2026

Comprehensive services backed by hands-on experience running production infrastructure and live e-commerce platforms.

  • Tailor-made Web Development: Exclusive mobile-optimized design: corporate presence sites, self-manageable websites with intuitive dashboards, and full custom e-commerce stores with payment gateways.
  • Managed Hosting & Security Care: High-performance hosting, periodic tested backup restores, security updates, issue resolution, and written quarterly service reports.
  • Direct Support Channels: Same-day response commitment for critical incidents, with direct email and priority communication at servicios.pablorejon.com.
Read more ➔
Aug 21, 2026

Freelance Registration & Fiscal Engine in Organizator: Architecture of the Tax Module, VeriFactu & PDF Pipeline

Following my official registration as a freelancer (autónomo), I architected and integrated a full tax and fiscal manage...

Following my official registration as a freelancer (autónomo), I architected and integrated a full tax and fiscal management module into Organizator: official invoice/expense ledgers, ultralight PDF generation using standard Helvetica Base-14 metrics in pdfmake, deduplicated reactive bridging from 'My Work', VeriFactu SHA-256 cryptographic chaining with QR verification, and real-time quarterly tax estimations for Models 303 (VAT) and 130 (Personal Income Tax).

1. Official Tax Ledgers & Persistent Schema

Aug 21, 2026

Strict accounting domain modeling compliant with freelance tax requirements under direct simplified taxation.

  • 4 Integrated Accounting Books: Implemented regulatory registries: Issued Invoices (revenue), Received Invoices / Deductible Expenses, Investment Assets (with depreciation schedules), and Retainers / Disbursements.
  • Secure PostgreSQL Persistence: Backend extended with hasMeaningfulStateData and getInitialState guards to protect the fiscal state tree against accidental hydration race conditions in PostgreSQL.

2. PDF Engine: Base-14 Standard Font Optimization in pdfmake

Aug 21, 2026

Client-side standard invoice generation reducing embedded font bundle size from 1 MB to 281 KB with ReportLab-identical typography.

  • Helvetica AFM Metrics: Fixed pdfmake font metrics issues via deep import of build/standard-fonts/Helvetica.js, generating pure 5.1 KB vector PDFs with exact kerning and WinAnsi encoding for special glyphs (€, ñ, accents, and 0x97 em-dashes).
  • Watermarks & Corporate Styling: Conditional 'BORRADOR' (Draft) watermark rendering on non-issued invoices, paired with a matching corporate palette (#E4F1E8, #1F3A5F, #EAF0F6).

3. Reactive Bridge 'My Work' ➔ Automated Billing

Aug 21, 2026

Automating the invoicing workflow directly from completed client projects without transaction duplication or treasury desync.

  • Correlative Draft Instantiation: When marking work as billable, the bridge instantiates a draft invoice automatically assigning the next correlative series number (e.g. 2026/003), client metadata, and tax breakdowns.
  • Transaction Immutability: The bridge resolves state race conditions, ensuring issued invoices link to existing treasury transactions without double-counting balances or mutating ledger totals.

4. Cryptographic Chaining & Fiscal Traceability: VeriFactu & QR

Aug 21, 2026

Preparing the platform for the regulatory requirements of the Spanish VeriFactu billing system (immutability, hash chaining, and QR verification).

  • SHA-256 Hash Chaining: Every issued invoice generates a 64-character hex SHA-256 cryptographic hash calculated from document tax fields and the preceding invoice's hash, enforcing tamper-proof ledger continuity.
  • PDF Verification QR Code: Automatic QR code injection into the generated PDF containing the verification endpoint URL and fiscal fingerprint for instant audit validation.

5. Live Quarterly Tax Settlement: Models 303 & 130

Aug 21, 2026

Real-time financial visibility to project VAT and Personal Income Tax liabilities and eliminate tax quarter surprises.

  • Automatic Tax Form Computation: The dashboard dynamically computes boxes for Form 303 (collected vs deductible input VAT) and Form 130 (20% net income estimation minus client withholding taxes).
  • Git Privacy & Security Hardening: Strict isolation of test suites (scratch/, design-autonomo/) via .gitignore and regex audits to ensure zero leaks of NIFs, IBANs, or sensitive tax data into GitHub repositories.
Read more ➔
Aug 20, 2026

Dogfooding in Organizator: Architecture & UX of the New Fitness Module

Product engineering and interaction design of Organizator's new Sports & Physical Performance module: a bidirectional br...

Product engineering and interaction design of Organizator's new Sports & Physical Performance module: a bidirectional bridge between workout periodization (microcycles) and global schedules, featuring predictive load auto-population to eliminate gym cognitive fatigue, native SVG charts, and Second Brain unification under the P.A.R.A. method.

1. UX Ergonomics: Zero Friction in the Gym (Mobile vs Desktop)

Aug 20, 2026

On the gym floor, every superfluous interaction competes with workout fatigue: we strictly decoupled the high-velocity mobile flow from deep desktop analytics.

  • Daily Planner Integration: On mobile, workouts sync directly into the Daily Planner as a first-class time-block (e.g. 8:00 AM) checked off with a single tap, eliminating tedious on-the-floor form entry.
  • Deep Desktop Analytics: The desktop view centralizes reusable routine design, longitudinal progressive overload analysis, and anthropometric tracking where high information density adds true value.

2. Multi-Day Weekly Planning & Reactive Calendar

Aug 20, 2026

A bidirectional bridge between athletic periodization and personal calendar management, breaking down isolated application silos.

  • Microcycles & Weekly Distribution: Rather than isolating training in a silo, the weekly planner structures microcycles (e.g. Mon: Push, Wed: Pull, Fri: Legs) wired directly into the global timeline and system-wide priorities.
  • In-situ Editing & Rapid Rescheduling: When unforeseen events force a schedule change, session dates and times adjust directly from the Calendar card or session editor, reactively propagating to the Daily Planner without breaking historical records.

3. Smart Auto-Population Algorithm: Zero Load Friction

Aug 20, 2026

Heuristic target calculations so athletes never have to recall past personal bests or consult spreadsheets between sets.

  • Pre-filling Target Sets & Reps: Upon instantiating a routine for the day, the engine queries the last successful log for each exercise and pre-populates sets with suggested target weights and rep ranges.
  • RPE & Dynamic Adjustments: During live workouts, the user simply validates the set with one tap or overrides weight if progressive overload was achieved, eliminating tedious manual typing with tired hands.

4. Template Architecture & Native SVG Charts

Aug 20, 2026

Expanding Organizator's P.A.R.A. engine and reusing lightweight visual primitives without bloating the application bundle with third-party chart libraries.

  • PROJECT_TEMPLATES Extension: Integrated a dedicated TypeScript-typed gym template alongside existing presets (software, study, travel), structuring persistence schemas and reactive hooks for routines and workout logs.
  • Lightweight Native SVG: Reused hand-crafted declarative SVG primitives (FinProjectionChart, FinAnnualBars) to plot training volume, attendance consistency, and 1RM progressions without third-party chart bloat.

5. Dogfooding & Conclusions: The Unified P.A.R.A. Ecosystem

Aug 20, 2026

Why a truly unified Second Brain vastly outperforms a fragmented stack of four dedicated niche applications.

  • Elimination of App-Switching: Training within Organizator eradicates the friction of toggling between Hevy/Strong for lifting, Google Calendar for schedules, Notion for notes, and banking apps; the entire personal workflow lives in the same reactive data tree.
  • Real-World Mobile Learnings: Daily dogfooding under real conditions (sweaty hands, busy gym sessions) proved that top-tier mobile UX is not about adding more inputs or complex controls, but engineering systems where 90% of the data computes itself.
Read more ➔
Aug 19, 2026

TriajIA Comprehensive Engineering Overhaul: Modular Architecture, Test Suite & Security Hardening

A deep dive into TriajIA's architectural leap: decomposing a 1500+ line React monolith into a modular orchestrator and p...

A deep dive into TriajIA's architectural leap: decomposing a 1500+ line React monolith into a modular orchestrator and pure clinical hooks, implementing 31 automated Vitest tests, hardening multi-tenant isolation, integrating with HIS via HL7/FHIR webhooks, and structuring audit documentation for the thesis.

1. Modular Decomposition of TriageWorkspace

Aug 19, 2026

We transformed the 1500+ line monolithic component into a decoupled ~225-line orchestrator, isolating pure clinical logic into specialized hooks and reusable card components.

  • Architecture & Hooks: State separation into useTriageForm.ts (60s auto-save, escalations, and mutations) and pure clinical logic in useClinicalAssessment.ts (NEWS2, SIRS, PEWS scoring and automatic beta-lactam allergy detection).
  • Componentization: Creation of atomic cards under workspace/ (PatientData, PatientVoice, ClinicalTriage, VitalSigns/Glasgow, TestsAndExam, Differential, Disposition, and ActionBar).
  • State Bug Fixes: Score recalculation now respects live user-edited patient age, discharged records enforce strict read-only lockouts, and auto-save is consistent across all cards.

2. Clinical UX, Dispositions & Isolation

Aug 19, 2026

We designed a realistic emergency workflow tailored to hospital roles, establishing clear boundaries between waiting-room triage and the hospital's central HIS.

  • Reverse Isolation & Glasgow: New 'Reverse / Protective' isolation type with dashboard badge, contextual tooltips on all Glasgow Scale buttons (Motor, Verbal, Eye), and a collapsible guide with coma alert threshold (≤8).
  • 7 Triage Dispositions & Nursing Role: Implemented 7 dispositions (Discharge, Priority, Beds, Observation, Critical, General Waiting, External Transfer). Only Discharge and Priority close the encounter; others re-queue the patient. The new NURSING role is barred from discharging (enforced via server HTTP 403).
  • Scope Delimitation: Removed bloated medical evolution features to avoid duplicating the HIS, retaining the Diagnostic Tests & Physical Exam card and immutable re-triage history.

3. HIS Integration (HL7 / FHIR Webhooks)

Aug 19, 2026

We equipped TriajIA with hospital interoperability capabilities through secure, asynchronous webhooks compatible with global standards.

  • triage.disposition Webhook: Asynchronous dispatch with hospital-configurable HMAC-SHA256 signatures. Highly resilient: if the HIS endpoint is down, disposition completes in 37 ms without blocking the clinician.
  • Standards Mapping: Documented direct mapping to HL7 v2 messages (ADT^A02 and ADT^A03) and FHIR R4 resources (Encounter and Observation) in docs/integracion-his.md.

4. Security, Multi-Tenant Hardening & Bug Fixes

Aug 19, 2026

We hardened the platform against cross-tenant data leaks and stabilized the infrastructure for continuous deployments.

  • Cross-Tenant Leak Patched: /api/triage/* and administrative endpoints now strictly enforce requireTriageAccess. Superadmins are completely restricted from viewing patient health records.
  • Idempotent Seed & Ports: Set a deterministic HOSPITAL_ID in prisma/seed.ts, preventing re-seeding from invalidating active JWT sessions. Unified local environment on port 3000.
  • Soft-Locks & Cleanup: Automatic 30-minute soft-lock expiration for abandoned sessions, elimination of legacy Math.random Manchester fallbacks, and purging of sensitive debug logs.

5. Automated Test Suite & Academic Thesis Docs

Aug 19, 2026

We implemented comprehensive test coverage with Vitest and organized technical documentation in docs/ as a robust foundation for the thesis defense.

  • Vitest Suite (31/31 Tests): 24 unit tests (NEWS2/PEWS clinical scoring, lock expiration, HMAC signing) and 7 integration tests on live database (collision-free concurrent queueing and RBAC isolation).
  • docs/ Documentation: Structured docs/ with security audits, AI evaluation protocols (clinical vignette benchmark & confusion matrix), architecture, HIS integration, and master reading index.
  • Code Quality: 0 lint errors, 0 strict TypeScript errors, and flawless Next.js production compilation.
Read more ➔
Aug 3, 2026

Transition to My Own Domain: pablorejon.com, VPS & Professional Email with Zoho

Documenting the consolidation of my self-hosted infrastructure under my new custom domain pablorejon.com. I cover purcha...

Documenting the consolidation of my self-hosted infrastructure under my new custom domain pablorejon.com. I cover purchasing it via Cloudflare Registrar, migrating and reconfiguring DNS/Caddy for all sub-applications on my Hetzner VPS, and setting up professional custom email hosting with Zoho Mail.

1. Cloudflare Registrar & DNS Configuration

Aug 3, 2026

I purchased the pablorejon.com domain via Cloudflare Registrar for its fair pricing and control panel, consolidating my DNS resolution for my entire infrastructure.

  • Domain Registration: Registered the pablorejon.com domain through Cloudflare Registrar, securing Whois privacy protection and direct control.
  • DNS Management: Configured A records to point to my Hetzner VPS, along with CNAME wildcards to route my projects' subdomains.

2. VPS Migration & Caddyfile Updates

Aug 3, 2026

Reconfigured the Caddy web server on my VPS to route all projects and sub-applications under the new domain with automatic HTTPS.

  • Routing Rules: Modified the Caddyfile to replace the old host, mapping individual subdomains (e.g., repon.pablorejon.com) to their respective Docker containers.
  • Vessel Integration: Updated the VESSEL_BASE_DOMAIN variable in my container orchestrator to automatically provision subdomains under the new DNS zone.
  • Football Manager (fm.lab.pablorejon.com): Migrated to the new fm.lab.pablorejon.com subdomain with a permanent 301 redirect in Caddy, removed plaintext credentials from the documentation (README), and validated caddy-register fail2ban rules.
  • Art Gallery (galeria.lab.pablorejon.com): Migrated the gallery app to galeria.lab.pablorejon.com by updating CORS allowed origins in SecurityConfig.java, the base URL in application.properties / docker-compose, and setting up a 301 redirect in Caddy.

3. Professional Email Setup with Zoho

Aug 3, 2026

Established my custom professional email address by linking the domain to Zoho Mail using verification and security records.

  • MX & TXT Records: Added Zoho's MX records for email delivery along with the TXT verification key to prove domain ownership.
  • Email Security (SPF/DKIM/DMARC): Set up SPF records, DKIM signatures, and DMARC policies to guarantee email deliverability and prevent spam classification.
Read more ➔
Jul 17, 2026

Chronicle of a Data Loss (and its Rescue): Sync, Volumes & Encrypted Backups

A detailed technical autopsy of how we suffered and rescued a total user data loss in production. I explore the root cau...

A detailed technical autopsy of how we suffered and rescued a total user data loss in production. I explore the root causes (ephemeral Postgres in Docker and the 'wipe effect' in the sync protocol), the forensic analysis to extract blobs from Brave's LevelDB local storage, and the new defensive architecture featuring anti-wipe guards, database versioning triggers, and off-site encrypted backups.

1. Diagnosis: Ephemeral Postgres & Sync Wipe Effect

Jul 17, 2026

The production system suffered a complete wipe. The root cause analysis revealed a Docker volume misconfiguration and a flaw in our state synchronization protocol.

  • Ephemeral Docker Postgres: The docker-compose.yml failed to link the 'postgres_data' host volume, writing data inside the container's ephemeral storage. Recreating the container reset the database.
  • The Sync 'Wipe Effect': When the database started blank, a clean client (with empty localStorage) logged in and sent a 0 KB POST. The server accepted this empty state, wiping the user's real remote data.

2. The Rescue: LevelDB Forensic Extraction (Brave)

Jul 17, 2026

We recovered a database dump from June 9, but to save the data from June and July, we conducted a forensic extraction from Brave's local storage files.

  • Consistent Dump Restore: Restored the latest consistent database state (June 9) from the local 'database_dump.sql' backup file and recreated the user row in Postgres.
  • LevelDB Forensic Extraction: Located Brave's compressed SSTable files on the local disk and used a Python script (with Snappy decompression) to extract the 'second-brain-storage' JSON blob up to July 1st.
  • Merging & Full Rescue: Merging the dump and LevelDB recovered 119 transactions (90 dump + 29 Brave), 6 recurring flows, 3 active debts, and 132 tasks, habits, and projects progress.

3. Prevention: Safeguards, Triggers & Encrypted Backups

Jul 17, 2026

To immunize the system against future incidents, we designed and implemented a three-tier protection architecture across the backend, database, and external backups.

  • Sync Anti-Wipe Guards: The backend rejects empty /api/state payloads with a '409 Conflict' if remote data exists. In the frontend, Zustand (localWins) forces remote download if the browser cache is blank.
  • DB Versioning Trigger: Table 'app_state_history' and a 'BEFORE UPDATE' Postgres trigger that archives the last 30 state versions per user, enabling instant rollback to the exact second.
  • Automated Encrypted Backups: Daily cron job 'setup_backups.sh' at 04:00 AM performing pg_dump, zipping .md files (PARA), and uploading to Google Drive via rclone with symmetric encryption (gdrivecrypt) and 60-day retention.
  • Manual Frontend Export: Added an 'Export my data' button in the sidebar that downloads a complete local JSON backup of your digital life in one click.
  • Recovery Drill & Takeaway: Experiencing this incident early on was a blessing in disguise, forcing us to harden the system before growing. We performed a complete restore simulation from the encrypted Google Drive backup, and it worked flawlessly in minutes.
Read more ➔
Jul 15, 2026

Visit to Google GSEC Málaga & Chat with Bernardo Quintero

Yesterday we had the great opportunity to visit the Google Safety Engineering Center (GSEC) in Málaga, an incredible exp...

Yesterday we had the great opportunity to visit the Google Safety Engineering Center (GSEC) in Málaga, an incredible experience that we managed to organize ourselves. Getting to know this world-class cybersecurity hub from the inside and chatting with leaders like Bernardo Quintero was an absolute privilege. We were deeply inspired by the history of VirusTotal and seeing firsthand the cybersecurity operations led from Málaga. Proactivity always opens doors!

Read more ➔
Jul 14, 2026

Repón: NFC-Powered Home Inventory & PWA Grocery List

Launching Repón, a lightweight application designed to simplify my family's weekly grocery shopping by combining physica...

Launching Repón, a lightweight application designed to simplify my family's weekly grocery shopping by combining physical NFC stickers in the pantry with an offline-first PWA built in Go and HTMX. Scanning an NFC tag (NTAG213) instantly appends the product to the shopping list of its designated store, syncing in real-time with the interactive list they carry at the supermarket.

Boot Plan: Architecture & Roadmap

Jul 14, 2026

I have defined the project structure and the development plan split into three incremental phases to achieve a functional MVP.

  • Tech Stack: Go 1.22+ (native net/http), CGO-free SQLite (modernc.org/sqlite) for an ultra-lightweight binary, and HTMX for SPA-like responsiveness.
  • NFC Flow & Security: Physical scan opening a URL with an HMAC-SHA256 signed token to prevent malicious data injection. Duplicate tap increases quantity.
  • Real-Time & Offline-First: SSE events for live sync and Service Worker to keep the PWA working offline inside the supermarket, queuing checkmarks.
  • Roadmap (3 Phases): Phase 1: local core functionality. Phase 2: SSE + offline PWA. Phase 3: deployment with Vessel (Hetzner) behind Caddy and writing NTAG213 tags.

Phase 3 Completed: Successful Deployment & Resolving Caddy/Vessel Conflicts

Jul 14, 2026

The project is now fully developed! We overcame a critical networking hurdle during production deployment with Vessel, and we are now just waiting for the physical NFC stickers to arrive for pantry placement.

  • Docker Network Conflict (Caddy API): Caddy secured its admin API (port 2019) to localhost. When vessel-core tried to register Repón via http://caddy-caddy-1:2019, the connection was refused, resulting in an ERR_SSL_PROTOCOL_ERROR.
  • Admin API Solution: Modified the global configuration block in the main Caddyfile (admin 0.0.0.0:2019) to allow admin requests from other containers sharing the VPS private docker network.
  • Base Domain Sync: Adjusted VESSEL_BASE_DOMAIN in the server's .env to the real domain (pablo-server.178.105.2.24.sslip.io), allowing Vessel and Caddy to dynamically provision HTTPS automatically upon deployment.
  • Next Steps: App 100% finished. The PWA is installable and works offline. Pending only the delivery of physical NTAG213 tags to write them and perform the final physical setup.

Debugging Vessel: Environment Variable Injection & Admin Access Fix

Jul 14, 2026

While trying to access Repón's admin panel, we found that the configured ADMIN_PASSWORD was not being injected. This led us to debug and enhance Vessel, our custom PaaS, resolving issues on both client and server sides.

  • Client CLI Issue (vessel.sh): The local CLI script ignored the env block when serializing the deployment JSON payload. We fixed it using a Python inline command inside vessel.sh to correctly map and inject the env field into the POST request.
  • Vessel Backend (vessel-core): The Go API lacked mapping for Env in its AppRequest struct and failed to pass it to the Docker container setup (Config.Env). We added native support to parse and inject env vars when spawning the container.
  • Compilation Path Cache (VPS): Recompiled in vessel-core, but the VPS docker-compose targeted the root path instead. Moving the fixes to the actual root solved the cache and applied the new Go executable.
  • Global PaaS Enhancement: With these changes, Vessel now natively supports and dynamically injects any environment variables into containers, making the platform much more robust and versatile.

Reactive Checkout & Env Var Interpolation in Vessel

Jul 14, 2026

We added two critical enhancements for usability and security: an interactive checkout flow that atomically clears the database and dynamic secret interpolation in Vessel.

  • Smart Clearing (Checkout Flow): Replaced automated scheduled tasks with an interactive flow. Once shopping is done, the user clears checked items (checked = 1) in SQLite via HTMX (POST /items/clear-checked), broadcasting the deletion live via SSE.
  • Secret Interpolation: To avoid exposing credentials in version control, we set up vessel.json with variables like ${FAMILIAR_PASSWORD} and implemented dynamic interpolation using os.ExpandEnv(...) in the VPS Go orchestrator.
  • Secure Production Injection: Vessel now reads the actual secrets from the VPS host .env file and injects them into the Docker container during deployment, keeping the application repository clean of credentials.
Read more ➔
Jul 11, 2026

Automatic Sync with the Revolut API in Organizator

I have discovered that it is possible to connect to the Revolut API to automate the synchronization of my financial tran...

I have discovered that it is possible to connect to the Revolut API to automate the synchronization of my financial transactions. My goal is to implement a background service (a Node.js or Python script) that securely connects to Revolut, fetches bank movements in real time, and logs them directly into Organizator's PostgreSQL database. This will completely eliminate the need to manually enter income and expenses, taking the automation of my personal finance dashboard to the next level.

Phase 1: Real-Time Bank Sync (PSD2 / Open Banking)

Jul 11, 2026

To solve this challenge, I designed and integrated a real-time banking synchronization system using the Enable Banking API (AISP - Open Banking / PSD2) to securely connect Organizator's backend with Revolut.

  • Secure Authorization Flow (OAuth2 / PSD2): Implemented the official bank redirection flow. The backend requests a temporary link, redirects the user to Revolut to authorize accounts, and a callback exchanges the code for long-lived access tokens.
  • Security & Cryptography: Requests signed via JWT (RS256) using a private .pem key mounted on secure Docker volumes. Strictly read-only access (AISP) with zero transaction risk.
  • Background Sync: Automated service in Node.js/Express that runs if more than 4 hours have passed since the last sync when opening the app.
  • Deduplication Algorithm: Filters transactions via deterministic hash and dynamic similarity (dates, exact amounts, text patterns) to avoid duplicating manual entries, featuring auto-cleanup in PostgreSQL.
  • Frontend Consistency: Balance normalization on React (Vite) to update the user's financial pockets instantly.

Phase 2: Reconciliation & Refund Tracking

Jul 11, 2026

To boost the utility of the bank sync, I designed and implemented a Reconciliation Module for Shared Expenses (Bizums / Shared Costs) to manage pending refunds automatically without duplication.

  • Heuristic Smart Matching: Analyzes expenses marked as 'To be refunded' and automatically looks for equivalent incoming transactions (Bizums/transfers) with the same amount in a +/- 7 day window to suggest linking in one click.
  • Category Decoupling: Eliminated UX friction (where incoming Bizums default to 'Other') by allowing the manual search engine to list all income from any category over the past 30 days.
  • Dynamic Auto-Categorization: Upon confirmation, the background state updates linking records with reconciliation flags and automatically applying the 'To be refunded' category to the income.
  • Clutter Reduction: Designed the '✓ Refunded' visual badge and hid resolved movements by default, adding a 'Show refunded' toggle filter for auditing.

Phase 3: 1-to-N Flexible Reconciliation Engine & Mobile-First UX

Jul 13, 2026

To solve the issue of shared expense tracking (Bizums inflating income and distorting expenses), I designed and implemented a flexible 1-to-N reconciliation engine and an optimized mobile UX.

  • Category Decoupling (toReturn Flag): Expenses retain their original category (e.g., 'Parties') while activating an interactive 'Wait for refund?' flag. Stats now compute the actual net spending of that category.
  • Net Spending Engine Algorithm: Computes in real-time: Net Spending = max(0, Original Expense - sum(Bizums Received)). If it reaches 0.00 €, it is automatically hidden from the main feed to eliminate visual noise in category charts and Sankey diagrams.
  • Smart Reconciliation Assistant: Scans transactions within a ±15-day range to suggest automatic matches. If ignored by the user, it reveals a manual selector with search capabilities extended to the last 45 days.
  • Mobile-First Consistency (MobileDevoluciones): Migration of complex flows to the dedicated MobileDevoluciones view, adapting container heights dynamically via elastic padding to prevent text clipping in Safari iOS and Android.

Phase 4: Financial Reengineering, Projections & Smart Reconciliation

Jul 16, 2026

We performed a deep restructuration of Organizator's financial module, simplifying the UI, implementing a future net worth projection engine, and refining transaction reconciliation & amortization.

  • UI Simplification & Cleanup: Removed redundant tabs (Balance/Budgets). Directly integrated debts and Net Worth into the main sidebar. Relocated the asset Donut Chart to the Annual tab in a two-column grid alongside insights.
  • Net Worth Simulator: Predictive engine (useMemo) projecting 6, 12, or 24 months of pocket balances by accounting for recurring flows, debt amortization, and temporary manual simulated events. Displayed via SVG trend chart (FinProjectionChart) and monthly breakdowns.
  • Smart Reconciliation & Conversion: Allows linking recurring flows with real bank records. Automatically converts bank expenses/income into internal Movements (like transfers to TradeRepublic or Indexa) under the same unique ID to prevent duplicates in bank synchronization.
  • Live Amortization & Actions ⋯: Amortizes the actual balance of debts in real time upon confirming linked transactions. Reduced visual noise by hiding mass actions behind a tidy dropdown ⋯ menu with click-away auto-close and ellipsis text truncation.
Read more ➔
Jul 10, 2026

Blog Start

Officially launching this corner where I will actively share my development notes, technical reflections, project ideas,...

Officially launching this corner where I will actively share my development notes, technical reflections, project ideas, and daily learning.

Read more ➔