Journl is a web-first journaling app that turns daily writing into structured
reflection. It’s built around a simple principle: journaling is most useful
when it’s easy to revisit, easy to continue, and able to surface patterns over
time. The primary product lives in apps/web, and most contributors will work
there.
Journl helps people capture daily entries and use guidance to deepen their reflection. The core experience is centered on:
- Date-based entries so returning to past writing is predictable.
- Guided prompts and contextual assistance so users aren’t left staring at a blank page.
- An embedded assistant surface that stays alongside the editor rather than pulling users into a separate workflow.
- The editor is the product: navigation, account flows, and assistance stay out of the way of writing.
- Guidance over automation: AI is used to prompt and clarify, not to replace the writer.
- Predictable organization: date-first navigation keeps the mental model simple.
- UI clarity: assistant and editor coexist without crowding each other.
apps/web/src/app/(marketing): public-facing overview and positioning.apps/web/src/app/(app): authenticated journaling experience.apps/web/src/app/(app)/journal: date-based entry views and editor.apps/web/src/app/(app)/@chatDrawerandapps/web/src/app/(app)/@chatSidebar: assistant surfaces embedded in the journaling UI.
This is a pnpm/Turbo monorepo:
apps/web: Next.js UI runtime and marketing pages.packages/*: shared TypeScript packages for API, auth, and data access.apps/*(others): locasl dev utilities and integrations.
-
Install toolchain dependencies:
- Node.js: use a version that satisfies the
enginesfield inpackage.json. - pnpm: use the repo’s configured version (
packageManagerinpackage.json).
- Node.js: use a version that satisfies the
-
Install workspace dependencies from the repo root:
pnpm install
-
Configure environment variables:
- Create a
.envat the repo root. - Populate variables needed for database, auth, and Stripe integrations.
(Turbo scripts reference
dotenv -e ../../.env.)
- Create a
-
Run the app:
pnpm devstarts all tasks via Turbo.pnpm dev:nextruns only the Next.js app (apps/web).
-
(Optional) Database tooling:
pnpm db:pushapplies Drizzle migrations.pnpm db:studioopens Drizzle Studio.
pnpm build: build all apps/packages.pnpm check: run Biome checks with write/unsafe.pnpm typecheck: run TypeScript type checks.
See AGENTS.md for contributor standards and the full command list.