Skip to content

About

Self-hosted learning tracker that measures how well you know a subject, not just how many boxes you ticked.

Topics

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Knowledge Log

Track what you actually know about something.

Most ways of tracking learning are just lists. A checkbox next to "learn Kubernetes" says nothing about whether you could explain it to someone, and a folder of notes says nothing about how much is left.

Knowledge Log is a place to break a subject into pieces, record where you stand on each one, and get an honest number back. Keep a topic private as a personal notebook, or make it public so other people can follow along, discuss it, and learn from the path you took.

Self-hosted, open source, and yours to run.


Run it

You need Docker with the Compose plugin. Nothing else.

# Get the two files you need
curl -O https://raw.githubusercontent.com/negeek/knowledge_log/main/docker-compose.example.yml
curl -O https://raw.githubusercontent.com/negeek/knowledge_log/main/.env.example
mv .env.example .env

Open .env and set three things:

SECRET_KEY=              # python -c "import secrets; print(secrets.token_urlsafe(50))"
POSTGRES_PASSWORD=       # anything long and random
ALLOWED_HOSTS=localhost,127.0.0.1

Then start it:

docker compose -f docker-compose.example.yml up -d
docker compose -f docker-compose.example.yml exec web python manage.py createsuperuser

Open http://localhost:8000.

TLS is left to whatever reverse proxy you already run, such as Caddy, Traefik, or nginx, in front of port 8000.

Email is set to console by default, which logs messages instead of sending them, so nothing needs configuring to get started. Point EMAIL_PROVIDER at SMTP, Resend, SendGrid, or SendPulse when you want real delivery. Every setting is listed in .env.example.

Running from source

git clone https://github.com/negeek/knowledge_log.git
cd knowledge_log
cp .env.example .env     # set SECRET_KEY
make migrate
make up

See docs/contributing.md for the full development setup.


Features

Progress that means something. Break a topic into entries, mark where you are on each, and get a percentage that reflects the whole thing. Entries can nest as deep as the subject actually goes, so a single item that turns out to contain a whole sub-project can be opened up rather than glossed over.

Two ways to measure, because subjects differ. Some things have a finish line. Others do not.

  • Checklist answers "am I done?". Entries move from to do, to in progress, to done.
  • Mastery answers "how well do I know this?". Entries move from unknown, to aware, to working, to fluent, to can teach.
  • Manual is for when you would rather just set the number yourself.

No guesswork up front. You never have to estimate what fraction of a subject an entry represents. Everything starts equal, and when one item turns out to be three times the work, you say so and the whole topic recalculates.

Deadlines that notice. Give a topic a target date and it will tell you when you are falling behind, when the date is approaching, and when it has passed. Quiet, and only when there is something to say.

Private by default. New topics are visible only to you. Publish one when you want to, archive it when you are finished, and change your mind at any time.

A place to learn in public. Public topics can be followed, liked, and discussed. Comment on a whole topic or on one specific entry, and reply to other people.

Two feeds. One follows the people you follow. The other surfaces what is active across the whole instance, weighted so that good new topics can surface rather than the same few sitting at the top forever.

Your profile as a record. Bio, avatar, most-liked topics, and totals, showing what you have actually worked through.

Notifications that stay out of the way. New followers, likes, comments, replies, deadline nudges, and completed topics. Read them in the app.

Dark mode, following your system setting or your explicit choice.

A full API. Everything the web interface does is available as a documented JSON API with interactive docs at /api/docs/, so the data stays yours to build on.


Documentation

docs/ explains how the codebase is built and why it is shaped the way it is. Start with docs/architecture.md.

architecture.md Layering, request flow, app layout
models.md The data model
repositories.md Queries and the visibility rules
services.md Business logic and background work
api.md The JSON API
web.md The server-rendered UI and HTMX conventions
design-system.md Color, type, spacing, components
decisions.md Why things are the way they are
infrastructure.md Settings, Docker, CI/CD, environment
testing.md How the suite is organised
contributing.md Setup and workflow

Built with

Python 3.13, Django 5.2 LTS, Django REST Framework, PostgreSQL 17, Redis 7, Celery, HTMX and Alpine with no build step, and uv for dependencies.

Contributing

Issues and pull requests are welcome. Start with docs/contributing.md, which lists setup, the conventions worth knowing, and some self-contained places to begin.

License

MIT.

About

Self-hosted learning tracker that measures how well you know a subject, not just how many boxes you ticked.

Topics

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages