README: add transparency sections, TOC, update project structure
This commit is contained in:
parent
16dacbf7ed
commit
8ca4d90416
1 changed files with 64 additions and 1 deletions
65
README.md
65
README.md
|
|
@ -2,6 +2,27 @@
|
|||
|
||||
A personal, decentralized search engine built on the [Reticulum](https://reticulum.network/) mesh network. You save pages you find. They are stored locally and shared over a mesh network so other people can find them too.
|
||||
|
||||
## Contents
|
||||
|
||||
- [About this project](#about-this-project)
|
||||
- [Features](#features)
|
||||
- [Performance & Scale](#performance--scale)
|
||||
- [Docker](#docker)
|
||||
- [Data storage](#data-storage)
|
||||
- [Getting started](#getting-started)
|
||||
- [Remote gateway](#remote-gateway)
|
||||
- [How it works](#how-it-works)
|
||||
- [Known rough edges](#known-rough-edges)
|
||||
- [Forum plugin](#forum-plugin)
|
||||
- [Project structure](#project-structure)
|
||||
- [Security](#security)
|
||||
- [Maintenance](#maintenance)
|
||||
- [Dependencies](#dependencies)
|
||||
|
||||
## About this project
|
||||
|
||||
Code generated by LLMs. Built by one person.
|
||||
|
||||
## Features
|
||||
|
||||
- **Personal search index** — Save pages you find valuable, search them with full-text search (SQLite FTS5)
|
||||
|
|
@ -13,6 +34,19 @@ A personal, decentralized search engine built on the [Reticulum](https://reticul
|
|||
- **Mesh-native** — Works over Reticulum without the internet; encrypted and decentralized by default
|
||||
- **Forum plugin** — Optional link-sharing discussion board over the mesh (see Forum section below)
|
||||
|
||||
### What sharing means
|
||||
|
||||
Once a subscriber syncs your pages, you have no control over their copy.
|
||||
No revocation, no DRM, no expiry. If you shared a page, assume it's out
|
||||
there permanently.
|
||||
|
||||
Tag-based sharing (`private`, `public`) is advisory. The software
|
||||
respects these tags in its API response, but there is no technical
|
||||
mechanism preventing a subscriber from re-sharing your data.
|
||||
|
||||
Deletion is local only. Removing a page from your index does not
|
||||
propagate to subscribers.
|
||||
|
||||
## Performance & Scale
|
||||
|
||||
### Search Speed
|
||||
|
|
@ -166,6 +200,18 @@ This connects over Reticulum and serves the remote instance at `http://localhost
|
|||
3. **Subscribe** — Add a friend's destination hash on `/subscriptions` to sync their shared index
|
||||
4. **Customize** — Edit your site name, HTML template, and sharing settings on `/style`
|
||||
|
||||
## Known rough edges
|
||||
|
||||
- Single-user UI
|
||||
- All-or-nothing sharing per mode
|
||||
- Manual sync (except optional forum auto-sync)
|
||||
- No recrawling
|
||||
- No browser extension — bookmarklet only
|
||||
- Desktop-oriented
|
||||
- JSON-only import
|
||||
- Forum threads prune after 30 days by default
|
||||
- Best-effort maintenance
|
||||
|
||||
## Forum plugin
|
||||
|
||||
TinyWeb ships with an optional [tinyweb-forum](https://codeberg.org/tinyweb/tinyweb-forum) plugin — a decentralized link-sharing discussion board that runs in-process alongside TinyWeb.
|
||||
|
|
@ -196,7 +242,15 @@ For full feature docs, see the [tinyweb-forum README](https://codeberg.org/tinyw
|
|||
```
|
||||
app.py — Entry point: boots Reticulum, starts HTTP gateway
|
||||
gateway.py — HTTP-to-RNS bridge (local or remote dispatch)
|
||||
handlers.py — Route dispatcher and all request handlers
|
||||
handlers/ — Route dispatcher and request handlers
|
||||
__init__.py — Dispatch logic + re-exports
|
||||
_helpers.py — CSRF, FTS sanitizer, pagination, response builders
|
||||
search.py — Search (BM25, hybrid, trusted/remote results)
|
||||
pages.py — Add/edit/delete/bulk/bookmark handlers
|
||||
subscriptions.py — Sync, sharing, API, subscription CRUD
|
||||
customize.py — Settings form, about page
|
||||
tags.py — Tag list and browse
|
||||
data.py — Export, import, semantic reindex
|
||||
db.py — SQLite database, FTS5, URL fetching, SSRF protection
|
||||
templates.py — HTML template rendering and escaping
|
||||
rns_client.py — Reticulum client for fetching remote site lists
|
||||
|
|
@ -218,6 +272,15 @@ Other hardening measures:
|
|||
- **Identity file protection** — The Reticulum identity key is restricted to owner-only permissions (0600)
|
||||
- **Forum caveats** — See [tinyweb-forum Security](https://codeberg.org/tinyweb/tinyweb-forum#security) for forum-specific risks (voluntary retractions, block gossip manipulation, no rate limiting)
|
||||
|
||||
#### Not hardened
|
||||
|
||||
- No HTTPS
|
||||
- No authentication
|
||||
- No encryption-at-rest
|
||||
- No rate limiting
|
||||
- Bookmarklet token sent as a plain URL parameter
|
||||
- Forum moderation is gossip-based — block lists can be manipulated
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Database Vacuum
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue