DEV Community

Cover image for I built a real-time police custody platform. From a ThinkPad. In Bolivia.
t474-r0b07
t474-r0b07

Posted on

I built a real-time police custody platform. From a ThinkPad. In Bolivia.

I built a real-time police custody platform. From a ThinkPad. In Bolivia.

Not a side project. Not a tutorial clone. Not a hackathon demo.

This is SCCP — Sistema de Control y Custodia Policial.

A tactical real-time monitoring platform deployed in an active law enforcement institution.


The problem

Custody operations run on paper, radio, and memory.

Officers in the field have no real-time coordination layer.

Supervisors have no visibility until something goes wrong.

When something goes wrong, there's no audit trail.

I was told to fix that.


What I built

Three surfaces. One operational truth.

SCCP ECOSYSTEM
├── WebApp          → tactical HUD · dashboard · central command
├── DTEX Custodio   → Android · field · GPS · reports
└── DTEX Supervisor → Android · mobile command · live alerts
Enter fullscreen mode Exit fullscreen mode

One Flutter codebase. One Supabase backend. Real-time updates under 1 second.


The stack

Flutter Web + Android (Dart)
Supabase — PostgreSQL + Realtime WebSockets
GetX — reactive state management
Clean Architecture — Presentation / Domain / Data
flutter_map — CartoDB Dark Matter tiles
Enter fullscreen mode Exit fullscreen mode

UI palette: #00FFD1 cyan · #FF006E pink · #0A0E27 base

Fonts: Orbitron (headings) · Rajdhani (data)

Effects: glassmorphism · pulse · hover glow · scanner overlay


The part that actually matters

I didn't add security features after the fact.

I modeled threats before writing the first widget.

ATTACK VECTOR      MITIGATION
──────────────     ──────────────────────────────────────
GPS Spoofing    →  Inconsistent coordinate detection
Shoulder Surf   →  Random shuffle PinPad on every use
Unauth access   →  Email + PIN · allowed_admins table
Escalation      →  Strict SUPERVISOR / DIRECTOR roles
VPN / Proxy     →  Network interface fingerprinting
Traceability    →  Full audit trail with timestamps
Enter fullscreen mode Exit fullscreen mode

Built with offensive thinking. Every feature is a countermeasure.


The numbers

~2,500 lines of code
5 main views · 15+ reusable widgets
<1 second real-time latency
100+ concurrent users supported
500+ monitored officers
2 independent APKs (Custodio · Supervisor)
13 weeks from monolith to Android fork
Enter fullscreen mode Exit fullscreen mode

What I learned

Designing for people who don't trust technology is harder than any technical problem.

The PinPad shuffles on every use — not because I read about it somewhere.

Because I watched how people use PINs in high-stress environments.

Real-time is useless if it's not trusted.

Trust is useless if it's not earned through consistency.

The system had to be right every single time.

Not most of the time. Every time.


The uncomfortable part

I built this alone.

One developer. One ThinkPad T420. Linux Mint. No team. No budget.

The institution had a deadline tied to a national exposition.

I hit it.


What's next

[ PHASE 2 ]  Inmates module · Mapbox · PDF export
[ PHASE 3 ]  KPI dashboard · Supervisor chat · Multi-tenant
[ PHASE 4 ]  ML analytics · Public API · iOS support
Enter fullscreen mode Exit fullscreen mode

See it running


Code is not open source. The architecture is.

The repo is the evidence. The system is the argument.

— t474-r0b07




Top comments (0)