Premium frontend Reliable backend Linux servers Advanced deploys Operations and maintenance Verified projects Premium frontend Reliable backend Linux servers Advanced deploys Operations and maintenance Verified projects Premium frontend Reliable backend Linux servers Advanced deploys Operations and maintenance Verified projects
.dev
01

Design

Context boundaries, API contracts and trade-offs settled up front.

02

Build

Strict typing, bounded transactions and idempotent writes.

03

Management

SLOs with error budgets, declarative IaC and rehearsed rollback.

Available for architecture and platform work

Pablo José Ascanio

Software engineer with 10 years building and operating production web systems. I cover the full cycle: from the domain model to the server that keeps it running.

I work the whole system: interface, API, data and the infrastructure that runs them. I administer Linux servers, TLS, reverse proxies, deployment pipelines and ongoing management.

Nationality
🇻🇪 Venezuelan
Based in
Venezuela · UTC-4
Working mode
Remote, async-first
Frontend Backend Servers CI/CD Operations
Selected work

Systems built

Software running in production, built for clients who own the source. That is why nearly every repository is private: instead of code, you get the architecture, the stack, the engineering decisions holding each system up, and screenshots of the product at work.

Private repository

e-IBS Core Banking

2026

Modular modernisation of a legacy banking core

  • Java 21
  • Spring Boot
  • Angular
  • PostgreSQL
  • Docker
Electorium administration dashboard with the election summary Private repository 2

Electorium

2026

Anonymous, verifiable electronic voting on a purpose-built blockchain

  • Go
  • Templ
  • SQLite
  • RSA · SHA-256
  • Tailwind
ZIOM workspace showing the agent council, the context window and recent activity Public repository

ZIOM

2026

Agent council that decides whether code should be written at all

  • Go
  • Multi-agente
  • ADR
  • MIT
Private repository

EchoPress

2026

White-label editorial CMS built to replace WordPress

  • React 19
  • TanStack Start
  • TypeScript
  • PostgreSQL 16
  • Docker
Sierrane management panel sign-in Private repository

Sierrane

2026

Sales and collections management on Laravel 12

  • Laravel 12
  • Livewire 4
  • Flux UI
  • PostgreSQL
  • Tailwind
Safipuv administration sign-in Private repository

Safipuv

2026

Church administration migrated off Filament

  • Laravel 12
  • Livewire 4
  • Alpine.js
  • PostgreSQL 15
  • Pest 4
Iglesia Total administration sign-in Private repository

Iglesia Total

2026

Records, treasury and audit rebuilt on TanStack Start

  • TanStack Start
  • Drizzle ORM
  • PostgreSQL 17
  • better-auth
  • shadcn/ui
Home page of the IPUV.org institutional portal Private repository

IPUV.org

2026

Institutional portal running on the EchoPress platform

  • React 19
  • TanStack Start
  • PostgreSQL
  • Docker
Piano IPUV chord study with keyboard diagrams Private repository

Piano IPUV

2026

Piano chord study app with an interactive keyboard

  • React 19
  • TanStack Start
  • PostgreSQL
  • Docker
2026 Private repository

e-IBS Core Banking

Translates screens from the client legacy e-IBS DataPro banking core, running on AS/400, into a modular Java 21 and Spring Boot architecture. It starts from one bounded reference module — Treasury Parameters — to prove the migration path before committing the rest of the core.

Key decisions

  • A real legacy module as the test case: the full migration path is proven before scaling it, not after.
  • Java 21 and Spring Boot backend with an Angular frontend on a bespoke design system, deployable on client infrastructure.
  • Docker-first: the environment comes up identically on every machine, with no manual installs to drift apart.

Stack

  • Java 21
  • Spring Boot
  • Angular
  • PostgreSQL
  • Docker
Electorium administration dashboard with the election summary

Administration dashboard: elections, rounds, terminals and roll.

2026 Private repository

Electorium

A voting system that resolves the central tension of any electronic election: a vote must be anonymous and auditable at once. It uses blind signatures to separate the voter from the ballot, and a Merkle-tree blockchain so no record can be altered afterwards.

Key decisions

  • Blind signatures and cryptographic commitment: the system verifies your right to vote without learning how you voted.
  • Purpose-built Merkle-tree blockchain over SQLite: every tally is chained and the dashboard monitors integrity live.
  • Autonomous 15-16" touch terminals, the interface adapting from 1 to 8 candidates with no scrolling, plus a printed receipt.

Stack

  • Go
  • Templ
  • SQLite
  • RSA · SHA-256
  • Tailwind
ZIOM workspace showing the agent council, the context window and recent activity
2026 Public repository

ZIOM

