jpzip Blog · 11 posts

Design notes
from jpzip

Cloudflare Pages design, MCP servers, shipping 8 SDKs with Claude Code — the architecture and numbers behind jpzip, written down.

  1. #0011

    Migrating from ken_all / jpostcode to jpzip-ruby

    Migrate off ken_all (KEN_ALL.csv in a database) and jpostcode (submodule-bundled data) to jpzip-ruby's CDN lookup: field mapping, no monthly imports, and the one feature you lose.

    MigrationRubyRailsCDN
  2. #0010

    jpzip-js on Cloudflare Workers: Cache API, KV, or DO

    Run jpzip-js inside a Cloudflare Worker for Japanese postcode lookups, and choose between Cache API, Workers KV, and Durable Objects by cost and measured p50/p99 latency. The short answer is usually "none of them."

    Use CaseCloudflareWorkersTypeScriptEdge
  3. #0009

    Migrating from zipcoda to jpzip-js: live API to static CDN

    Move from the zipcoda.net runtime postcode API to jpzip-js's static CDN model — response field mapping, JSONP and CSP cleanup, dropping rate-limit workarounds, and measured latency and cache wins.

    MigrationJavaScriptTypeScriptCDN
  4. #0008

    Address autofill with Next.js Server Actions (App Router)

    Build a postcode-to-address autofill form with Next.js 16 App Router Server Actions and jpzip-js — progressive enhancement that works without JavaScript, the Edge runtime, and server-side caching via the use cache directive.

    Framework IntegrationNext.jsTypeScriptFormsEdge
  5. #0007

    Build a Postal-Code Address Autofill Form with Rails, Hotwire, and jpzip-ruby

    Autofill a Japanese address from a postal code in Rails with Turbo Frame or a Stimulus fetch controller, plus an L2 cache that stops Puma workers from re-fetching the same CDN bucket.

    Framework IntegrationRubyRailsHotwireForms
  6. #0006

    Address auto-fill in React Hook Form with Zod and jpzip

    How to wire jpzip-js into a React Hook Form with a Zod schema. Covers postcode validation, onBlur lookup, setValue auto-fill, double-fetch suppression, and aria-busy for accessibility.

    Framework IntegrationReactTypeScriptFormsZod
  7. #0005

    Migrating from Yubinbango to jpzip-js: drop JSONP, gain types

    A step-by-step migration from JSONP-based Yubinbango to jpzip-js. Keep your microformats h-adr forms intact, switch to fetch-only data loading, and tighten your CSP.

    MigrationJavaScriptTypeScriptForms
  8. #0004 jpzip · 4/4

    How Claude Code shipped 8 language SDKs in 6 hours

    How I shipped Go / TypeScript / Python / Rust / Ruby / Dart / PHP / Swift SDKs for jpzip in 6 hours using Claude Code — spec-first design, Go as the reference implementation, translation-not-transpilation prompting, and per-language gotchas.

    Claude CodeAISDKmulti-languageOSS
  9. #0003 jpzip · 3/4

    I wrote an MCP server so Claude can natively look up Japanese postcodes

    A tiny stateless MCP server that lets Claude resolve Japanese postcodes — tool design, cache lifetimes, cross-script (kanji/katakana/romaji) search.

    MCPClaudeTypeScriptAI
  10. #0002 jpzip · 2/4

    How I serve 120,677 Japanese postcodes from Cloudflare Pages (no Worker, no R2)

    The data-delivery design behind jpzip — shard layout, ETL pipeline, and why I deliberately use no Worker, no R2, no KV.

    CloudflareCDNETLGo
  11. #0001 jpzip · 1/4

    I built a postcode-data micro-SaaS on Cloudflare Pages' free tier (and it costs me $0)

    The story behind jpzip, a one-person side project, and why it stays free forever — not by luck, but by design. 120,677 Japanese postcodes served from Cloudflare Pages alone.

    CloudflareOSSindiemicro-SaaS