Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions orbitmines.com/app/[...path]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,28 @@
import CatchAllClient from './CatchAllClient';
import { PROFILE_NAMES } from '../profiles/[profile]/page';
import loreData from '../../src/lore/generated/lore.json';

// Enumerate the lore reader URLs so /lore/... is directly loadable (dev) and
// prerendered (prod) — otherwise dynamicParams=false would 404 these. All
// render the same client SPA; deeper state (?p, ?entity) is client-side only.
function loreParams() {
const params: { path: string[] }[] = [
{ path: ['lore'] },
{ path: ['lore', 'edit'] },
];
for (const id of Object.keys(loreData.books)) {
params.push({ path: ['lore', id] });
params.push({ path: ['lore', id, 'read'] });
params.push({ path: ['lore', id, 'codex'] });
}
return params;
}

export function generateStaticParams() {
return [
{ path: ['_catchall'] },
...Object.keys(PROFILE_NAMES).map((handle) => ({ path: [`@${handle}`] })),
...loreParams(),
];
}

Expand Down
107 changes: 107 additions & 0 deletions orbitmines.com/content/lore/SCHEMA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Lore content format

All lore is plain markdown under `content/lore/`. A build step
(`scripts/lore/build-lore.mjs`) parses it into `src/lore/generated/lore.json`,
which the reader and codex consume. You can author these files by hand or with
any Obsidian-style editor — the conventions below are deliberately
Obsidian-compatible.

```
content/lore/
books/ one file per book (the main story + per-character books)
chapters/ one file per chapter (a chapter may belong to several books)
characters/ character entities (the "who is this?" cards)
codex/ other entities: events/, locations/, concepts/, organizations/
```

Every entity (book, chapter, character, codex entry) has a stable `id`. Ids are
case-insensitive and referenced from prose with wikilinks: `[[I]]`, or with a
display label `[[I|my little brother]]`. Aliases declared in frontmatter also
resolve.

---

## Books — `books/<id>.md`

```yaml
---
id: main
title: The Story
kind: main # main | character
subtitle: A culmination of every account.
cover: /lore-assets/covers/main.svg
order: 0 # sort order on the /lore landing page
characters: [I, II, III, S, B] # (main books) POV characters offered on the homepage
chapters: # ordered chapter ids that make up THIS book
- prologue
- i-first-day
- ii-lecture
- i-online
---
Back-cover blurb (markdown).
```

- `chapters` is the **ordering authority**. A chapter listed in several books
can appear in a different position in each.
- A `kind: character` book is one character's account. Its homepage links back
to the main story and its sibling character books.

## Chapters — `chapters/<id>.md`

```yaml
---
id: i-first-day
title: First Day
pov: I # POV character id
books: [main, I] # informational; book.chapters controls order
characters: [I, IC, IA] # present in the scene (auto-augmented from wikilinks)
summary: One-line summary for the chapter list.
---
Prose. Reference entities with [[I]] / [[IC|his mother]]. Just write — the
chapter is split into A5 pages automatically (no page markers needed), for both
the web reader and the PDF.

<!-- page -->

A `<!-- page -->` line on its own is optional: it forces a page break where you
want one (auto-pagination still applies within each forced section).
```

### Reveal callouts

Obsidian-style callouts inside a chapter record *what becomes known and when*.
They are anchored to the page they appear on, so the codex only shows them once
a reader has read that far.

```
> [!reveal] A world fact the reader now knows.
> [!knows|I,IA] Characters I and IA learn this; tracked per-character.
> [!event] Something that happened (shown on the codex timeline).
> [!secret|II] Known to the reader and to II, but e.g. not to I.
```

Format: `> [!type]` or `> [!type|id,id,...]` then the fact text. `type` is free
(`reveal`, `knows`, `event`, `secret`, `meets`, ...). The `|csv` lists entity
ids the fact is attributed to.

## Characters — `characters/<id>.md`

```yaml
---
id: I
type: character
name: "[I]"
role: Highschool student
age: 16
image: /lore-assets/characters/I.svg
aliases: []
relations:
- "sibling of [[II]]"
---
Spoiler-free baseline description. Anything time-sensitive should instead be a
reveal callout in the chapter where it surfaces.
```

## Codex — `codex/<kind>/<id>.md`

Same as characters but `type: event | location | concept | organization`.
12 changes: 12 additions & 0 deletions orbitmines.com/content/lore/books/B.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
id: B
title: "Kyra Empson"
kind: character
subtitle: 0.B0.4F.1
cover: /lore-assets/covers/B.svg
order: 5
chapters:
- prologue
---

