From b918b70fe42314e358b5a5e1fcbc123857ae7358 Mon Sep 17 00:00:00 2001 From: Labyricorn Date: Thu, 23 Jul 2026 11:10:39 -0700 Subject: [PATCH] Initialize Labyricorn site source --- .gitignore | 19 ++++++++++++++++ .labyricorn/site.yml | 40 +++++++++++++++++++++++++++++++++ README.md | 44 ++++++++++++++++++++++++++++++++++++ articles/welcome.md | 30 +++++++++++++++++++++++++ docs/AUTHORING.md | 31 +++++++++++++++++++++++++ docs/DEPLOYMENT.md | 51 ++++++++++++++++++++++++++++++++++++++++++ media/.gitkeep | 1 + pages/index.md | 24 ++++++++++++++++++++ projects/labyricorn.md | 32 ++++++++++++++++++++++++++ 9 files changed, 272 insertions(+) create mode 100644 .gitignore create mode 100644 .labyricorn/site.yml create mode 100644 README.md create mode 100644 articles/welcome.md create mode 100644 docs/AUTHORING.md create mode 100644 docs/DEPLOYMENT.md create mode 100644 media/.gitkeep create mode 100644 pages/index.md create mode 100644 projects/labyricorn.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e42dcad --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# Local editor and operating-system files +.DS_Store +Thumbs.db +.idea/ +.vscode/ + +# Local secrets and overrides +.env +.env.* +!.env.example +.labyricorn/local.yml + +# Generated output and local caches +dist/ +output/ +.cache/ +.labyricorn/cache/ +.labyricorn/builds/ + diff --git a/.labyricorn/site.yml b/.labyricorn/site.yml new file mode 100644 index 0000000..24b203c --- /dev/null +++ b/.labyricorn/site.yml @@ -0,0 +1,40 @@ +version: 1 + +enabled: true + +repository: + type: site + visibility: private + +website: + enabled: true + visibility: featured + section: site + include_in_homepage: true + include_in_search: true + include_in_rss: true + +artifacts: + readme: false + releases: false + issues: false + wiki: false + content_paths: + - pages + - articles + - projects + media_paths: + - media + +display: + title: Labyricorn + description: A configuration-first, Git-driven site. + +community: + discussions: disabled + comments_enabled: false + +publishing: + local: true + targets: [] + diff --git a/README.md b/README.md new file mode 100644 index 0000000..7396e80 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# Labyricorn Site + +This repository is the initial Git source for the public Labyricorn website. +It is intentionally small so the first deployment proves the complete local +publishing path before more content or integrations are added. + +## Source of truth + +This repository is authoritative for the site content it contains. Labyricorn +reads `.labyricorn/site.yml`, discovers the configured content, builds the +website, and publishes the completed output to the local canonical site. + +Generated website files do not belong in this repository. + +## Repository structure + +```text +.labyricorn/site.yml Repository participation and publishing policy +pages/ Standalone website pages +articles/ Article source documents +projects/ Project source documents +media/ Images and other intentionally public media +docs/ Operator and author documentation +``` + +## Initial deployment boundary + +The first deployment includes: + +- one homepage; +- one introductory article; +- one project page; +- local publication through Labyricorn. + +It does not yet include: + +- comments or community submissions; +- GitHub mirroring; +- Cloudflare Pages; +- remote publishing targets; +- private credentials or generated output. + +See `docs/DEPLOYMENT.md` for the deployment sequence. + diff --git a/articles/welcome.md b/articles/welcome.md new file mode 100644 index 0000000..f1e52df --- /dev/null +++ b/articles/welcome.md @@ -0,0 +1,30 @@ +--- +model: article +title: Welcome to Labyricorn +slug: welcome +date: 2026-07-23 +status: published +summary: Why the first deployment is intentionally small and locally hosted. +tags: + - labyricorn + - publishing + - git +--- + +# Welcome to Labyricorn + +Labyricorn is a configuration-first, Git-driven site builder. Repositories +provide content and configuration; the builder turns those sources into a +coherent website; the generated local site is the canonical runtime copy. + +This initial deployment focuses on one honest workflow: + +1. synchronize this repository; +2. read its Labyricorn configuration; +3. discover its Markdown documents; +4. render the configured website; +5. publish the result locally; +6. report what actually happened. + +Additional publishing targets can be added after that workflow is dependable. + diff --git a/docs/AUTHORING.md b/docs/AUTHORING.md new file mode 100644 index 0000000..60b77f8 --- /dev/null +++ b/docs/AUTHORING.md @@ -0,0 +1,31 @@ +# Authoring Content + +Content is written in Markdown and committed to Git. + +## Front matter + +Every document begins with YAML front matter. At minimum, provide: + +```yaml +--- +model: article +title: Example title +slug: example-title +status: draft +--- +``` + +The `model` value must match an installed and enabled Labyricorn content-model +definition. Model behavior comes from configuration; the engine must not +special-case the model name. + +## Publishing state + +Use `status: draft` while working. Change it to `status: published` when the +document is ready for the public site. + +## Media + +Place intentionally public assets in `media/`. Do not commit credentials, +private source files, local configuration overrides, or generated site output. + diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md new file mode 100644 index 0000000..be8babd --- /dev/null +++ b/docs/DEPLOYMENT.md @@ -0,0 +1,51 @@ +# Initial Deployment + +This document defines the first deployment boundary. It does not assume GitHub, +Cloudflare Pages, Docker, or a public Control Plane. + +## Target environment + +- Gitea: `https://git.labyricorn.com` +- Labyricorn: installed directly in an LXC container +- Control Plane: private network access only +- Public site: static output served by the configured local runtime +- Canonical site address: `https://labyricorn.com` + +## Deployment sequence + +1. Create an empty repository on `git.labyricorn.com`. +2. Add that Gitea repository as the remote for this local repository. +3. Push the default branch to Gitea. +4. Connect the repository in the Labyricorn Control Plane. +5. Synchronize it and confirm `.labyricorn/site.yml` is valid. +6. Confirm that the `page`, `article`, and `project` models are installed and + enabled in Labyricorn. +7. Confirm discovery finds the three Markdown documents in this repository. +8. Preview the generated routes and resolve any validation errors. +9. Build the site. +10. Publish the completed build to the local canonical site. +11. Verify the homepage, article, and project page from a browser. +12. Record the deployed Git revision and active local release. + +## Required proof + +The initial deployment is successful only when all of the following are true: + +- the repository revision shown by Labyricorn matches Gitea; +- configuration validation uses the committed `site.yml`; +- all three source documents are discovered without filename heuristics; +- generated routes come from configured model behavior; +- the public pages are served from the activated local release; +- restarting the Control Plane does not erase deployment state; +- no operational success status is fabricated. + +## Not part of the first deployment + +Add these only after the local path is proven: + +- GitHub deployment mirror; +- Cloudflare Pages; +- anonymous comments; +- social sharing automation; +- additional projections or publishing targets. + diff --git a/media/.gitkeep b/media/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/media/.gitkeep @@ -0,0 +1 @@ + diff --git a/pages/index.md b/pages/index.md new file mode 100644 index 0000000..d9a40db --- /dev/null +++ b/pages/index.md @@ -0,0 +1,24 @@ +--- +model: page +title: Labyricorn +slug: home +route: / +status: published +summary: A configuration-first, Git-driven home for projects, articles, and documentation. +--- + +# Build once. Understand every part. + +Labyricorn brings project information, articles, and documentation together +without replacing Git as the source of truth. + +The first version of this site is deliberately small. It exists to prove the +complete publishing path from a repository, through Labyricorn, to the locally +hosted public website. + +## Start here + +- Read the introduction to the publishing approach. +- Follow the Labyricorn project as the platform becomes operational. +- Return as additional repositories and content models are connected. + diff --git a/projects/labyricorn.md b/projects/labyricorn.md new file mode 100644 index 0000000..ff05f8b --- /dev/null +++ b/projects/labyricorn.md @@ -0,0 +1,32 @@ +--- +model: project +title: Labyricorn +slug: labyricorn +status: published +summary: A configuration-first, Git-driven site builder and its administrative control plane. +repository_url: https://git.labyricorn.com +tags: + - labyricorn + - git + - static-site +--- + +# Labyricorn + +Labyricorn builds and hosts locally generated sites from Git repositories. +Content models, routes, navigation, styles, themes, and integrations derive +their meaning from configuration rather than hardcoded content-type names. + +## Current milestone + +Deploy one small site from a real repository and make every stage observable +and understandable. + +## Operating principles + +- Git remains authoritative. +- Site behavior is configuration-driven. +- Local production hosting is the baseline. +- Remote publishing is optional. +- Reported status must reflect real operations. +