Web and desktop apps, Live
hejj
A calm, fast, offline-first start page
A browser start page for your links, notes, lists, and live widgets. Instant even offline, synced across devices, with a Mac messenger app.

Sketch to Ship
Started as one calm board for everything you open daily.
ShippedStack
- Next.js
- React
- TypeScript
- Offline-first
- IndexedDB
- SQLite
- Prisma
- Tauri
- Status
- Live
- Type
- Web and desktop apps
The problem
The links, notes, and numbers you check every day are spread across tabs, bookmarks, and apps, and a new tab shows you none of them.
What it does
hejj is a fast, private start page you set as your browser homepage. Keep links, notes, lists, and images on boards, group them into containers on a snap grid, and add live widgets. Everything lives on your device first, so a new tab opens instantly, even offline, and your boards sync across your devices.
How it's built
Next.js 16 (App Router), React 19, and strict TypeScript. The browser keeps your data in IndexedDB (Dexie) with an outbox of field-level changes. The server merges them using hybrid logical clocks and per-field last-writer-wins, then notifies other devices over server-sent events. The server runs SQLite (WAL) through Prisma, with Better Auth and Cloudflare R2 for media. Search is instant and offline: MiniSearch runs in a Web Worker, and an FTS5 index on the server is built from domain events. It all runs as one Docker container behind Caddy, and Litestream streams the database to R2. The Mac app is built with Tauri.
Key features
Boards
- Links, notes, lists, images, and pages on boards you switch between with tabs
- A snap grid with containers that keep related items together
- Paste a link, jot a note, or start a list with "- " to add it
- ⌘K search across titles, notes, tags, and descriptions as you type
- Works offline and syncs across your devices
Widgets
- Built-in widgets, including clock, calendar, countdown, year progress, tracker, feeds, and site uptime
- Business numbers from Stripe, RevenueCat, Polar, and the App Store and Google Play
- Custom widgets from any app over plain HTTPS and JSON. You approve each one once and can revoke it at any time
- Apps only get a random grant id, never your identity. Developer docs and a playground are at hejj.net/developers
Save from anywhere
- Telegram bot @hejjapp_bot: send a link, a note, or a photo, pick the board with one tap, and it's there the next time you open a tab
Hejj Messenger
- An early-2000s-style messenger built into hejj: a buddy list, purple windows, emoticons, away messages, and BUZZ!!!
- Runs in the browser, and as a desktop app on the Mac
Mac app
- Hejj Messenger for Mac: free, for macOS 13 Ventura or later, with one download for Apple Silicon and Intel
- The buddy list lives in the menu bar; every chat opens in its own desktop window and reopens where you left it
- BUZZ!!! shakes the chat window and bounces the Dock icon
- Mac notifications for new messages and an unread count on the Dock icon
- Start at Login, and quiet updates that are signature-checked before they install
- Sign in with your hejj account in the browser. Chats are stored encrypted on the Mac
- Signed with a Developer ID and notarized by Apple
Engineering
- Unit, integration, and property-based tests (Vitest, fast-check)
- End-to-end tests in Chromium, Firefox, and WebKit with Playwright, plus axe accessibility checks
- A JavaScript size budget per route, enforced in CI
- A backup and restore drill that restores the database from the R2 backup and boots the app
Hejj Messenger
Purple windows, a buddy list, smileys, away messages and BUZZ!!!, in two versions: on the web, built into hejj, and as a free Mac app in your menu bar.
See the Hejj Messenger projectScreens

A calm start page with a messenger built in 
Links, notes and widgets on one board 
Telegram bot and custom widgets 
hejj.net on mobile
Contact
Want something like this built?