Browser-first, Obsidian-inspired notes app with a plugin-compatible runtime, CodeMirror markdown editing, and web/PWA + Electron hosts. Built in TypeScript and Svelte. https://use-lapis.com
  • TypeScript 67.2%
  • Svelte 25.5%
  • CSS 5.7%
  • JavaScript 1.2%
  • Rust 0.3%
Find a file
2026-05-19 01:39:25 +01:00
.agents/skills/qmd Add unified repo check and format codebase 2026-05-13 17:58:11 +01:00
.claude/skills Update SQlite 2026-04-24 20:28:10 +01:00
.vscode Initial commit 2025-07-27 10:44:06 +01:00
packages Migrate markdown lint to system extension 2026-05-19 01:39:25 +01:00
patches Fix paneforge patch: only remove inline cursor style, keep user-select 2026-05-17 00:16:29 +01:00
scripts Implement browser language service foundation 2026-05-18 17:39:15 +01:00
spec Migrate markdown lint to system extension 2026-05-19 01:39:25 +01:00
.eslintrc Initial commit 2025-04-09 12:47:56 +01:00
.gitignore Add @lapis-notes/diffmerge (Svelte merge UI from mismerge). 2026-05-18 10:53:54 +01:00
.markdownlint-cli2.jsonc Add unified repo check and format codebase 2026-05-13 17:58:11 +01:00
.prettierignore Add @lapis-notes/diffmerge (Svelte merge UI from mismerge). 2026-05-18 10:53:54 +01:00
.prettierrc Initial commit 2025-04-09 12:47:56 +01:00
AGENTS.md Fix linter errors 2026-05-13 20:09:57 +01:00
compiled_app.js 2026-05-18 15:32:18 +01:00
Makefile Add spec markdownlint checks 2026-05-07 23:00:20 +01:00
package.json enforce first-party source resolution in dev 2026-05-18 13:44:35 +01:00
pnpm-lock.yaml Extract markdown lint into a core plugin 2026-05-19 01:16:16 +01:00
pnpm-workspace.yaml refactor: consolidate notebook packages under packages/notebook 2026-05-17 21:28:33 +01:00
README.md docs: add package readmes and clean ignored artifacts 2026-05-18 10:06:39 +01:00

Lapis Notes

Lapis Notes is a browser-first, Obsidian-inspired notes application built as a pnpm monorepo. The shared renderer lives in @lapis-notes/workspace, the runtime kernel lives in @lapis-notes/api, and the current first-party host targets are the web/PWA package and the Electron desktop shell.

Repository Layout

  • packages/api contains the application kernel: vault access, workspace state, commands, metadata, settings, and plugin lifecycle.
  • packages/ui contains the shared Svelte design system and theme primitives.
  • packages/workspace contains the visible renderer shell that composes the runtime and plugins.
  • packages/web contains the browser/PWA host around the shared workspace renderer.
  • packages/desktop-electron contains the first-party Electron desktop host.
  • packages/desktop-tauri contains the paused Tauri desktop host kept for reference.
  • packages/notebook and packages/notebook/* contain the notebook plugin plus extracted notebook runtime packages.
  • packages/plugins/* contains bundled first-party feature plugins and a small number of colocated Obsidian-targeted plugins.
  • spec/ contains the architecture, package, and cross-package contract documentation.

Getting Started

pnpm install
pnpm dev

Useful entry points:

  • pnpm dev starts the shared workspace app.
  • pnpm web:dev starts the browser/PWA host.
  • pnpm desktop:dev starts the Electron desktop host.
  • pnpm desktop-tauri:dev starts the paused Tauri host.

Validation

pnpm check
pnpm check:types
pnpm test

Package-local checks are available through each workspace package's check script.

Documentation

  • spec/src/SUMMARY.md is the entry point for the rendered architecture and package docs.
  • Each workspace package keeps a package-local spec.md that points at the canonical spec page.
  • Each package README summarizes the package's role, common scripts, and where to look next.

Repository Workflow

This repository uses Jujutsu (jj) for version control operations. Use jj --no-pager st to inspect the working copy and jj commit -m "..." to record completed changes after validation.