About blk/txt
Turn raw text into searchable context.
BLKTXT turns messy text into searchable operational memory. Ingest notes, logs, tickets, Markdown, and other text-shaped files, then explore extracted entities, timelines, charts, heatmaps, and full-text search from a clean web UI. It is not a notes app: it is a compiler and indexer for messy text.
Source
Raw text
The canonical truth.
Compiled memory
SQLite
Structured, queryable.
The lens
Web app
Search & explore.
Later
AI assistant
Suggests schema & links.
What it parses
Text files, Markdown, logs, ticket notes, snippets, and CSV/YAML-like text: anything text-shaped. Files are split into dated blocks while the original source stays untouched.
Entity extraction
A configurable dictionary of regex patterns pulls out entities (tickets, dates, tags, services, environments, URLs, and your own custom references) and links each match back to the block it came from.
Ticket timelines
Every entity becomes clickable. A timeline page gathers every parsed block where a ticket (or any entity) appears, in chronological order with date, source, and surrounding context.
Charts, stats & heatmaps
Aggregations are computed over the compiled SQLite data: entry counts by day, trending entities, word clouds, and an activity heatmap that shows when and how much you wrote.
Why SQLite
SQLite is the compiled memory: a single, portable, zero-server file that is fast to query, easy to back up, and trivial to rebuild from source at any time.
Source stays canonical
The database is always derived. Your raw text is the source of truth: BLKTXT can rebuild the entire index deterministically and never overwrites your original files.
Built with
- Python 3.10+, Flask, SQLAlchemy
- Typer CLI (
blktxt), Rich - Tailwind CSS
- SQLite