[B]'s account. (To be written.)
14 changes: 14 additions & 0 deletions orbitmines.com/content/lore/books/I.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
id: I
title: Jay Armac
kind: character
subtitle: 1.E2031.16G.1
cover: /lore-assets/covers/I.svg
order: 1
chapters:
- incident
characters:
- I
---

Future R.
12 changes: 12 additions & 0 deletions orbitmines.com/content/lore/books/II.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
id: II
title: "Hana Armac"
kind: character
subtitle: 1.E2024.23B.1
cover: /lore-assets/covers/II.svg
order: 2
chapters:
- II.1
---

Sister of [[I]]
14 changes: 14 additions & 0 deletions orbitmines.com/content/lore/books/III.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
id: III
title: Bjorne Specter
kind: character
subtitle: 0.E2026.0A.1
cover: /lore-assets/covers/III.svg
order: 3
chapters:
- interlude
characters:
- III
---

Dutch researcher
13 changes: 13 additions & 0 deletions orbitmines.com/content/lore/books/S.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
id: S
title: Raafar Kemmett
kind: character
subtitle: 0.S0.0A.1
cover: /lore-assets/covers/S.svg
order: 4
chapters:
- prologue
- solvergence
---

[S]'s account. (To be written.)
22 changes: 22 additions & 0 deletions orbitmines.com/content/lore/books/main.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
id: main
title: The Main Story
kind: main
subtitle: 1.E2047.0A.1
cover: /lore-assets/covers/main.jpg
order: 0
characters:
- I
- II
- III
- S
- B
chapters:
- prologue
- II.1
- incident
- interlude
- solvergence
---

A mind incapable of being reprogrammed is a vulnerable one. But you are never more vulnerable when you are being reprogrammed! Whether this is self-inflicted or is done so by your environment is of little consequence. After you're in a more stable state, can you more closely represent what reality is?
64 changes: 64 additions & 0 deletions orbitmines.com/content/lore/chapters/II.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
id: II.1
title: II.1
pov: II
books:
- II
- main
characters:
- II
- IIB
- IIC
summary: ""
---
*It's difficult to imagine what life is like without certain technologies. They transform our world. They were once radical, and now they are obvious. For our parents it was the coming of computers and daresay the internet. For us it is its natural expansion as what is now known as the [[ether]].*
**2032**

The door swung open loudly. Taking everyone's attention in the room for a brief moment. All the way in the back of the room sat two students who recognized the person who just entered.

"Perfectly on time [[IIC]]!" shouted one of the two.

"No need to embarass him further [[IIB]]". Said the other one.

"There is in fact every need to embarass him further," teasingly adding in a slow voice: "[[II]]".

[[II]] rolled her eyes in an over-the-top way.

"A you're like this because it's a hoodie-day. I see." he fired at her.

"You're making friends today." she shot a glance up, bringing the pen in her hand to her lips. "But you're right, it is in fact a hoodie-day."

"Ah, here he comes waddling in" said [[IIB]] as their friend came up the stairs running towards them.

Seeming to need air incredibly badly, out of breath, he quickly said: "You guys got-to see this."

At the same time [[II]] and [[IIB]] started speaking:

"I am seeing it."

"See what?"

They exchanged a quick glance, after which [[IIB]] shrugged.

"You guys got-to see this." he repeated even faster.

"See what?" repeated [[II]] too

"We're supposed to be starting Distributed Systems 5 minutes ago." said [[IIB]] dismissively.

"No seriously, here." as [[IIC]] quickly opened his backpack. And took out his laptop.

"I got told by [[IIE]] about this just now. Apparently there's this new game - well he told me it was kind of a game or something - called the [[ether]]."

"A game? The Ether as in The Nether? Minecraft?" said [[IIB]] jokingly.

In a sarcastic tone the friend replied with "Yeah, yeah, of course, exactly, The Nether..."

[[II]] intruigingly said: "As in the luminif- something aether? The physics thing? But then a ... game?"

Before the friend could respond [[IIB]] shot a random: "Well [[IIE]]'s family is from The Netherlands right? Or should I say The Etherlands? That must be where they got the name from."

[[II]] now looked at him once more glaringly, which caused a second shrug.

"Hell if I know where they got the name from, what does it matter? Let me just show you."

11 changes: 11 additions & 0 deletions orbitmines.com/content/lore/chapters/incident.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
id: incident
title: ""
pov: I
books:
- main
- I
characters:
- I
summary: ""
---
14 changes: 14 additions & 0 deletions orbitmines.com/content/lore/chapters/interlude.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
id: interlude
title: Interlude
pov: III
books:
- III
- main
characters:
- III
summary: ""
---
***Regramance** - the state of reaching total reprogrammability. Criticality. A systems ability operate as a universal computer. In psychological terms partially achievable through means of psychosis.*
**[[2200.A]]**

Loading
Loading