{"slug": "drop-in-django-app-to-serve-a-decent-llm-ready-documentation-site", "title": "Drop-in Django app to serve a decent LLM-ready documentation site", "summary": "Mdjango is a new drop-in Django app that serves a technical documentation site from a directory of markdown files, including header, section navigation, table of contents, prev/next links, full-text search, dark mode, and the llms.txt family of machine-readable artifacts. The app is designed to be set up in 30 minutes with a fixed house style — two colour ramp ends, an accent, a font and a base size — and can also export the docs as a static site of plain HTML files. mdjango's own documentation site runs the app with no overrides, and every page has a .md alternate linked from the header.", "body_md": "# mdjango[#](#mdjango)\n\nmdjango is a Django app that allows you to quickly setup a decent technical documentation site. You install it, point\nit at a directory of markdown files, the **Content tree**, and include its URLs under a prefix. Your\nrunning Django process then serves a documentation site at that prefix: header, section navigation,\narticle, table of contents, prev/next links, full-text search, dark mode, and the `llms.txt` family\nof machine-readable artifacts. The docs sit behind the same middleware, authentication and\ndeployment as the rest of the project. You can use it stand-alone or as part of a larger Django app.\nThere's also an option to generate the docs as a static site that you can host as plain html files\noutside the Django process.\n\nThere is one fixed **House style**. You set the ends of two colour Ramps, an accent, a font and a\nbase size. The layout and the rest of the palette are derived and locked. This is by design.\nmdjango is meant to be a drop-in app that you can setup in 30 mins. Not something you should be\ntweaking and customizing endlessly. If you need more customizing, you're better of building your\nown docs feature in your current Django app, or using another off-the-shelf tool that allows for\nmore customization.\n\nThis site is mdjango documenting itself: a Django project that mounts mdjango with no overrides, so\nwhat you are looking at is the default. Every page has a `.md` alternate, linked from the header.\n\n## Read in this order[#](#read-in-this-order)\n\n1. [Install and mount](getting-started/install-and-mount/) takes an existing project to a rendered\n   page.\n2. [Write a page](how-to/write-a-page/) and[Structure a content tree](how-to/structure-a-content-tree/) cover authoring.\n3. [Brand the header](how-to/brand-the-header/) and[Change the colours and type](how-to/change-colours-and-type/) make it yours.\n4. [Run in production](how-to/run-in-production/) before you deploy. Caching and draft visibility\n   change when`DEBUG` is off.\n\nThe [reference](reference/settings/) section lists every setting, route, front-matter key and CSS\ntoken. The [explanation](explanation/the-filesystem-is-the-source-of-truth/) section covers the\ndesign choices you will meet when operating it.\n\nIf all you need is the docs and nothing else from Django, [Export a static site](how-to/export-a-static-site/)\nwrites the same site to a directory.", "url": "https://wpnews.pro/news/drop-in-django-app-to-serve-a-decent-llm-ready-documentation-site", "canonical_source": "https://mdjango.chesselink.com/", "published_at": "2026-09-20 09:18:44+00:00", "updated_at": "2026-09-20 09:22:48.676528+00:00", "lang": "en", "topics": ["ai-crawlers", "developer-tools"], "entities": ["mdjango", "Django"], "alternates": {"html": "https://wpnews.pro/news/drop-in-django-app-to-serve-a-decent-llm-ready-documentation-site", "markdown": "https://wpnews.pro/news/drop-in-django-app-to-serve-a-decent-llm-ready-documentation-site.md", "text": "https://wpnews.pro/news/drop-in-django-app-to-serve-a-decent-llm-ready-documentation-site.txt", "jsonld": "https://wpnews.pro/news/drop-in-django-app-to-serve-a-decent-llm-ready-documentation-site.jsonld"}}