[OCaml] Mobile-friendly clone of cgit.
Table of Contents
ogit
A lightweight, mobile-friendly alternative to cgit: a server-rendered web interface for browsing Git repositories. Pages work with JavaScript disabled and aim at WCAG 2.1 AA.
Reading order
Requests flow through the layers below in order. Start at {!module-Ogit.Routes} if you are tracing a URL, or at {!module-Ogit.Ui} if you are changing how a page looks.
Request handling
- {!module-Ogit.Routes} — bidirectional, type-safe paths shared by route registration and link generation. - {!module-Ogit.Handlers} — opens one repository context per request, maps errors to HTTP statuses, and pairs data access with rendering. - {!module-Ogit.Resolvers} — repository discovery and Git data access. - {!module-Ogit.Static_handler} — serves assets embedded at build time. - {!module-Ogit.Main} — loads configuration and starts the server.
Rendering
The view layer is split so that page code stays declarative.
- {!module-Ogit.Ui} — the only module that names HTML elements. Generic and app-agnostic: a library of site building blocks. - {!module-Ogit.Components} — ogit's page parts, wired to {!module-Ogit.Routes} so URLs are never written by hand. - {!module-Ogit.Layout} — the page shell surrounding every page's content. - {!module-Ogit.Root} — the repository list and project directory pages. - {!module-Ogit.Repo_view} — the repository pages. - {!module-Ogit.Error} — error pages.
Supporting modules
- {!module-Ogit.Syntax} — guesses a blob's language for highlighting. - {!module-Ogit.Time_format} — formats Git dates for display. - {!module-Ogit.Line_diff} — computes line-oriented diffs between blobs. - {!module-Ogit.Charts} — generates standalone SVG charts. - {!module-Ogit.Config} — reads and validates the TOML configuration. - {!module-Ogit.List_ext} — small list helpers.
{!module-Ogit.Static_assets} is generated at build time by [ocaml-crunch] from the contents of [lib/static/]; it carries no documentation of its own.
Building this documentation
dune build @doc
The entry point is [_build/default/_doc/_html/index.html]. {!page-"conventions"} records the conventions this documentation follows.