57 lines
1.6 KiB
Markdown
57 lines
1.6 KiB
Markdown
# snotes (SchmeeveNotes)
|
|
|
|
A simple hosted markdown notes app. Notes are stored as plain `.md` files on a
|
|
filesystem mount (NAS), with metadata and full-text search kept in SQLite.
|
|
|
|
## Features
|
|
|
|
- Rich text editor (TipTap) with markdown round-trip
|
|
- Twitter-style `#tags` parsed automatically from note text
|
|
- Front page with recent notes, most-used tags, and search (SQLite FTS5)
|
|
- Multi-user spaces selected via cookie, plus a shared `common` space
|
|
- Local (LAN) access needs no password; remote access needs one set in `.env`
|
|
- Append-only note history recording time, IP, and user-agent
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
uv sync
|
|
./run-local
|
|
```
|
|
|
|
Open http://localhost:8000
|
|
|
|
## Docker
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
Runs on http://localhost:8019, mounting `/mnt/aura/snotes` for notes.
|
|
|
|
## Configuration
|
|
|
|
| Variable | Default | Description |
|
|
|---|---|---|
|
|
| `DATA_DIR` | `data/notes` | Filesystem directory for `.md` notes |
|
|
| `DATABASE_PATH` | `snotes.db` | SQLite metadata + FTS index |
|
|
| `USERS` | `schmeeve,ilya` | Comma-separated fixed usernames |
|
|
| `COMMON_SPACE` | `common` | Shared space name |
|
|
| `REMOTE_PASS` | _(empty)_ | Remote-access password |
|
|
| `SECRET_KEY` | `change-me-...` | Signing key for auth cookies |
|
|
| `LAN_CIDRS` | `192.168.1.0/24` | Subnets allowed in without a password |
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
uv run pytest
|
|
```
|
|
|
|
## Stack
|
|
|
|
- **Backend**: Python / FastAPI / aiosqlite (FTS5)
|
|
- **Editor**: TipTap (ProseMirror) + marked + Turndown for markdown round-trip
|
|
- **Storage**: Markdown files on a mounted filesystem; SQLite for metadata
|
|
- **Deploy**: Docker
|