Skip to content

geoffreypetri/line

Repository files navigation

Line — A minimal local-first journal

Line is a fast, quiet, local-first journaling app.
Every thought is a line. No friction, no clutter, no backend.

  • 💾 Local-first (IndexedDB)
  • 🧭 Keyboard-focused
  • ✏️ One line = one thought
  • 🌗 Light & dark themes
  • 📤 Export to Markdown / JSON
  • 📱 Installable PWA (offline-ready)
  • 🧩 Modular architecture (domain / infra / UI / app)

Line is built for clarity and continuity: open it, type a line, close it.
Nothing else.

Features

✨ Writing

  • Start a new line… — a focused input for capturing the moment
  • Existing entries are edited inline
  • Press Enter to save
  • Press Shift+Enter for a newline
  • Delete the content → press Backspace to remove the entry

📅 Organization

  • Entries are automatically grouped by day
  • Most recent at the top
  • Timestamps appear on hover / focus

💾 Persistence

  • Stored locally in the browser using IndexedDB
  • No account, no cloud, no tracking

📤 Export

  • Markdown export (clean, human-readable)
  • JSON backup (full dataset, reimportable)

📱 PWA

  • Installable on desktop and mobile
  • Works offline after first load
  • Optionally runs fullscreen (standalone)

Tech Overview

Line follows a layered, maintainable architecture:

src/
  app/       → controllers, coordination logic
  domain/    → pure business logic (Entry, JournalView)
  infra/     → persistence (IndexedDB)
  ui/        → DOM rendering & behavior
  utils/     → small helpers

CSS is split into tokens, base, layout, components, and themes.

Development

Start a dev server

Line requires an HTTP context (PWA + service worker):

npx serve .
# or
deno task start

Then open:

http://localhost:8000

(or whatever port your dev server uses)

Project structure

index.html
tokens.css
base.css
layout.css
components.css
theme-light.css
theme-dark.css
manifest.webmanifest
sw.js
src/
  app/
  domain/
  infra/
  ui/
  utils/
icons/

Keyboard Shortcuts

Action Shortcut
Create / update a line Enter
Newline inside entry Shift+Enter
Delete empty entry Backspace

Data

Line keeps all data locally in IndexedDB.
Deleting browser data or uninstalling the PWA may remove entries.

For long-term retention, use the Export JSON feature.

License

MIT License.

Status: Side project

Line is a small, evolving personal tool — stable enough for daily use,
simple enough to extend.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors