Hanif Tri Widiyanto

> software engineer

I build and ship real products — from full-stack web apps to Telegram bots and monitoring tools. Most of them solve my own problems, and I self-host everything.

// apps

open

feeling

An emotion journal built on the Yale Mood Meter. Place yourself on two axes before you reach for a word, then pick from a vocabulary rich enough to tell kesal from kecewa — naming it precisely is what regulates it. No streaks, on purpose. Your journal never leaves your phone.

React Express DeepSeek

quran

Read the Qur'an with four tafsir side by side, word-by-word analysis, and an AI librarian that only ever quotes the scholars — every citation is verified against its source before it renders, so it cannot fabricate.

React Express DeepSeek

denah

A 2D/3D floor plan drafting instrument. Draw walls and rooms emerge on their own, furnish them from a 55-piece catalog, then walk the whole thing in 3D.

React Konva three.js Zustand

playground

Run code in 35+ languages straight from the browser. Pick a language, hit run, see the output — no setup, no install.

Vanilla JS Monaco Wandbox API

ai.hanif.app

Multi-model AI chat. Streaming, message editing, system prompts, conversation pinning, tags, share links, and ⌘K command palette.

Next.js IndexedDB SSE

mangan

Find restaurants from YouTube food reviews near you. Syncs video data and maps locations — just pick a radius and discover places to eat.

Next.js Prisma Leaflet yt-dlp

bagirata

Split bills fairly with friends. No sign-up, no fuss — just enter what everyone paid and who owes whom.

Next.js Tailwind

kana quiz

Practice reading hiragana and katakana with timed quizzes. Pick a level, type the romaji, and track your progress.

Astro Tailwind

nihongo

JLPT N5 vocabulary flashcards. Study Japanese words with romaji, kana, and meaning — built for my own N5 prep.

Next.js Tailwind

pomodo

A pomodoro timer + to-do list combo. Simple focus tool — set a timer, check off tasks, repeat.

Astro Tailwind

miniboard

A minimal kanban board I built because every task manager out there has too many features. This one just has columns and cards — that's it.

Next.js Prisma DnD

nulis

Distraction-free writing tool with a canvas view. Long-form editor where articles live as nodes you can arrange and connect.

Next.js Tiptap SQLite

rupiah

Real-time USD to IDR converter. Live rates, clean interface, nothing else.

Astro Tailwind

artifacts

Push architecture diagrams as Mermaid code and instantly get a shareable URL. Used by Punakawan agents to visualize systems.

Next.js Mermaid

maivez

Email marketing tool for small teams. Build campaigns, manage lists, and send without the enterprise pricing.

Next.js Prisma Resend

netflix forwarder

Forwards Netflix household confirmation emails so my family can verify without bugging me. Set it up once, never think about it again.

Go IMAP SQLite

markdown

Render markdown with themes and share it via a short link. Write or paste, pick a theme, and get a clean shareable page.

Express marked SQLite

anki

Learn JLPT N5 kanji as playful mahjong tiles. Flip cards, grade your recall, and a spaced-repetition engine schedules each kanji so it sticks.

Vanilla JS Express localStorage

chart

Chart image generation API. Send data, get back a rendered chart image — no browser needed.

Express Chart.js node-canvas

blog

Personal writing — engineering notes, reflections, and things I want to remember. Pulls articles from nulis.

Next.js Recharts SQLite

chat

AI chat with personas, system prompts, conversation history, tags, and share links. Multi-model, IndexedDB-backed.

Next.js IndexedDB SSE

bayar

My payment page — bank accounts, e-wallets, and QRIS in one place. Tap to copy, scan to pay.

Next.js Tailwind

status

Public status page for all hanif.app services. Checks every site from the Cloudflare edge every 2 minutes and emails alerts on downtime.

Cloudflare Workers KV Resend

// personal

passcode

Personal dashboards I share selectively. Click any card to enter a passcode.

passcode

calendar

My weekly schedule — WFO/WFH days, gym, swim, run, and client work. Managed by Punakawan agents.

Next.js SQLite
enter passcode →
passcode

finance

Personal finance tracker. Expenses, income, debts, and cash flow — all logged via Punakawan.

Next.js SQLite
enter passcode →
passcode

garmin dashboard

Training dashboard synced from Garmin. Runs, swims, HRV, sleep, and race prep metrics — Intervals.icu-style.

Next.js Garmin API Intervals.icu
enter passcode →
passcode

airdrop tracker

Track active crypto airdrops, daily tasks, deadlines, and modal invested. Managed by Punakawan agents.

Next.js SQLite
enter passcode →
passcode

aturuang

Daily expense tracker via Telegram. Text what I spent — AI parses it and shows me where my money goes.

Hono Prisma Grammy OpenAI
enter passcode →
passcode

diary punakawan

Daily reflections and logs written by Punakawan AI agents. Raw thoughts, decisions, and observations.

Next.js SQLite
enter passcode →
passcode

context

Context storage for AI workflows. Structured notes and reference material injected into Punakawan agents.

Next.js SQLite
enter passcode →

// internal

private

Infrastructure and internal tools. Not publicly accessible.

private

punakawan

Autonomous AI agent system — Semar, Gareng, Petruk, Bagong. Handles GitLab ops, DevOps, coding, and daily routines.

Node.js Claude API Telegram
internal only
private

ai router

LLM API router. Routes traffic across Claude, OpenAI, and local models with fallback and load balancing.

Node.js Hono
internal only
private

uptime

Service uptime monitoring for all hanif.app projects. Alerts via WhatsApp when something goes down.

Hono Prisma Baileys
internal only
private

review

Internal code and project review tool. Tracks MRs, review comments, and feedback across GitLab projects.

Next.js GitLab API
internal only
private

account

Session and cookie management for internal tools. Auth gateway for hanif.app services.

Next.js SQLite
internal only

Personal app

Enter passcode to continue

This is a personal app. Access is shared selectively.