A lightweight journal that is meant to not get in the way of thought and just let you write.
The main goal of this small project is to provide me a quick way to see chronological notes, similar to a chat with myself.
This is meant to be like a pocket journal on your phone. You are meant to see your past thoughts, keep the journal numbers low and just write.
See issue queue.
Use the latest Node.js LTS (nvm install --lts, then nvm use --lts; .nvmrc also selects LTS), install pnpm 12.9.1, then run:
pnpm install --frozen-lockfile
pnpm devDatabase-backed features require DATABASE_URL in .env.local and the tables
from src/lib/schema.sql. The current app embeds that connection in its browser
bundle; use a disposable development database. A server-side authentication and
database boundary is needed before using this architecture with production data.
pnpm lint
pnpm build
pnpm testpnpm test runs both suites; pnpm test:integration and pnpm test:browser
run them individually. Browser tests use Google Chrome (pnpm exec playwright install chrome if needed) and build and serve the production app.
Both suites execute SQL against fresh, isolated PGlite PostgreSQL databases loaded
from src/lib/schema.sql. Integration tests exercise the actual services, helpers,
and route actions. Browser tests intercept only the Neon HTTP transport and execute
its SQL in PostgreSQL rather than fabricating query results. No external database or
credentials are needed. They cover password hashing, account uniqueness, foreign
keys, ordering, exact text and timestamps, ownership checks, atomic cascades,
reload persistence, failed saves and retries, pending writes, cancellation,
focus mode, and downloads.
The GitHub Actions CI workflow selects LTS Node from .nvmrc, installs from the
frozen pnpm lockfile, and runs lint, test type-checking, integration tests, and
production browser tests. Local checks here use nvm use --lts.
These tests verify application and PostgreSQL behavior, but do not cover live Neon transport outages or replace server-side authorization. The current browser database architecture still requires a server-side boundary before production use.