Other AI agents optimise for first-draft speed. ZIOM optimises for decisions that still hold up six months later: five specialised agents study the request, weigh security, cost and maintainability, and only then propose a plan. MIT licensed.

Key decisions

  • Five specialised agents — architect, coder, reviewer, researcher and planner — deliberate before the first file is written.
  • A one-million-token window: the whole project fits in context instead of reasoning over scattered fragments.
  • Every architecture decision is recorded as a validated, traceable ADR. Go engine, MIT licensed.

Stack

  • Go
  • Multi-agente
  • ADR
  • MIT
2026 Private repository

EchoPress

An in-house editorial platform built to stop depending on WordPress: publishing, moderation, SEO, advertising and an AI copilot in one product. It is white-label by design, so each brand ships as an instance with its own identity, without forking the codebase.

Key decisions

  • One base, many brands: production sites are configured instances, not repository copies that drift apart.
  • React 19 and TanStack Start over PostgreSQL 16, server-rendered so SEO does not depend on plugins.
  • Light and dark themes, Spanish and English, and responsive design solved in the platform, not per deployment.

Stack

  • React 19
  • TanStack Start
  • TypeScript
  • PostgreSQL 16
  • Docker
Sierrane management panel sign-in
2026 Private repository

Sierrane

A sales and collections system where the number that matters is the balance: every operation has to reconcile. Built with Laravel 12 and Livewire 4 over PostgreSQL, with the interface solved in bespoke components rather than a generic admin panel.

Key decisions

  • Sales and collections in one domain: the account balance is derived from operations, not kept alongside them.
  • Livewire 4 with Flux UI: reactive interaction without a separate client app to keep in sync.
  • PostgreSQL as the source of truth, with consistency rules in the database and not only in application code.

Stack

  • Laravel 12
  • Livewire 4
  • Flux UI
  • PostgreSQL
  • Tailwind
Safipuv administration sign-in
2026 Private repository

Safipuv

A full rewrite of an administrative system that depended on Filament v5. The migration replaced a third-party panel with in-house Livewire components: the interface is no longer tied to an external library release cycle, and the team owns the front end again.

Key decisions

  • Exit from a third-party UI dependency: maintenance cost became an in-house decision instead of someone else’s.
  • Shared behaviour extracted into reusable traits — tables with search, sorting and pagination persisted in the URL.
  • Native dark mode and a Pest 4 test suite over Laravel 12, Livewire 4 and PostgreSQL 15.

Stack

  • Laravel 12
  • Livewire 4
  • Alpine.js
  • PostgreSQL 15
  • Pest 4
Iglesia Total administration sign-in
2026 Private repository

Iglesia Total

Rebuild of an administrative system that ran on Laravel and Filament. It covers records, treasury — offerings, weekly and monthly closes, daily ledger, accounting codes — and audit, with the data model typed end to end from the database to the form.

Key decisions

  • Real accounting: period closes, daily ledger and accounting codes, where an imbalance is a defect, not a detail.
  • Continuous typing with Drizzle over PostgreSQL 17: schema and forms share a single definition.
  • Authentication via better-auth with passwords and one-time codes, kept separate from business logic.

Stack

  • TanStack Start
  • Drizzle ORM
  • PostgreSQL 17
  • better-auth
  • shadcn/ui
Home page of the IPUV.org institutional portal
2026 Private repository

IPUV.org

Editorial portal for a national organisation, deployed as an EchoPress instance. Server-rendered public site, administration panel and headless API under one domain, with no separate codebase drifting away from the platform.

Key decisions

  • An instance, not a fork: every platform improvement reaches the portal without hand-migrating code.
  • Ghost-compatible data schema, which keeps both the content import and export doors open.
  • Server-rendered so indexing and first paint do not depend on client-side JavaScript.

Stack

  • React 19
  • TanStack Start
  • PostgreSQL
  • Docker
Piano IPUV chord study with keyboard diagrams
2026 Private repository

Piano IPUV

A music-learning product built on the same editorial platform: a chord catalogue by note and category, keyboard diagrams, search and a study guide. It proves the engine can carry a vertical product with its own domain, not just a blog under another brand.

Key decisions

  • Its own domain over the shared engine: chords by note, categories (major, seventh, suspended, altered) and keyboard diagrams.
  • Spanish and English plus light or dark theme switchable in the UI, inherited from the platform rather than reimplemented.
  • Its own search and subscription: the site works as a product, not as a content showcase.

Stack

  • React 19
  • TanStack Start
  • PostgreSQL
  • Docker
Engineering Competencies

Technical Mastery Matrix

The language is chosen for the problem, not out of habit. Here is what I build each layer with — from transactional processing to the interface — and what each tool actually solves best.

Backend & Systems

Server-side languages: business domain, data, processing and APIs.

9 technologies

PHP

The workhorse for management systems: invoicing, inventory, collections and admin panels that run every single day.

  • PHP 8
  • Composer
  • PSR-12
  • Pest

Java

For systems where a bug costs money: banking cores, transactional processing and services expected to run for years without a rewrite.

  • Java 21
  • Spring Boot
  • JPA
  • Maven

Python

Where the job is moving and reshaping data: batch processing, reconciliation, automation and integrations between systems that do not talk.

  • Python 3
  • Django
  • Pandas
  • CLI

Rust

When performance and memory safety are non-negotiable: the compiler rejects entire classes of bugs before they ever reach production.

  • Rust
  • Cargo
  • Tokio
  • CLI

Go

Services that compile to a single binary and deploy with no dependencies: ideal for running on the client site, even with no network.

  • Go
  • Templ
  • Goroutines
  • SQLite

JavaScript

The one language that runs in the browser and on the server: a single data model and a single validation shared by both halves of the product.

  • Node.js
  • TypeScript
  • ESM
  • Vite

Backend frameworks

What keeps you from rewriting authentication, permissions, migrations and queues on every project.

Laravel

The framework that takes a management system from zero to production fastest: authentication, queues, permissions and admin panel already solved.

  • Laravel 12
  • Livewire 4
  • Eloquent
  • Pest

Django

When the system lives off its data: the admin panel is generated from the model, so back-office management exists from day one.

  • Django
  • DRF
  • ORM
  • PostgreSQL

Spring Boot

The banking and enterprise standard on the JVM: transactions, security and legacy integration with guarantees an auditor will accept.

  • Spring Boot
  • Spring Security
  • JPA
  • Maven

Frontend & UI Architecture

Platform fundamentals, language, tooling, state and quality.

13 technologies

HTML

The platform ships native dialogs, popovers and disclosures. Using them removes kilobytes of brittle JavaScript and the accessibility bugs every UI library dragged along.

  • <dialog>
  • Popover API
  • ARIA
  • Forms

CSS

Nesting, :has() and container queries made preprocessors obsolete. A component adapts to its container instead of the viewport, and @layer ends the specificity wars for good.

  • :has()
  • @container
  • @layer
  • Grid

TypeScript

Dynamic JavaScript accrues debt because nobody refactors blind with confidence. Strict typing turns the backend contract into something the compiler checks, rather than something you hope holds.

  • TypeScript
  • strict
  • Zod
  • Generics

Tailwind CSS

It kills bloated stylesheets full of dead code and the runtime cost of CSS-in-JS. Only the classes you use get compiled, so there are no global collisions and no CSS nobody dares delete.

  • Tailwind v4
  • Tokens
  • Dark mode
  • No runtime

Vite · Rolldown

Replaces Webpack and Babel pipelines that took minutes to boot and configs nobody wanted to touch. With the bundler rewritten in Rust, the edit-and-see cycle stops being a bottleneck.

  • Vite
  • Rolldown
  • HMR
  • ESM

TanStack Query

Fixes the anti-pattern of stuffing network responses into a global store. Loading states, errors, deduplication and revalidation stop being hundreds of race-prone lines.

  • TanStack Query
  • Caching
  • SWR
  • Optimistic UI

Playwright

Ends the flaky suites that depended on arbitrary waits. Auto-waiting and hermetic browser contexts make end-to-end tests something you can actually trust to block a deploy.

  • Playwright
  • E2E
  • Tracing
  • CI

Frontend frameworks

They decide where rendering happens and how reactivity is orchestrated. The stack above holds them up.

React

The base everything I build on TanStack Start runs on. With Server Components the heavy logic moves back to the server and the browser only receives what genuinely needs to interact.

  • React 19
  • TanStack Start
  • RSC
  • Hooks

Next.js

Server Components run data access on the server and ship zero JavaScript for every non-interactive component. No more megabytes just to paint a nearly static view.

  • Next.js
  • RSC
  • SSR
  • Streaming

Astro

Not every site needs to be an SPA. Islands architecture ships plain HTML and hydrates only what genuinely interacts, which is what keeps Core Web Vitals healthy.

  • Astro
  • Islands
  • SSG
  • Core Web Vitals

Livewire

Reactive UI without standing up a separate client app. State lives on the server, so there are no two data models to keep in sync and no intermediate API to maintain.

  • Livewire 4
  • Blade
  • Alpine.js
  • Flux UI

FilamentPHP

Stands up a full admin panel over Laravel in hours: resources, tables, forms and permissions already solved. The price is coupling your interface to the package release cycle, and that is a call to make deliberately.

  • Filament
  • Resources
  • Tables
  • Forms

Angular

A fully opinionated framework: dependency injection, routing, forms and HTTP all come decided. On large teams that stops every module from inventing its own architecture.

  • Angular
  • RxJS
  • Angular Material
  • DI

