Notizen

Bundled note module for foldered multi-page notes with font settings, scribble drawing, and dictated voice-note attachments.

What it does

notizen is a bundled module for lightweight note-taking: notes live in nestable folders, each note can contain multiple pages, and pages combine rich text, freehand scribble drawings, dictated voice notes with transcripts, and positioned generated image assets. It also hosts read-only reMarkable source-note imports that can be cloned into editable local notes.

Since March 6, 2026 the module renders directly inside the React app shell instead of an iframe. The PostgreSQL-backed module API stayed unchanged; only the frontend host moved into the standard Clapilot page hierarchy.

How to open it

  • Web: /modules/notizen (bundled module, slug notizen; manifest bundled-modules/notizen/module.json, renderer: react, icon message-circle).
  • Deep link to a note: /modules/notizen?noteId=<note-id>.
  • From Dokumente: /dokumente exposes Neues Dokument > Note, which creates a note and routes directly into the Notizen module. The Dokumente sidebar also has a direct reMarkable Notizen jump into the synced Notizen folder.
  • Apple client: native Notizen list/detail flow in clients/apple/ClapilotApple/Sources/Clapilot/Views/NotizenView.swift.

Implementation:

  • backend: bundled-modules/notizen/api/handler.mjs
  • React host UI: src/components/modules/notizen-module.tsx
  • voice-note upload routes: src/app/api/notizen-audio/route.ts, src/app/api/notizen-audio/[id]/route.ts
  • route integration: src/app/(app)/modules/[slug]/page.tsx
  • legacy bundled frontend assets remain in bundled-modules/notizen/ui/index.js but are not the active runtime while renderer is react

Key workflows

Organize and write notes

  1. Create folders (nestable) and place notes inside them; each note can hold multiple pages.
  2. Edit text with font family, font size, and bold/italic/underline controls.
  3. Use markdown-style list shortcuts: -, *, or 1. at the start of a line converts into a real unordered/ordered list on Enter.

Draw and annotate

  • Every page has a scribble canvas for freehand annotations.
  • Drawing payloads round-trip between the web editor, duplicated reMarkable pages, and the Apple Pencil editor through the shared strokes + canvas_size shape, so a sketch imported from web or reMarkable can be continued on iPad and still render back on the web.

Dictate voice notes

  1. Start Diktieren on a page; recording runs until you press stop.
  2. The audio is stored as an attachment and the transcript is appended into the page text.
  3. The web editor shows the live dictation panel only while recording/processing; saved voice notes collapse into compact rows below the editor. Attachments are persisted separately and mirrored into the page payload as audio_attachments[].

Generate and place images

  • Per-page image assets can be generated with OpenAI, dragged around the page, resized, and prompt-edited in place.
  • Positioned image asset metadata is persisted separately from the rich-text HTML body, keeping the image layer reusable for agent/UI actions.

Work with reMarkable imports

  1. reMarkable sync creates a system folder reMarkable with read-only source notes under the normal Notizen hierarchy (source_kind, source_external_id, source_synced_at, is_read_only, per-folder system_key).
  2. Read-only reMarkable notes cannot be edited in place on web, Apple, or agent paths; use Bearbeitbare Kopie erstellen (backed by POST /notes/:id/duplicate-local) to clone the source note into a normal local note.
  3. PDF-only reMarkable imports remain in /dokumente.

Apple client

The native root screen focuses on search, folder filtering, and the note list; tapping a note opens a dedicated native editor for page create/delete, dictation and voice-note capture, audio playback, and plain-text editing with font settings. Advanced rich-text formatting stays in the web module; Pencil drawing is Apple-native on supported iPads and can continue shared-stroke sketches imported from web or reMarkable duplicates.

How the agent can drive it

notizen exposes first-class agent tools across chat, live voice, and the native ClapilotAICore runtime:

  • notizen_list_folders
  • notizen_create_folder
  • notizen_list_notes
  • notizen_get_note
  • notizen_create_note
  • notizen_update_note
  • notizen_duplicate_local
  • notizen_create_page
  • notizen_update_page

Behavior notes:

  • Tool calls resolve the active folder_id, note_id, and page_id from the current Notizen page context when those ids are omitted.
  • Mutating tool calls emit structured live UI actions — notizen.folder.updated, notizen.note.updated, notizen.page.updated — which the open Notizen module consumes to update visible folders, notes, pages, and the editor in place, including live highlight feedback.
  • There are no notizen_delete_* agent tools: deleting notes, folders, or pages is available through the UI and module API only.
  • The older /api/chat note-creation shortcut still exists for simple create-note phrasing, but the canonical path is the tool catalog above.

Module API reference

Base: /api/modules/notizen/api

RoutePurpose
GET /folders, POST /folders ({ name, parent_id })list/create folders
DELETE /folders/:folderIddelete a folder
GET /notes, POST /notes ({ title, folder_id })list/create notes
GET /notes/:id, PUT /notes/:id, DELETE /notes/:idread/update/delete one note
POST /notes/:id/duplicate-localclone a (read-only) note into an editable local note
GET /notes/:id/pages, POST /notes/:id/pages ({ title })list/create pages
GET /notes/:id/pages/:pageId, PUT /notes/:id/pages/:pageId, DELETE /notes/:id/pages/:pageIdread/update/delete one page
GET /healthhealth check

Configuration & limits

  • All rows are scoped by owner_user_id; the module requires user identity from the module runtime context. Native-runtime workflows use the system-token protected module endpoint.
  • Read-only reMarkable source notes reject in-place edits everywhere (web, Apple, agent); duplication is the supported editing path.
  • Voice-note audio uploads run through the dedicated /api/notizen-audio routes, not the module API.
  • The module uses the same app-shell sizing rules as native Clapilot pages, so chat/sidebar layout does not depend on iframe host offsets.

Troubleshooting

  • A reMarkable note cannot be edited: that is by design (is_read_only); create an editable copy via Bearbeitbare Kopie erstellen.
  • Agent cannot delete a note: expected — deletion is UI/module-API only; there is no notizen_delete_* tool.