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.