Skip to content

Alfred Panakkal.

Third Officer · Full-Stack Developer

I build software for real-world problems — at sea and beyond.

I'm a Third Officer on ocean-going tankers, and I build web apps for navigation, shipboard admin and everyday routines. Most of them started as something I ran into on watch or in the bond store. Some are built to cope with a weak connection, because at sea you often have one.

Projects

Software from operational friction

Tools I built because the work needed them — navigational safety, shipboard admin, and small utilities. Some run fully offline; the rest are built to cope with a weak connection.

  1. 01 Maritime · Featured

    Helm.Warning — Maritime Safety Information Pipeline

    Turns NAVAREA warnings from official sources into structured, map-ready data. The original bulletin text is kept verbatim and can't be edited, and every admin correction is written to an audit log.

    Read the full case study
    The problem
    Navigational warnings arrive as plain radio text. Plotting hazards onto a voyage means reading coordinates by hand and updating charts manually — slow, and easy to miss on watch.
    Constraints
    Every warning must stay traceable to its source text, ambiguous coordinates can never be silently guessed, history must be preserved when a source stops listing it, and the result has to stay usable at sea.
    The solution
    Scheduled Python scrapers harvest warnings from official NAVAREA coordinators. A deterministic parser extracts coordinates, geometry, and validity dates; parsed records are validated and stored in Supabase (PostgreSQL + PostGIS) and plotted on an interactive Leaflet map. An admin-gated React console handles review, editing, and audit.
    Architecture
    Official sources → scheduled scrapers (GitHub Actions) → rule-based parser with fail-closed AI fallback → validation → Supabase (PostGIS) → public map (vanilla JS) + admin console (React + Supabase Auth).
    Parsing
    Extraction is deterministic and rule-based, with AI used only as a controlled fallback that fails closed. Coordinates are validated against the source text; anything ambiguous is flagged for review rather than guessed, and every parsed record carries an explicit confidence classification.
    Data integrity
    The raw bulletin text is stored verbatim with a SHA-256 checksum and can never be edited from the admin console. Ingestion is upsert-only — a warning that disappears from a feed is marked cancelled or expired, never deleted. Every admin edit writes an audit row (who, what, why) in the same database transaction as the change; if the audit log is unreachable, the edit is refused outright.
    Limits
    A reference and planning aid — always confirm against the official source before using it for navigation.
    Helm.Warning data flow, from official NAVAREA sources to the public map and admin console. Official NAVAREA sources Python ingestion Parsing & validation AI fallback Supabase PostgreSQL + PostGIS Public map Admin console GitHub Actions schedule deterministic, rule-based fail-closed, flagged vanilla JS + Leaflet React, audit on edit
    How warnings move from source to map: scraped on a schedule, parsed deterministically, validated, and stored with full traceability.

    Maritime · Geospatial · TypeScript · Python · Supabase · PostGIS · GitHub Actions

  2. 02 Maritime

    Helm.Ports — World Maritime Ports Explorer

    A fast, self-contained explorer for 5,410 world ports and anchorages — channel depths, tidal ranges, and entrance restrictions screened in milliseconds, with no database and no map tiles.

    Read the case study
    The problem
    The world's port data exists — the NGA World Port Index — but it lives in static PDFs and heavyweight GIS portals. The questions that actually matter on passage (can this vessel enter? how deep is the channel? is the entrance tide-restricted?) shouldn't require accounts, tile servers, or bandwidth.
    The solution
    A full-stack explorer over the complete 5,410-record NGA Publication 150 dataset (2019 edition). Search, faceted filters — country, port size, vessel size, minimum channel depth, tidal-range window, entrance restrictions — and sorting all run against the dataset held in memory: queries answer in 1–3.5 ms, with no database at all.
    The map
    A custom SVG world map with level-of-detail: roughly 160 major hubs visible at 1× zoom, all 5,410 points at 8× and above, with viewport culling on every pan and zoom. Coastlines come from Natural Earth data served locally — zero tile services, zero API keys, fully offline-capable cartography.
    Data honesty
    Soundings are single recorded observations from the 2019 edition, and the app says so — it presents itself as a planning and reference tool, never as a real-time navigation source.

    Maritime · Geospatial · React · TypeScript · Express · Tailwind CSS

  3. 03 Maritime

    Helm Almanac

    A celestial almanac and star chart for navigation practice — positions of the sun, moon, planets and stars are computed in the browser, so there are no tables to download.

    Read the case study
    The problem
    Almanac data and star charts live in separate books and PDFs. You need the right page for the right date, plus the sums to reduce a sight — and none of it works when the satellite link drops.
    The solution
    A celestial almanac and star chart for navigation practice. Positions are computed in the browser with the astronomy-engine library — no tables to download, no dataset to keep updated. Six sections (Almanac, Star Chart, Compass, MyHelm, Admin, About), UTC offsets and an assumed-position workflow, saved waypoints, and your last observer position kept locally.
    Accuracy
    Astronomical numbers only matter if they are right, so the app ships with an admin-gated accuracy section that validates computed values, behind the same Firebase admin gate as the console.
    Limits
    Your last observer position and saved waypoints stay in local storage, but sign-in (Google, via Firebase) and sync need a connection — it is not yet a full offline app, and it doesn't replace the Nautical Almanac or official publications.

    TypeScript · React · Vite · Tailwind CSS · Firebase

  4. 04 Tools

    Helm Productivity

    A focus and routine app: Pomodoro timer, projects and tasks, kanban board, habit tracking, focus analytics and achievements — plus a focus soundscape synthesised in the browser.

    Read the case study
    The problem
    Four-hour watches, rest-hour rules and rotating routines make focus hard to keep — and mainstream productivity apps assume a 9-to-5 week, a live connection, and one desk in one office.
    The solution
    A Pomodoro timer, projects and tasks, kanban board, habit tracking, focus analytics and achievements — all state saved in the browser. The focus soundscape is synthesised procedurally in code, so there are no audio files and it works with no connection.
    Why it matters
    Routines and focus survive dead zones because the core app runs in the browser. Cloud features need a connection, and it is not yet an installable PWA — that's on the roadmap.

    TypeScript · React · Vite · Tailwind CSS · Firebase

  5. 05 Operations

    Bond Vault

    A bond store ledger for shipboard stock, crew accounts and logs. Data stays on the device in IndexedDB, with JSON export and import.

    Read the case study
    The problem
    The slop chest — a vessel's bond store — traditionally runs on paper: crew tabs, stock counts, and audits are reconciled by hand, and discrepancies surface late.
    The solution
    A purpose-built ledger that tracks opening stock, received and issued provisions per period, computes theoretical remaining-on-board for every item, and reconciles it against manual audit entries — with a running tab per crew member, crew account statements sent by email, CSV export, and a JSON backup that restores the whole app.
    Offline & audit
    Data persists to IndexedDB on the device — no account needed to run it. A configurable currency list, a low-light dark theme sized for night bridges, and a pending-sync flag that marks local changes for the optional cloud backup. There is no service worker yet, so the app needs a connection to load the first time — use the export button for backups.

    TypeScript · React · Vite · IndexedDB

  6. 06 Tools

    Seatime & NRI Calculator

    Tracks sea time and Indian NRI day counts across contracts, and compares old and new tax regimes for FY 2026–27. Installable, and works offline.

    Read the case study
    The problem
    Indian NRI tax residency turns on day counts — days at sea, days ashore, across contracts and sign-on/sign-off dates. Rebuilding that history at tax time from stamps and logbooks is slow and error-prone.
    The solution
    Day counts against the 184-day threshold (185 in a leap year), voyage logging, a document vault, and an old-versus-new tax-regime comparison for FY 2026–27. Guest Mode keeps everything on the device — no accounts, no cloud unless you opt in.
    Why it matters
    Seafarers can answer the day-count question with a record instead of a guess. It's a record-keeping and estimation aid, not tax advice — have a chartered accountant confirm the thresholds and slabs for your case.

    TypeScript · React · Vite · Chart.js · PWA · Firebase

  7. 07 Tools

    Mudhra Converter

    A Malayalam font converter: Unicode to legacy ML-TT/ASCII fonts and back, with 35 font options. Runs in the browser and works offline as an installable app.

    Read the case study
    The problem
    Malayalam for the web is written in Unicode; the legacy ML-TT typefaces still used across print and DTP are visually-mapped ASCII. Older documents and print workflows live in that legacy encoding and don't mix with Unicode text.
    The solution
    A longest-match, table-driven converter: 35 font maps (glyph tables from the CC0 indic-archive/ml-ascii-fonts project), matched greedily in both directions — Unicode to legacy and back — with the chosen font and direction kept between visits.
    Why it matters
    One paste turns a Unicode document into copy for the print shop. It installs as a PWA and runs fully offline — all conversion happens client-side, nothing is uploaded or stored.

    JavaScript · Vite · PWA

Engineering

How the software is built

Four principles that show up across every project above.

Local-first where it counts

Two apps are installable offline PWAs (Seatime & NRI Calculator, Mudhra Converter). Bond Vault keeps its data in IndexedDB on the device, and Helm Productivity generates its focus soundscape in code — no audio files, no streaming.

Seen in: Seatime & NRI Calculator, Mudhra Converter, Bond Vault, Helm Productivity

Data processing & validation

Raw source text preserved verbatim with checksums, deterministic parsing with confidence tiers, upsert-only ingestion, and admin edits that fail if the audit log is unreachable.

Seen in: Helm.Warning

Geospatial interfaces

Coordinates, map views and validation before anything reaches a chart: PostGIS geometry, Leaflet maps, and a custom SVG map with level-of-detail rendering.

Seen in: Helm.Warning, Helm.Ports

Tested, deployed products

Helm.Warning ships with a Vitest unit suite across parsing and geometry plus Playwright end-to-end smoke tests, and every project deploys on Vercel.

Seen in: Helm.Warning and all projects

Stack

Languages

TypeScript · JavaScript · Python

Frontend

React · Vite · Tailwind CSS

Backend & data

Node.js · Express · Supabase · Firebase · IndexedDB

Geospatial & tooling

Leaflet · PostGIS · Git · GitHub · Vercel · Vitest · Playwright

