A dead simple personal website engine for developers focused on simplicity

iamhaseeb1 pts0 comments

GitHub - iam-mhaseeb/Koji: Koji ( ◕ ᴥ ◕ ) is a self-hostable dead simple personal website for developers. · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

iam-mhaseeb

Koji

Public template

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>7 Commits<br>7 Commits

.github

.github

app

app

content

content

docs

docs

tests

tests

.gitignore

.gitignore

Dockerfile

Dockerfile

LICENSE

LICENSE

README.md

README.md

docker-compose.yml

docker-compose.yml

pytest.ini

pytest.ini

requirements-dev.txt

requirements-dev.txt

requirements.txt

requirements.txt

View all files

Repository files navigation

Koji ( ◕ ᴥ ◕ )

Koji is a self-hostable dead simple personal website for developers. No database, markdown on disk, and a fast, text-first minimalist layout.

Features

FastAPI — server-rendered HTML, minimal JavaScript

Markdown + YAML — pages and posts in content/

HTMX — live blog search (progressive enhancement)

SEO — meta tags, Open Graph, JSON-LD, sitemap, robots

llms.txt — AI-friendly markdown exports (spec)

Docker — single-container deploy

Quick start

python -m venv .venv && source .venv/bin/activate<br>pip install -r requirements.txt<br>uvicorn app.main:app --reload

Open http://localhost:8000.

In development, saving files under content/ reloads markdown and site.yaml on the next request — refresh the browser. Set KOJI_ENV=production in production to cache content in memory.

docker compose up --build # or Docker<br>pytest # after pip install -r requirements-dev.txt

Example blog

See Koji in production: muhammadhaseeb.me

Documentation

Full guides for using and extending Koji:

Guide<br>Description

Documentation index<br>Start here

Getting started<br>Install, first post, workflow

Configuration<br>Every site.yaml option

Content guide<br>Pages, posts, frontmatter

Theming<br>CSS and templates

Deployment<br>Docker, production, HTTPS

SEO<br>Search and social previews

llms.txt<br>AI assistant exports

Extending Koji<br>New pages, routes, forks

Architecture<br>Code structure for developers

Customize in 60 seconds

Edit content/site.yaml:

title: "Your Name's blog"<br>author: Your Name<br>email: you@example.com<br>url: https://yourdomain.com

Add a post at content/posts/hello.md:

title: Hello<br>slug: hello<br>date: 2026-06-02<br>description: My first post.

Hello, world.

License

MIT — see LICENSE.

About

Koji ( ◕ ᴥ ◕ ) is a self-hostable dead simple personal website for developers.

Resources

Readme

License

MIT license

Uh oh!

There was an error while loading. Please reload this page.

Activity

Stars

star

Watchers

watching

Forks

forks

Report repository

Contributors

Uh oh!

There was an error while loading. Please reload this page.

Languages

Python<br>74.1%

CSS<br>13.0%

HTML<br>12.4%

Dockerfile<br>0.5%

You can’t perform that action at this time.

koji content search reload license docker

Related Articles