Databases

Engines, cache and data models: where state lives and under what guarantees.

6 technologies

MySQL

The engine already running in most of the legacy systems I inherit. Migrating away is rarely the answer: the answer is understanding the indexes and the queries someone left unoptimised.

  • MySQL
  • InnoDB
  • Indexes
  • EXPLAIN

PostgreSQL

My default when the data matters. Constraints, transactions and serious types let business rules live in the database instead of depending on every application remembering to enforce them.

  • PostgreSQL 17
  • PL/pgSQL
  • CTEs
  • Indexes

MongoDB

It fits when the schema changes often and each document is read whole: catalogues, events, logs. It stops fitting the moment you need to join collections or guarantee consistency across them.

  • MongoDB
  • Aggregation
  • Documents
  • Indexes

SQLite

A complete database inside one file, with no server to administer. It is what lets a system run on the client site with no network and no dependency on someone else’s infrastructure, as in Electorium.

  • SQLite
  • WAL
  • Embedded
  • Offline

Redis

It absorbs the repeated work that never needed to reach the database: sessions, cache, queues and rate limits. Used well, half a system’s slow queries simply stop running.

  • Redis
  • Cache
  • Queues
  • TTL

JSONB

PostgreSQL’s binary document type: it stores flexible structures and indexes them with GIN, without leaving SQL. It saves you from running a separate document store just because a few fields vary.

  • JSONB
  • GIN
  • PostgreSQL
  • Flexible schema
Capabilities

The full cycle

From the first conversation to year-three maintenance. Every stage rests on the stack, the infrastructure and the systems shown above on this page: follow the link and check it.

  1. Let’s talk

    01

    It starts with a conversation, not a quote. Understanding the real problem, the constraints and what happens if it goes unsolved usually changes the solution before the first line is written.

    • Descubrimiento
    • Alcance
    • Restricciones
    • Riesgos
    Get in touch
  2. Architecture

    02

    I model the domain and settle boundaries and contracts before any code. Decisions are written down with their trade-offs, so they can be argued and reversed without archaeology.

    • Límites de contexto
    • Contratos de API
    • Modelado de dominio
    See what backs it
  3. Build

    03

    Interface, API and data as one system typed end to end: bounded transactions, idempotent writes and queries that do not grow unchecked.

    • TypeScript
    • Laravel
    • Go
    • React
    See what backs it
  4. Data

    04

    Business rules live in the database, not in the hope that every application honours them. Cache absorbs the repeated work so the engine only does what matters.

    • PostgreSQL
    • MySQL
    • Redis
    • JSONB
    See what backs it
  5. Delivery

    05

    From container to domain: reproducible environments, TLS, reverse proxies and deploys that repeat identically and roll back without drama.

    • Docker
    • Nginx
    • Cloudflare
    • CI/CD
    See what backs it
  6. Management

    06

    A delivered system is not a finished one. Administered servers, backups proven by restoring them, and evolutionary maintenance for as long as the product lives.

    • Linux
    • Observabilidad
    • Respaldos
    • Rollback
    See what backs it
Testimonials

The people who use the systems

The people who open these systems every day to do their work. No scores and no stars: what they describe is what changed in their routine once the system went live.

  • We used to close the month going through notebooks and calling each collector one by one. Now I open the system and the balance is right there, with who paid and who did not. What I appreciate most is that when something does not add up, Pablo looks at it the same day.
    Vilma Mejías Administration — Sierra Nevada Sierrane
  • I asked for something simple so the kids could study chords without depending on me. It turned out better than I pictured: they go in, pick a note and see the keyboard. Several of them now practise on their own at home, and that never used to happen.
    Teudis Hernández Music education — Piano IPUV Piano IPUV
  • The weekly close used to take me a whole afternoon between spreadsheets. Today I do it in a while and the daily ledger balances. When we asked for a change in the accounting codes, we did not have to explain twice what it was for.
    Brenda Camacho Treasury — IPUV Cordero Central Iglesia Total
  • We came from a system where every update broke something. Pablo rebuilt it and since then we have worked without worry. It is not just that it works: it is that you ask a question and someone answers who understands the problem.
    Oswald Rondón Administrative coordination — Safipuv Safipuv
  • The trial went perfectly. The terminals ran with no internet all day and at closing we had the results with their backup. Being able to show that every vote was recorded and that nobody knows who voted for what — that is what convinced people.
    Juan Colmenares Electoral process coordination Electorium
Contact

Let’s talk architecture and product

If you need to sort out an architecture, build a product or stabilise a platform already running in production, tell me the problem. You get an honest read back: whether I can solve it, what I would do first, and how long it takes.

I answer personally, usually the same day.