SpartanDev ES Contact

I connect systems.
I build products.

Platform & security Integration & hardware Product & automation
SpartanDev: a silver Spartan helmet with crimson circuit traces

Selected projects

Different technologies

MCP panel: SQL permissions granted per object, with free-form SQL disabledOpen the screenshot
Platform and AIIn production

MCP servers for ERP

Connects SAP HANA, SQL Server and SAP Service Layer to AI assistants. Permissions are checked in the server and in the database itself, so the assistant only sees what the user could already see, and every query is logged.

TypeScriptNode.jsMCPSAP
Technical details

The challenge

Open up the ERP while keeping control over which data each person can query.

What I built

Central authentication, permissions per source and object, read-only SQL analysis, and a log of every query. The control is enforced both in the database privileges and in the MCP server.

Image: real interface with fictitious data. Source code is private.

LoginService terminal: the token family rotating and being revoked after reuse is detectedOpen the screenshot
Identity and securityIn production

LoginService

Shared authentication for web, Flutter and MAUI applications. It checks passwords with the same encryption the previous system already used, so existing users sign in without being migrated, and token rotation shuts down a stolen session as soon as someone reuses it.

C#.NET 8JWT RS256Entra ID
Technical details

The challenge

Unify legacy and modern applications without migrating users or handing the ERP credentials to the client.

What I built

A four-layer service that checks passwords with the previous system's encryption. Every refresh token rotates when used; if a spent one reappears, its whole family is revoked. Consumers validate the signature with a public key.

Image: a real run, with in-memory stores and neutralised data. Source code is private.

SmartAccess front-end with filters and a table of demonstration clock-insOpen the screenshot
Hardware and integrationService in use

SmartAccess

An access control and attendance platform for HIKVISION readers. It enrols users by card, fingerprint, face or PIN on the chosen readers, gathers clock-ins from every device, and automates scheduled openings, revoking expired credentials and alerts when a reader stops reporting.

PythonFastAPISQL ServerISAPI
Technical details

The challenge

Manage access and attendance across several entrances with HIKVISION readers whose real behaviour did not match their documentation. I analysed the traffic from their official software to reconstruct the protocol.

What I built

A panel in four areas: the day's clock-ins with filters and export; users with card, fingerprint, face or PIN, created on each chosen reader; devices with status, sync, history and remote opening; and automations such as scheduled openings, enrolment from bookings, a nightly purge of expired credentials and an alert when a reader stops reporting.

Underneath, a central hub deduplicates events, keeps every discard with its reason and extracts the JSON from malformed bodies. A new reader is registered with a stored procedure, with no code to deploy.

Image: front-end with fictitious data. The integration itself is in use. Source code is private.

BuzzBrew: the coffee shop and business scene from the store artwork Open the screenshot
Mobile productOn Google Play

BuzzBrew

An idle game for Android with in-app purchases, rewarded ads and content in Spanish and English. Progress is saved on the device and in the cloud with an optional account, so nobody has to sign up to play, and purchases are protected against duplicates.

FlutterDartFirebaseGoogle Play
Technical details

The challenge

Turn a game into a complete product: monetisation, persistence, privacy, testing and crash tracking.

What I built

Services kept apart from the game loop, local and cloud saves with an optional account, and protection against duplicate purchases after a crash surfaced one in Crashlytics.

Published on Google Play. Art and music created with AI tools and editing; full credits on the game's own page.

The game's page and credits
ReventaBot catalogue with four processed products and tagging filtersOpen the screenshot
Automation and AIDaily use

ReventaBot

Collects products posted on Telegram and turns them into catalogues ready to sell. AI vision finds the price in each image even though every distributor puts it somewhere different, then the configured margins are applied and the final image is composed.

PythonAI visionFlaskCloudflare
Technical details

The challenge

Every distributor puts prices and specs somewhere different, so a fixed crop does not work for all of them.

What I built

The AI returns the price and its coordinates; Pillow composes the labels. The system groups photos by product and applies configurable margins. The panel runs on a VPS behind Cloudflare Tunnel and Access.

Image: real panel, with a demonstration catalogue and distributor. Source code is private.

Clientools: a real result of removing the background from a photograph of a dogOpen the screenshot
Web toolsWorking, not deployed

Clientools

23 image, PDF, GIF and utility tools that run in the browser with WebAssembly, Canvas and Web Workers. Files are processed on the user's own device and never uploaded, which protects their privacy and spares the server that work.

AstroTypeScriptWebAssemblyWorkers
Technical details

The challenge

A single-core VPS with 2 GB of RAM could not take on processing visitors' files.

What I built

I moved the computation to the user's device: the bilingual site is static, and the tools download their engines but never upload the files they process.

Image: a real result from the local build. Built and working; not deployed yet. Sample photo: Pexels #27791537.

Also on my desk

CRM Tienda

Inventory, credit sales and collections. Instalments, partial payments, and reminders worded according to the balance and the due date.

Solo development
FastAPI / SQLAlchemy / Jinja2
Working, private code

Caballero de Nadie

A 2.5D narrative game. A knight wakes with no memory in a village he destroyed himself. Early systems for combat, impact and player control.

Design and programming
Unity 6 / C#
Early development

Decisions that keep
working afterwards.

The permission lives in the system.

Access control, token signing and auditing, so services connect with clear limits.

MCP for ERP

The hard cases count.

Duplicates, malformed bodies and explainable discards are part of the design.

SmartAccess

The constraint shapes the solution.

A small server led to processing files in the browser, and to privacy built into the architecture.

Clientools

SpartanDev

Joaquín Cabrera.

Software developer

I work between business systems and products of my own. What interests me is how the pieces connect: the data, the permissions, the device, and the experience of whoever uses it.

This portfolio gathers my contribution to private platforms alongside projects I have built on my own, each with its status in plain sight.

Tell me what you
need to build.

sptndev@gmail.com