WAITITU REGION 02 · ANIMATION ↑ BACK
TRANSMISSION

Threshold — Journaling App

Threshold — Journaling App

A journaling app with auth, image uploads, and a typed asset pipeline. Next.js App Router on Convex for auth + realtime data, deployed to Cloudflare Workers via OpenNext.

YEAR
2025
TYPE
WEB APP
TOOLS
Next.js 15 · React 19 · Convex · TypeScript · Tailwind CSS 4 · Cloudflare Workers · OpenNext

A journaling app — capture an entry, attach images, come back later, all behind auth.

Built on Next.js 15 with the App Router and React 19 server components. The backend is Convex: auth, realtime database, and server functions all live inside one runtime, so there’s no second backend to manage and the data model is type-safe end-to-end with the frontend.

Uploads are compressed in the browser with browser-image-compression before leaving the device, so users on slow connections aren’t blocked by the upload itself. A custom build script (scripts/generate-asset-registry.mjs) runs before dev and build to generate a typed registry of every static asset — every image referenced in the app is import-safe and gets caught at build time if a file moves.

Deployed to Cloudflare Workers via @opennextjs/cloudflare, which compiles a Next.js app into the Workers runtime. The choice gives me global edge delivery without a separate Node server.

Tested with Vitest + React Testing Library against a happy-dom environment; backend logic is tested against convex-test (an in-memory Convex runtime).

↑ RETURN TO ORBIT
INSTAGRAM ARTSTATION YOUTUBE
2026 WAITITU