This repository houses the Rust/Axum site that is currently deployed. A separate mindmap-service/ FastAPI project still lives in the repo, but it is decoupled for now while it undergoes heavy changes and is not part of the running site.
- Rust Website (Frontend): Fast, type-safe web frontend that powers the live site (landing page, about, reading list).
- Mind Map Service (On Hold): Experimental FastAPI microservice kept in
mindmap-service/for future work but intentionally not wired into the site or deployment pipeline. - Python Scripts: Standalone utilities (e.g., exporting the Safari reading list) used by the Rust site.
src/— Rust web application (frontend)mindmap-service/— FastAPI microservice (experimental, currently decoupled)scripts/— Python utilities (e.g., Safari reading list export)templates/— Askama HTML templatesstatic/— Static assets (CSS, fonts, images, data)
- Export your Safari Reading List (if you want
/readingpopulated) using the provided Python script. - Run the Rust site locally or via Docker.
- (Optional) Work on the experimental mind map service separately; it no longer needs to be running for the site to build or serve pages.
uv run python scripts/export_reading_list.py \
--output static/data/reading_list.json- Requires Full Disk Access for your terminal the first time you read
Bookmarks.plist. - Checks
~/Library/Safari/Bookmarks.plist, extracts title/url/date, and writes JSON your site can embed or copy into a Docker image. - Override the destination with
--outputor set theREADING_LIST_FILEenv var for the Rust server. - When building Docker images, copy the exported JSON into the container so
/readingworks without macOS data access.
cargo run
# Visit http://localhost:3000/The FastAPI service still lives in mindmap-service/, but it is intentionally decoupled:
- Not referenced by the Rust router.
- Not linted or built by default (
just lint-allskips it; usejust lint-mindmapif you need to work on it). - Deployment manifests do not start it.
You can still develop it independently by following mindmap-service/README.md when you’re ready to re-integrate.
- See each subproject's README for development, testing, and deployment instructions.
- All Python and Rust code is formatted and linted using standard tools (see Makefiles and pyproject.toml).
MIT