DOMOVINA.tv / DOMOVINA.ai
2025 — PresentFounder & sole engineer
AI-native Croatian media platform of 30+ public repositories, built end-to-end by one engineer. An automated pipeline (Whisper.cpp on Metal, NVIDIA Canary on Colab GPUs, pyannote diarization, Gemini via multi-region Vertex AI) has processed 3,034 podcast episodes across 46 channels into 137,451 semantic RAG chunks, searchable through a public MCP server and a Flutter app that ships to web (WASM), iOS, Android and Android TV.
- RAG search with bge-m3 embeddings in ClickHouse (HNSW, ~10–50 ms) + PostgreSQL metadata; production MCP server with OAuth, rate limiting and an audit dashboard
- pay.domovina.ai — three payment formats from one form (SEPA EPC QR, Croatian HUB3 PDF417, EIP-681) with Safe 2/3 multisig routing of Monerium EURe on Gnosis Chain
- klubovi.domovina.ai — open catalogue of 901 Croatian football clubs, 100% geocoded, ingested from 6+ sources (incl. TLS-fingerprint-aware scraping) with AI-audited 89–93/100 accuracy
- Subscriptions with RevenueCat as the single billing system of record across iOS, macOS, Android, Android TV and the web (Web Billing) — one entitlement, a webhook mirroring state into Supabase Postgres behind RLS as the cross-platform source of truth, optimistic unlock on mobile
- Self-hosted Supabase SSO (passkeys + Croatian eID via flutter_certilia) behind Cloudflare Tunnel on Coolify; self-hosted SMS gateway with an Android device as the sender
- Flutter
- Dart
- Python
- Node.js
- TypeScript
- Supabase
- PostgreSQL
- ClickHouse
- Whisper
- Gemini
- Cloudflare Workers
- D1
- Coolify
- RAG
- MCP
- RevenueCat
- Safe
domovina-rag — RAG backend & public MCP server
2026 — PresentAuthor
Self-hosted semantic-search backend over a Croatian podcast corpus: 137,451 RAG chunks from 3,034 episodes across 46 channels (~2,870 hours of audio, 2,573 distinct speakers), embedded with bge-m3 and stored in ClickHouse (HNSW vector index, ~10–50 ms queries) alongside PostgreSQL as the transactional source of truth. Exposed worldwide through a production MCP server, so Claude Desktop, Claude.ai, ChatGPT and Cursor can query the corpus as a native tool.
- Split-brain deployment: embeddings computed on Apple Silicon (MPS GPU) locally, snapshotted to Cloudflare R2 with ClickHouse BACKUP TABLE, then restored read-only on a Coolify VPS that serves the public endpoint
- MCP server with OAuth, API keys, rate limiting and an audit dashboard — one of the few publicly reachable MCP servers serving a Croatian-language corpus
- TypeScript
- Python
- ClickHouse
- PostgreSQL
- bge-m3
- MCP
- Cloudflare R2
- Coolify
- Docker
PINKA Finance
2025 — PresentCo-founder & lead engineer
Group-fundraising platform bridging bank transfers and on-chain money. Campaign & checkout app (Next.js 14) where backers pay by scanning a SEPA EPC QR code or on-chain via Monerium EURe on Gnosis Chain; Foundry smart-contract suite (PinkaFactory, PinkaToken, PinkaCrowdfund) supports four parallel investment paths — ERC677 transferAndCall, approve+invest, SEPA bank transfer via Monerium webhook, and Safe multisig.
- Runs standalone or framed inside Safe{Wallet} as a Safe App — the wallet SDK transparently routes transactions through the host Safe
- RLS-gated Supabase schema with Edge Functions orchestrating contribution state; no plaintext secrets (SEPA profile IDs stored as keccak256 hashes)
- Bilingual (HR/EN) marketing site with a custom React i18n engine (CLDR plurals)
- Next.js 14
- TypeScript
- Solidity
- Foundry
- Safe
- Gnosis Chain
- Monerium EURe
- Supabase
- Cloudflare
- Tailwind
flutter_certilia
2025 — PresentAuthor & maintainer
Open-source Flutter package for the Certilia Identity API — Croatian national eID (NIAS) authentication for Flutter apps, with documentation site. 110+ commits in the last year.
FirePixy
2017 — PresentCreator
Complete platform for photo booths and photo walls at weddings and community events: serverless Node.js backend on Firebase, Angular PWA for guests, WPF photo-booth application integrated with Canon EOS DSLR cameras and on-site printing, Flutter mobile apps.
- Runs production events end-to-end — capture, moderation, projection, print
- Node.js
- Firebase
- Angular
- WPF
- Canon EDSDK
- Flutter
ScanShop
2018 — 2021Architect & backend lead (team of 9)
Self-checkout native mobile application for retail stores. Defined the architecture and built the backend (NestJS + Parse Server + Firebase) while leading a team of nine across backend, Angular PWA and native iOS/Android apps. Contributed improvements back to the open-source Parse Dashboard project.
- NestJS
- Parse Server
- Firebase
- Angular
- Swift
- Kotlin
FlutterFlow BlinkID Widget
2022 — 2024Author
Custom FlutterFlow widget wrapping native iOS/Android identity-document scanning SDKs (BlinkID). Reads identity documents with the device camera and returns structured data into FlutterFlow action chains. Adopted by 1,119 different FlutterFlow projects.
- 1,119 FlutterFlow projects adopted the widget
- FlutterFlow
- Flutter
- BlinkID
- iOS
- Android
One platform, many standalone parts — each is its own public repository and, where it has a UI, its own live deployment.
A 12-step media pipeline that turns a YouTube URL into a searchable, illustrated article: yt-dlp fetch, ASR on Metal (Whisper.cpp) and Colab GPUs (NVIDIA Canary), pyannote speaker diarization, Gemini summarization via multi-region Vertex AI, screenshots, RAG chunking and CDN publish. 3,034 episodes across 46 channels — ~2,870 hours of audio — are released as an open text dataset.
Python · TypeScript · Whisper.cpp · NVIDIA Canary · pyannote · Gemini · Vertex AI · Cloudflare Workers · D1 · R2 · rclone
Open public catalogue of every Croatian football club from the top flight down to the 8th tier — 901 clubs, all geocoded, with contacts, leagues per season, presidents, stadiums, founding years and crests. Compiled from six public registries by an idempotent, fully reproducible ingest pipeline; data quality is sampled and scored by parallel AI verification runs at 89–93/100. MIT code, CC-BY 4.0 data.
Python · React · SQLite · FastAPI · HTMX · Cloudflare Pages · Cloudflare Workers
Open catalogue of every political party ever registered in Croatia — 434 parties (155 active, 279 dissolved) with registry identifiers, seat addresses, status and dates, 541 persons authorised to represent them, 4,203 historical offices and mandates, name-change history and geocoordinates. Sourced from the Ministry of Justice registry via data.gov.hr, cross-checked against National Library authority files.
Python · SQLite · FastAPI · HTMX · Leaflet · Cloudflare Pages
Open catalogue of the official section of the Croatian government gazette — laws, regulations, ordinances and decisions. A full index of 97,561 acts across 5,077 issues (1990–2026) was reconstructed from the official register in 37 requests; full-text ingest is complete for 2024–2026 with per-year QA. Ships as SQLite with FTS5 search plus JSON/CSV open-data exports.
Python · SQLite · FTS5 · ELI/RDF · Cloudflare Pages
Offline mirror and searchable index of the official Croatian election archive. The state archive is an AngularJS SPA with no API — results are static JSON/CSV addressed by an undocumented county → municipality → polling-station scheme, and the code lists live only inside the app's DAO JavaScript. Reverse-engineered both, mirrored ~70,000 result files down to individual polling stations, and indexed them into SQLite with FTS5.
Python · SQLite · FTS5 · Cloudflare Workers
Interactive map of Croatia — municipalities, counties, settlements, football clubs and airports. A monorepo where one Python data layer generates all GeoJSON and topology, feeding two independent clients that share no code: a React + MapLibre + PMTiles web app in production and a Flutter build for iOS and Android. Layers load lazily; tiles come from free OpenFreeMap rather than a paid provider.
React · MapLibre GL · PMTiles · Flutter · Python · GeoJSON · Cloudflare Pages
One form, three interoperable payment formats: a SEPA EPC QR that parses correctly in Revolut, Wise and iOS banking apps; a full 14-field Croatian HUB3 PDF417 for domestic mobile banking; and an EIP-681 deep link that MetaMask and Rainbow read as a ready transaction. Bridges classic IBAN payments to Monerium EURe on Gnosis Chain.
Flutter · Dart · WASM · Cloudflare Workers · D1 · KV · Safe · Zodiac · Gnosis Chain · Monerium
Open-source alternative to closed Croatian invoicing SaaS: a multi-tenant service that takes a structured JSON invoice, fiscalises it against the tax authority (ZKI/JIR, XML-DSIG with FINA/AKD certificates), renders a PDF with QR code and optionally emails it. Scoped in two waves — retail fiscalisation 1.0 and the mandatory 2026 e-invoicing regime (EN 16931 / UBL / Peppol).
TypeScript · Hono · Cloudflare Workers · D1 · Next.js · XML-DSIG · UBL · Peppol
Server and CLI for qualified digital signing of PDFs through the Croatian AKD Certilia eSign API, implemented against the official v4.0.13 specification. Supports smart-card and remote certificates, batch signing of many documents under a single mobile confirmation, and PAdES levels b/t/lt/lta.
TypeScript · Node.js · PAdES · XML-DSIG · eIDAS · AKD Certilia
Single identity provider and API for every domovina.* product. A fully self-hosted Supabase stack (Postgres, GoTrue, PostgREST, Realtime, Storage, Edge Functions, Studio, Logflare, MinIO) deployed through Coolify on Oracle Cloud ARM and exposed only through a Cloudflare Tunnel — no inbound ports. Infrastructure as code: migrations, RLS policies, tunnel ingress and runbooks live in the repo, secrets never do.
Supabase · PostgreSQL · Coolify · Docker · Cloudflare Tunnel · PLpgSQL · Oracle Cloud ARM
An SMS gateway that uses an ordinary Android phone as the sender — the upstream httpsms project pulled in as a git subtree, rebuilt for ARM and deployed on Coolify behind a Cloudflare Tunnel. Adds a Reverse OTP service: instead of receiving a code, the user sends an SMS to the gateway, which verifies the number from the inbound message via a JWT-signed webhook.
Go · Kotlin · Bun · Hono · Docker · Coolify · Cloudflare Tunnel · Oracle Cloud ARM
Open-source replacement for Riverside.fm, built for a real weekly podcast. Records two RØDE PodMic USB microphones as isolated 24-bit tracks plus a Lumix camera over an Elgato capture card, uploading segments to Cloudflare R2 while recording is still running.
Swift · SwiftUI · CoreAudio · AVFoundation · Cloudflare R2 · Python · ffmpeg
Classifies Croatian legal entities by tax number into micro, small, medium or large under the Accounting Act, and tracks legal status (active, struck off, in liquidation, bankrupt, blocked). Reads the official size marker straight from the public FINA business registry with a plain fetch, falling back to scraped sources only for what that registry does not cover.
TypeScript · Node.js · Cloudflare Workers · Hono · D1 · Firecrawl
Microblink OCR Integrations
2018 — 2020Consulting for Microblink (BlinkID): server-side bridge to a native OCR engine with API-key management for their SaaS, a standalone JavaScript web component for camera capture and cloud OCR, and a desktop-to-mobile handoff flow using Cloud Firestore.
Node.js · Web Components · Angular · Firebase · OCR
A set of reusable open-source FlutterFlow components: multi-file upload to Firebase Storage with progress streams and drag-and-drop, Salsa20-based string encryption actions, and barcode/QR generation with encrypted payloads.
FlutterFlow · Flutter · Firebase Storage · Cryptography
Realtime football analytics and prediction platform for the FIFA World Cup 2026 (48 teams, 104 matches): a TypeScript fetcher using real-Chrome transport to handle TLS-fingerprint anti-bot protection, normalised Supabase/Postgres schema as single source of truth, baseline ELO + Poisson prediction models and a Next.js visualisation frontend.
Next.js · TypeScript · Supabase · PostgreSQL · Playwright · Docker
Independent on-chain verification of the Trendex $MODRIC fan-token lottery winners across all three draws — reproducible scripts anyone can run against chain data.
Blockchain · EVM · JavaScript
CLI tool extending the Flutter CLI: a local Node.js listener receives GitHub webhooks on FlutterFlow pushes, verifies commit signatures, merges changes into the working branch and hot-reloads running Flutter processes via Unix signals.
Node.js · Bash · Flutter · GitHub Webhooks
Native iOS and Android apps that turn a phone into an HTTP CONNECT proxy, routing traffic out over cellular while the listener sits on Wi-Fi — no third-party servers.
Swift · Kotlin · iOS · Android · Networking
Open-source Firebase Admin GUI built with Flutter — a desktop alternative to the Firebase Console.
Flutter · Dart · Firebase Admin
Open-source premium Shopify 2.0 theme — lightning-fast, conversion optimised, mobile-first, built with Croatian craftsmanship.
Shopify · Liquid · JavaScript
Daily backup of ~/.claude (Claude Code config, memory, sessions, transcripts) to a local git repo plus a private rclone remote, scheduled with macOS launchd. Scripts only — the data stays private.
Bash · launchd · rclone · Git
A collection of small open-source tools for the Croatian community: an offline ASRS v1.1 ADHD self-assessment web app, "Satnica" offline time tracking for freelancers, and a minimal native macOS WebKit browser.
TypeScript · Swift · WebKit · PWA
A macOS menu-bar app that makes launchd legible: lists agents and daemons, their schedules, last exit codes and log paths, so scheduled jobs can be inspected without reciting launchctl incantations. Written to keep an eye on the nightly jobs that drive the rest of this portfolio.
Swift · SwiftUI · MenuBarExtra · launchd