Initialize Labyricorn site source

This commit is contained in:
2026-07-23 11:10:39 -07:00
commit b918b70fe4
9 changed files with 272 additions and 0 deletions
+19
View File
@@ -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/
+40
View File
@@ -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: []
+44
View File
@@ -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.
+30
View File
@@ -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.
+31
View File
@@ -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.
+51
View File
@@ -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.
+1
View File
@@ -0,0 +1 @@
+24
View File
@@ -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.
+32
View File
@@ -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.