Chairul AkmalSoftware Engineer · Tokyo

Tokyo, JP · available immediately

Chairul AkmalSoftware Engineer

I'm looking for full-stack or frontend roles in Tokyo. I did my degree at Tohoku University, so Japan is not new to me. Since then I've built software on a remote US fintech team and taught full-stack JavaScript to bootcamp students. A job here needs Japanese, so I study for the JLPT. I was missing three tools: a quiz app to drill vocabulary, a mock exam to practice with, and a tracker for my job applications. I built all three, shipped them to production, and made them open source. They're below, in the order I needed them.

Shipped
5 apps, 4 live
Stack
Rails 8 · Next.js 16 · Nuxt 4
Japanese
JLPT N3 taken Jul 2026, results pending
Before this
Blossom Finance · Hacktiv8 · Ghost.org (contributor)

The pipelineThree apps, one loop. It ends where KarirKalyan's board ends: in the last column.

Drill

Bayana

Jun – Jul 2026

Learn the words.

A JLPT vocabulary and grammar trainer for people who gave up on Anki's setup and Duolingo's ads. Open it and study: 8,800 words, N5 through N1, scheduled by FSRS.

  • Four modes over one FSRS queue: flashcard, quiz, timed exam, and 220 grammar patterns across 22 lessons.
  • Every word comes with a Claude Haiku example sentence, written once and cached in Postgres. The whole deck cost about $2.55, and nothing is generated at runtime.
  • Mobile-first PWA, installable, designed to an iPhone SE baseline.
  • Next.js 16
  • TypeScript
  • Prisma
  • PostgreSQL
Bayana's study home screen: a JLPT level picker from N1 to N5, and cards for exam, quiz, and flashcard modes.
Test

Kalima

May – Jun 2026

Take the exam.

A JLPT N3 mock exam in the real paper's format: all five vocabulary question types, 35 questions, a 30-minute timer. After the session, Claude Sonnet writes a breakdown of your real level.

  • Answers never leave the server during a session. The client gets shuffled choices with opaque IDs, so the correct answer never appears in network traffic.
  • The wrong choices are generated offline through schema-constrained tool use. A per-word validator then rejects the circular, shared-kanji, and duplicate ones.
  • The per-type accuracy radar is hand-written SVG, built from polar helpers. No chart library.
  • Building it took me into Nuxt's own TypeScript config. My fix was merged upstream in July 2026: PR #35697 makes typescript.tsConfig a shared baseline for all four tsconfigs.
  • Vue 3
  • Nuxt 4
  • TypeScript
  • PostgreSQL
Kalima's home screen: an N3 level selector above the five JLPT vocabulary question types in Japanese.
Apply

KarirKalyan

May – Jul 2026

Run the search.

The tracker running this job search. A Rails 8 API enforces every application's status transition as a finite state machine. The Next.js board asks the server which moves are allowed instead of repeating the rules itself.

  • The FSM is a plain Ruby module you can read in a few minutes, not a gem. Every transition writes the status and its timeline entry in one database transaction. Optimistic locking turns a concurrent edit into a 409 instead of a silent overwrite.
  • Ghost prediction flags applications that have been silent longer than your own p90 reply time. It is rebuilt from the audit trail with a window function, so it needed no new column and no new table.
  • A daily follow-up digest goes out at 08:15 JST. It skips weekends, Japanese national holidays, New Year, Golden Week and Obon, and moves those reminders to the next business day instead of dropping them.
  • Bilingual in English and Japanese. CI checks that the two translation catalogs stay in sync, because a missing key still typechecks and builds without errors.
  • Rails 8
  • Next.js 16
  • TypeScript
  • Playwright
KarirKalyan's kanban board: job applications arranged across pipeline columns from wishlist through to offer.
Offer

One column left.

I'm in Tokyo, available immediately, and looking for a full-stack or frontend role: TypeScript, React or Vue, Rails or Node. Before software I was a marine biologist, with degrees from Tohoku University and James Cook University. The CV has the rest: a regulated US fintech, a year teaching full-stack JavaScript, and merged contributions to Nuxt and Ghost.org.

Also released

  • Awano

    Live, open source

    A multi-tenant support desk in Next.js 16 with role-based access control and a finite-state ticket workflow. Every ticket change lands in an immutable audit trail.

  • tarik

    Public GitHub template

    A Rails 8 + Next.js SaaS boilerplate with auth and English/Japanese i18n. Billing runs on Stripe, with a documented migration path to PAY.JP.