Authoring
So You Want to Help Write the Wiki?
This wiki is a community effort. Every page someone writes makes it more useful for the next person who joins. You do not need to be a developer to contribute โ if you can write Markdown and use GitHub, you can add pages.
This guide covers two paths:
- Just writing content โ the fast path. No local setup needed.
- Full local setup โ for previewing changes before submitting, or making deeper edits to the site config and theme.
Path 1 โ Just Writing a Page
If you only want to add or edit content, you do not need Hugo installed. The wiki is just Markdown files. You can write one, open a pull request, and someone will review and merge it.
1. Fork and clone the repo
2. Create your file
All content lives under content/. The structure looks like this:
Create a .md file in the right section. Every page needs a front matter block
at the top:
titleโ shows up in the sidebar and as the page headingweightโ controls order in the sidebar (lower number = higher up)- Add
type = "chapter"for section landing pages to get the big header style
Write your content in plain Markdown below the front matter. That is it.
3. Submit a pull request
Open a pull request on GitHub. Someone will review it and merge it in.
Path 2 โ Full Local Setup
Do this if you want to preview the site before submitting, or if you are making changes beyond content โ config, menus, theme, etc.
Install Hugo
Verify:
Run the dev server
Open http://localhost:1313. The page live-reloads on every save. Use this to check that your page looks right before submitting.
Build the site
Outputs the static site to public/. You normally do not need this unless you
are deploying.
Editing the Meeting Schedule
The schedule on the home page is the thing you will edit most. It lives in the
front matter of content/_index.md โ not in a database, not in the theme. You
edit Markdown, the site rebuilds, the page updates.
Add a meeting
Open content/_index.md and add one block per meeting:
| Field | Required | What it does |
|---|---|---|
date |
yes | "YYYY-MM-DD", in quotes. Drives everything below. |
title |
yes | What the meeting is about. Keep it one line. |
room |
no | Where it is. Leave it out and the row inherits the weekly room from [params.meeting]. Set it only when a session moves โ another room, another building, or "Online". An overridden room is highlighted so nobody skims past it. |
track |
no | Free text label shown on the right (general, learn, compete). |
lead |
no | Who is running it. |
link |
no | Where to send people who want to prepare. Internal paths start with /. |
status |
no | Manual override. See below. |
The site works out the rest
You do not mark meetings as finished. The page compares each date to today:
- date in the past โ dimmed and struck through
- date is today โ TODAY, red bar
- first date still ahead โ NEXT, red bar
- anything after that โ plain upcoming row
Only one row ever gets a red bar. If a meeting is today, nothing is marked NEXT.
Overriding a row
Set status by hand only when reality disagrees with the calendar:
Order does not matter
Rows are sorted by date when the site builds. Add new meetings anywhere in the list.
Changing the recurring details
Day, time, and room live in one place near the top of the same file:
Change the semester label and the note under the table in [params.schedule].
Adding a Page
Where a file lives decides where it appears. There is no separate menu to update.
Add a page to an existing section
Create content/<section>/<name>.md. Example โ a new page under Linux:
weight orders it against its siblings โ lower numbers come first.
description is the sentence shown on the section’s card grid, so do not skip
it.
Add a whole new section
Create a directory with an _index.md in it:
Then add {{< section-grid >}} at the bottom of that _index.md and the
section lists its own child pages automatically.
Editing a page that already exists
Find the file, change the words, save. Two things to keep in mind:
- The URL comes from the file path. Renaming a file breaks every link to
it. If you must rename, either add
slug = "old-name"to keep the old URL, or grep the repo for the old path and fix every link: descriptionis what other pages show. If you change what a page is about, change its description too โ it appears on the parent section’s card grid, not just in the file.
Moving or deleting a page
Deleting is the same minus the move. Always grep first โ a dead internal link is invisible until someone clicks it.
Reordering pages
weight sorts siblings, lowest first. Leave gaps (10, 20, 30) so you can slot
something in later without renumbering everything.
Checking your work before you push
hugo --quiet printing nothing is the pass condition. Any output is a
problem, including warnings.
Then look at the page in the browser. A page that builds is not a page that reads well:
- Does it appear in the sidebar where you expected?
- Does its card show a sensible description on the parent section?
- Do your links go where you meant?
- Does it look right narrow? Drag the window thin, or open it on your phone.
Common mistakes
| Symptom | Cause |
|---|---|
| Page does not appear at all | Missing front matter, or the +++ delimiters are --- |
| Page appears but the section does not | The directory has no _index.md |
| Blank card on the section grid | No description in front matter |
| Wrong order in the sidebar | weight missing or duplicated between siblings |
| Link 404s | Missing leading /, or missing trailing / |
Build warning about relref |
Use a plain /path/ link instead of the relref shortcode |
| Your CSS change did nothing | You edited themes/ โ that is a submodule; use assets/css/custom.css |
Writing style
Read AGENTS.md in the repo root โ it carries the voice, the policy rules,
and the plain-English guidelines every page follows. The short
version: short sentences, active voice, define jargon the first time you use
it, no filler, and never publish anything that points a reader at a system
they are not allowed to touch.
Rules that keep the site consistent
- Every page needs
title,weight, anddescription. - Section landing pages are
_index.md. Everything else is<name>.md. - Internal links start with
/and end with/โ/learn/linux/permissions/. - Do not edit anything in
themes/โ it is a submodule and your changes will be lost. Site-wide styling goes inassets/css/custom.css. - Do not hand-edit
public/โ it is generated output.
Shortcodes (Fancy Formatting)
Shortcodes are Hugo’s way of doing things plain Markdown cannot. Use them sparingly โ plain text is usually enough and easier to maintain.
| Shortcode | What It Does |
|---|---|
| Notice | Callout boxes (tip, warning, info, caution, etc) |
| Tabs | Tabbed content for OS or environment differences |
| Expand | Collapsible sections for optional content |
| Mermaid | Diagrams and flowcharts rendered from text |
Notice (Callout Boxes)
Use when something needs to stand out โ a warning, a tip, a gotcha. Two syntax options; both work the same way.
Short form (simpler to write):
Shortcode form (more control over the title text):
Swap style= for: tip, warning, info, note, caution, important
Tabs
Use tabs when the same instructions differ by OS or environment and stacking them vertically would be cluttered.
Wrap everything in tabs, then put each option in its own tab block. The
title= value is what appears on the clickable tab.
Any normal Markdown works inside a tab block โ code, lists, paragraphs.
Expand (Collapsible Sections)
Use for content that is optional or would interrupt the flow โ full command output, a deeper explanation, a reference table. The section is collapsed by default; the reader opens it if they want it.
The title= is the label shown while collapsed.
Mermaid (Diagrams)
Renders diagrams from text. No image files, no external tools. Write the diagram definition between the tags.
Mermaid supports flowcharts, sequence diagrams, state machines, Gantt charts, and more. The syntax differs per diagram type โ check the Mermaid docs for what you need.
The Club Mark โ Files You Can Drop In
If you are making a slide, a flyer, a Discord banner, or a page that needs the owl, take it from here rather than screenshotting it off the site. All six are SVG, so they scale to any size cleanly.
Every form comes in two grounds. Pick the one that matches what you are putting it on โ the dark files wash out on paper, the light files disappear on black.
Shield
The full lockup. The only form that brings its own base, so it survives anywhere. Use it when the mark stands alone: an avatar, a sticker, a slide corner.
Owl head
No frame. Use it when it sits on a panel or beside text, where a second border is just clutter.
Full owl
Head, folded wings, breast and talons โ the one on the home page. Use it where there is vertical room and the mark is the subject.
The previews above swap with the theme โ flip it in the topbar and watch.
Before you use it anywhere official, read the rules on Logo & Brand: the palette, the clear space, the minimum sizes, and the FAU trademark warning. This owl is the club’s mark, not the university’s.
Front Matter Reference
| Parameter | Type | Default | What It Does |
|---|---|---|---|
| title | string | โ | Page title |
| weight | int | โ | Sidebar order (lower = higher up) |
| type | string | โ | "home" or "chapter" for special layouts |
| hidden | boolean | false | Hides the page from the sidebar |
| disableToc | boolean | false | Hides the table of contents |
| disableNextPrev | boolean | false | Hides the Next / Previous nav buttons |
Deeper Edits โ Hugo Config and Theme
This section is for changes beyond content: menus, sidebar links, colors, config.
Key files
| File | What it controls |
|---|---|
hugo.toml |
Site title, theme variant, sidebar menus, nav links |
i18n/en.toml |
UI string overrides (e.g. sidebar section title) |
assets/css/theme-hacker.css |
Color scheme โ Base16 Greenscreen palette |
Adding sidebar shortcut links
Shortcut links (Discord, GitHub, etc.) live in hugo.toml under
[[menus.shortcuts]]. Add a new entry:
The sidebar section title (“Quick Links”) is set in i18n/en.toml.
Color scheme
The wiki uses a custom Hacker Terminal palette โ green on black. All colors
are defined as CSS variables in assets/css/theme-hacker.css.
Base palette
| Hex | Role |
|---|---|
#001100 |
Background (main + sidebar) |
#002200 |
Slightly lighter bg (code, boxes) |
#005500 |
Dark accent, borders, separators |
#007700 |
Muted text, visited links |
#009900 |
Secondary elements, H5/H6 headings |
#00BB00 |
Main text, H3/H4 headings |
#00FF00 |
H1/H2 titles, highlights, hover |
#00FF88 |
Hyperlinks (cyan-green) |
#00FFC8 |
Hyperlink hover state |
Key CSS variables
| Variable | Value | What it controls |
|---|---|---|
--PRIMARY-color |
#00BB00 |
Primary brand color |
--PRIMARY-HOVER-color |
#00FF00 |
Hover state |
--MAIN-BG-color |
#001100 |
Page background |
--MAIN-TEXT-color |
#00BB00 |
Body text |
--MAIN-TITLES-TEXT-color |
#00FF00 |
H1 / H2 headings |
--MAIN-LINK-color |
#00FF88 |
Hyperlinks |
--CODE-BLOCK-BG-color |
#002200 |
Code block background |
--CODE-BLOCK-BORDER-color |
#005500 |
Code block border |
--CODE-INLINE-color |
#00FF00 |
Inline code text |
--MENU-SECTIONS-BG-color |
#001100 |
Sidebar background |
--MENU-VISITED-color |
#007700 |
Visited sidebar links |
Edit assets/css/theme-hacker.css to change any of these. The theme variant is
wired up in hugo.toml via themeVariant = 'hacker'.
Using AI to Write Pages
You do not have to write everything from scratch. An AI assistant can draft a Markdown page well, as long as you give it enough context and review what comes out.
What to tell it
- The front matter format (TOML with
+++delimiters) - Which section the page belongs to
- What it should cover
- The tone: direct, practical, no filler
Example prompt:
If your tool reads the repo
Coding agents that run in a terminal read the repo before they write. Point one at the repo root and it picks up the rules on its own:
AGENTS.mdโ one file, everything: build commands, site structure, the writing voice, FAU policy rules, and the Simplified Technical English rules.CLAUDE.mdis a symlink to it, so either name loads the same thing.
Read both yourself before you write a page by hand. They apply to people too.
What to watch for
AI will confidently write things that are wrong. Read it before committing. If the page covers a specific tool or command, test that it actually works.
Cut any paragraph that says nothing. Phrases like “it’s important to note” or “feel free to explore” are filler โ delete them.
Questions?
Reach out on the Discord. No judgment โ we were all new to this once.
Next Logo & BrandThe club owl mark in both forms, with downloads, colours, and rules for using it.