Skip to content

EnricoVadilonga

>

Full-stack web products in TypeScript.
Distributed systems, geospatial, and military C2 protocols in Rust.

Explore projects

§2

About

Engineer specializing in distributed systems and full-stack web products. From military C2 protocols to real-time peer-to-peer, from tactical pathfinding to multi-client SaaS.

enrico@portfolio
Expertise

    §3

    C2 Systems

    Four components. One integrated system in Rust speaking JDSS and DIS v7.

    Ermes

    Event Ingress + Inject Gateway

    RUSTTOKIOASYNCJDSSDIS v7

    The C2 system's entry/exit portal. Receives raw military traffic via UDP unicast and multicast, validates, normalises, and distributes it to downstream consumers via broadcast bus and TCP push. Exposes a TCP ingest pipeline that accepts XML injections from internal components and forwards them UDP to whitelisted partners.

    • 7+ independent modular crates
    • YAML-configurable pipelines
    • Backpressure-aware (MPSC bounded)
    • 44 DIS v7 PDU types
    • Partner whitelist for UDP inject
    • Session replay via Message Recorder
    Ingress
    UDP :9000
    Push
    TCP :9100
    Ingest
    TCP :9200

    Atlante

    Recorder + Tactical REST API

    RUSTSQLITETOKIOAXUMDIS v7

    The system's memory. Connects to Ermes' TCP push, converts JDSS messages to DIS v7 PDUs, and persists them in a SQLite database with session management and an interactive SQL REPL. A second binary atop the DB exposes a REST API (Axum) providing real-time tactical state to Arianna.

    • 3 crates: jdss-dis (lib) · recorder · api
    • WGS-84 ↔ ECEF (NIMA TR8350.2, no lib)
    • Session resume with entity mapping warm-load
    • Trait-based EntityResolver (swappable impl)
    • Interactive SQL REPL + --query mode
    • API serves Arianna directly for reads
    API
    :8081
    Tables
    13
    PDU types
    5+

    Arianna

    Tactical Pathfinding Engine

    RUSTAXUMGDALRAYONA*

    The tactical brain. Computes optimal paths for land, air, maritime, and submarine assets over real geospatial terrain, accounting for elevation, threats, weather, sensor coverage, and restricted zones. Tactical state is read exclusively from Atlante's REST API: no state duplication.

    • 4-layer cost model (slope · terrain · threat · obstacles)
    • LOS-aware threat map (Bresenham)
    • Grid assembly 2.8× speedup (Rayon)
    • Copernicus GLO-30 DEM · ESA WorldCover
    • OSM buildings/roads (Geofabrik)
    • Target latency < 1s per request
    500k cells
    108 ms
    1M cells
    10 ms
    API
    :8000

    Latacc

    JDSS IEM Tactical Node

    RUSTTOKIOAEP-76JDSS IEMREPATH

    The node's tactical voice. Embodies a single field unit (e.g. ROMEO1) and speaks JDSS IEM (AEP-76 / ADatP-36A) with network partners. Connects to Ermes on two channels, orchestrates the REPATH cycle end-to-end with Atlante and Arianna, and manages state (HeartBeat, Presence, Sync).

    • Fixed GatewayID · SessionID renewed on each start
    • Configurable tactical identity (OID + callsign)
    • Auto-reconnect to Ermes channels with backoff
    • Handlers for Presence · Identification · Overlay · GenInfo · Sync
    • REPATH cycle: partner → latacc → arianna → partner
    • End-to-end C2 system glue layer
    HeartBeat
    30s
    Presence
    30s
    Protocol
    AEP-76

    §4

    Projects

    From code to product. The civilian side of the stack: full-stack, real-time, multi-client.

    Live standingsR18
    #1Marco R.18
    #2Anna B.15
    #3Luca M.12
    #4Giulia P.10
    #5Davide T.8

    Organizza un Torneo

    Tournament Management Platform

    • Admin WebAngular 19
    • User WebNext.js 15
    • Mobile AppFlutter
    Angular 19Next.js 15FlutterSupabaseDeno

    Full-stack platform for end-to-end tournament management, distributed across three clients + a shared serverless layer. Angular dashboard for organizers, public Next.js experience for web-only users, Flutter companion app for participants, shared Supabase + Deno Edge Functions backend.

    • Bracket visualization (ngx-graph + leader-line)
    • Real-time state synced across all clients
    • Mobile push notifications (Flutter + FCM via Supabase fn)
    • Admin analytics dashboard (ApexCharts)
    • PDF export of brackets / results (pdfmake)
    • Unified Supabase auth across all clients
    ● REC
    Ch · 01

    Walkie-Talkie

    Live Voice Translation · 11 Languages · NextV

    Next.js 15LiveKitAzure SpeechAzure TTSWebRTCSupabase

    Live voice translation platform covering 11 languages. Azure Speech Translation transcribes and translates in real time (1 WebSocket, N simultaneous languages), Azure Neural TTS synthesizes translated audio with backlog-adaptive SSML rate, LiveKit SFU distributes the synthesized audio to all listeners. STT+TTS cost fixed per sentence, listener-count independent.

    • Azure Speech Translation: 1 WebSocket, N simultaneous languages
    • Azure Neural TTS with backlog-adaptive SSML rate (natural/balanced/aggressive presets)
    • LiveKit SFU distributes TTS audio: STT+TTS cost fixed per sentence
    • Captions synced to actual TTS duration
    • Custom AudioWorklet: PCM Float32→Int16 @ 16kHz for Azure Speech
    • Mobile background audio: WakeLock + Media Session + silence loop

    §5

    Stack

    Technologies I use, mapped by co-occurrence across projects.

    • Frontend

      • TypeScript3 projects

        Organizza un Torneo · Walkie-Talkie · Portfolio

      • Next.js3 projects

        Organizza un Torneo · Walkie-Talkie · Portfolio

      • React3 projects

        Organizza un Torneo · Walkie-Talkie · Portfolio

      • Angular1 project

        Organizza un Torneo

      • Flutter1 project

        Organizza un Torneo

      • Tailwind1 project

        Portfolio

    • Backend

      • Supabase2 projects

        Organizza un Torneo · Walkie-Talkie

      • Deno1 project

        Organizza un Torneo

    • Real-time

      • LiveKit1 project

        Walkie-Talkie

      • WebRTC1 project

        Walkie-Talkie

      • Azure Speech1 project

        Walkie-Talkie

      • Azure TTS1 project

        Walkie-Talkie

    • Data

      • SQLite1 project

        Atlante

      • PostgreSQL2 projects

        Organizza un Torneo · Walkie-Talkie

    • Rust ecosystem

      • Rust4 projects

        Ermes · Atlante · Arianna · Latacc

      • Tokio3 projects

        Ermes · Atlante · Latacc

      • Axum2 projects

        Atlante · Arianna

      • Rayon1 project

        Arianna

      • GDAL1 project

        Arianna

    §6

    Contact

    Enrico Vadilonga · octode.org@gmail.com

    contact://transmission
    ~/portfolio $echo "Got a project in mind?"
    >Drop me a line and I'll get back to you soon.

    Octode