2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00
2026-06-04 18:47:17 +02:00

Journaley

Journaley is a simple, modern journaling app built with SvelteKit, Tailwind CSS, shadcn-svelte conventions, Convex, and Convex Auth.

Features

  • Authenticated daily markdown entries with live Convex data.
  • Dashboard with recent entries, streaks, activity, mood counts, and tag insights.
  • Entry workspace with create/edit dialog, markdown preview, date, mood, pin/archive state, tags, search, filters, and sorting.
  • Normalized tagging with usage counts and entry/tag joins.
  • Convex full-text search over title, body text, mood, and tags.
  • Warm light theme, dark mode, and basic user settings.

Development

Install dependencies:

pnpm install

Push Convex functions and regenerate types:

CONVEX_AGENT_MODE=anonymous npx convex dev --once

Start the SvelteKit app:

pnpm dev

The local app runs at http://localhost:5173. Convex local deployment values live in .env.local.

Production App

This app uses @sveltejs/adapter-node, so production builds create a Node server in build/.

Set these environment variables in your production app host before building and running:

PUBLIC_CONVEX_URL=https://your-production-deployment.convex.cloud
PUBLIC_CONVEX_SITE_URL=https://your-production-deployment.convex.site
HOST=0.0.0.0
PORT=3000

Build and validate the production app:

pnpm prod:check

Build only:

pnpm build

Run the production server:

pnpm start

For a single local smoke test that builds and starts the production server:

pnpm prod

Auth

This project uses Convex Auth with email/password for local development. The initializer created convex/auth.config.ts, convex/auth.ts, and convex/http.ts; the frontend uses @mmailaender/convex-auth-svelte for SvelteKit auth state and auth routes.

For production Convex Auth, make sure your production Convex deployment has its auth environment configured, including SITE_URL, JWT_PRIVATE_KEY, and JWKS. If sign-in returns a generic Convex server error, production auth keys/site URL are the first things to verify.

Scripts

  • pnpm dev starts SvelteKit.
  • pnpm build builds the app.
  • pnpm start runs the built Node server from build/.
  • pnpm prod builds and starts the production server locally.
  • pnpm prod:check runs checks, linting, and a production build.
  • pnpm preview previews the production build.
  • pnpm check runs Svelte and TypeScript checks.
  • pnpm lint runs Prettier checks and ESLint.
  • pnpm format formats the codebase.

Project Layout

  • convex/ contains schema, auth, entries, tags, settings, and analytics functions.
  • src/routes/ contains SvelteKit pages and layout.
  • src/lib/components/ contains reusable UI, logo, theme, and markdown components.
  • static/favicon.svg contains the Journaley mark.
S
Description
a simple journal app built with Svelte and Convex
Readme 220 KiB
Languages
Svelte 53.5%
TypeScript 30%
JavaScript 7.5%
CSS 7.3%
Dockerfile 1.2%
Other 0.5%