Maritime

Navigational watchkeeping · COLREGs · ECDIS · Radar / ARPA · GMDSS · Tanker cargo & safety

AI-assisted

Mistral Vibe · Google AI Studio · Antigravity · OpenCode · Z.AI

Agent pair-programming under AGENTS.md conventions — every repo carries its own agent rules, and the review and responsibility stay mine.

Experience

Watchkeeping, then software

The same discipline shows up in both jobs: procedures, systems, and decisions that have to hold under pressure.

  1. Third Officer / Navigational Watchkeeping Officer

    Ocean-going tanker fleet

    Active duty

    Responsible for navigational watches, passage-plan compliance, bridge equipment, and onboard safety during international tanker voyages.

    • Keep safe navigational watches using ECDIS, radar, ARPA, and satellite navigation in open ocean and high-density traffic.
    • Execute passage plans, chart corrections, and Notices to Mariners; check compass error by celestial and terrestrial bearings.
    • Operate and test bridge systems: dual ECDIS, S-band and X-band radar with ARPA, and GMDSS (Inmarsat-C, MF/HF DSC, VHF).
    • Support tanker cargo and ballast work — IGS oxygen monitoring, BWMS and stability checks, COW safety, and LSA maintenance.
    • Coordinate passage logs, voyage reporting, and bond-store inventory under tight timeframes.
  2. Full-stack developer & open-source creator

    @alfredpanakkal

    Ongoing

    Design, ship, and maintain web applications for maritime productivity — built with AI coding assistants, reviewed and owned by me.

    • Build and deploy web apps in TypeScript, React, and Tailwind CSS, hosted on Vercel.
    • Run a Python scraper and parser pipeline into Supabase for Helm.Warning, with an admin review console and an append-only audit log.
    • Keep interfaces restrained, documented, and usable on a phone as well as a desktop.
    • Build local-first features: offline service-worker apps (two projects) and IndexedDB storage (Bond Vault).
    • Write tests for the riskiest code: a Vitest unit suite across parsing and geometry, plus Playwright end-to-end smoke tests on Helm.Warning.
    • Work with AI coding assistants: I decide what gets built and how it's structured, and I review everything before it ships.

About

Two crafts, one standard of attention

As a Third Officer on ocean-going tankers, the work is watchkeeping, passage planning, bridge equipment, and safety management. Months at sea under constrained satellite connectivity made it obvious how much operational work still depends on paper logs, fragmented schedules, and tools that assume a stable network.

I got into software the same way I learned the bridge: by needing it. Every app I publish starts from a real bottleneck, usually a manual record, a scattered reference, or a tool that assumes a steady connection. I build with AI coding assistants. I decide what gets built and how it's structured, I review the output, and I'm responsible for what ships.

The through-line is not “maritime themed apps.” It is procedural care. A watch and a codebase both fail the same way: quietly, then all at once, if the details are treated as optional.

Role
Third Officer
Work
Tanker fleet
Based
Palakkad, Kerala, India
Code
@alfredpanakkal

Credentials

  • Certificate of Competency STCW II/1 — Officer in Charge of a Navigational Watch (unlimited vessels), DGS approved
  • GMDSS General Operator's Certificate for global radio distress monitoring
  • Bridge systems ECDIS, Radar / ARPA simulator certification (Transas, JRC, Furuno)
  • Safety Advanced Fire Fighting (STCW A-VI/3), Medical First Aid, PSCRB
  • Education B.Sc. Nautical Science / pre-sea maritime training — celestial & terrestrial navigation, ship stability, cargo, maritime law, BRM

Contact

Have a project or opportunity in mind?

I'm interested in maritime technology, practical software products, and engineering opportunities. If you'd like to discuss a project or collaboration, feel free to reach out. If I'm underway, replies follow ship's time and the satellite window.