Adding a New Platform¶
This guide walks through everything needed to add complete, consistent documentation for a new FujiNet-supported platform. Following this template ensures new platforms integrate smoothly into the existing structure.
Checklist overview¶
flowchart TD
A[New platform support\nadded to firmware] --> B[Create Getting Started guide\ndocs/getting-started/platform.md]
B --> C[Create CONFIG guide\ndocs/config/platform.md]
C --> D[Add platform to nav\nin mkdocs.yml]
D --> E[Add platform tabs to\nindex.md + getting-started/index.md]
E --> F[Add platform entries to\nfeatures/disk-drives.md]
F --> G[Update apps/index.md\nwith platform app list]
G --> H[Update games/high-scores.md\nplatform status table]
H --> I[Open Pull Request]
Step 1: Create the Getting Started guide¶
Create docs/getting-started/<platform-slug>.md using this template:
---
title: Getting Started — <Platform Name>
description: Connect your FujiNet to a <Platform Name>
tags:
- getting-started
- <platform-slug>
---
# Getting Started: <Platform Name>
Brief description of the platform and its FujiNet connection method.
!!! note "Platform maturity" ← include if the port is early-stage
Describe any limitations or early-stage caveats.
## Compatible computers
| Computer | Notes |
|---|---|
| Model A | Notes |
## What you need
- [x] FujiNet for <Platform> (<bus type> variant)
- [x] <Connection cable> (usually included)
- [x] Your <Platform> computer
- [x] Wi-Fi password for your 2.4 GHz network
- [x] microSD card (FAT32, optional)
## Connection diagram
```mermaid
flowchart LR
PLAT[<Platform>\n<Bus> Port] -->|<Cable type>| FN[FujiNet\nDevice]
FN -->|Wi-Fi| NET[Internet / TNFS\nServers]
FN -.->|SD Card| SD[(Local Images)]
Step 1: Connect the hardware¶
(hardware connection instructions)
Step 2: Wi-Fi setup¶
(standard Wi-Fi setup — same pattern as other platforms)
Step 3: Load CONFIG¶
(platform-specific CONFIG launch method)
Step 4: Mount a disk image¶
(standard mounting steps with platform image formats)
Troubleshooting¶
| Symptom | Likely cause | Fix |
|---|---|---|
| ... | ... | ... |
Next steps¶
- Using CONFIG on \<Platform> — link to
../config/<platform-slug>.md - TNFS File Servers
- Games
## Step 2: Create the CONFIG guide Create `docs/config/<platform-slug>.md` using this template: ```markdown --- title: CONFIG — <Platform Name> description: How to navigate the FujiNet CONFIG application on <Platform Name> tags: - config - <platform-slug> --- # Using CONFIG: <Platform Name> Brief description of CONFIG on this platform (display type, native conventions). ## Launching CONFIG | Method | How | |---|---| | Automatic | ... | | Physical button | ... | ## Keyboard reference | Key | Action | |---|---| | Arrow keys | Navigate menus | | Return / Enter | Select | | Escape / Break | Go back | ## Main menu (ASCII art mockup of the menu as displayed on the platform) ## Screen 1: Hosts & Devices **Supported image formats:** | Extension | Description | |---|---| | `.xxx` | ... | ## Screen 2: Network (Wi-Fi management — same as other platforms) ## Popular TNFS servers for <Platform> | Server | Contents | |---|---| | `tnfs.fujinet.online` | Official community server | | `<platform>.irata.online` | <Platform> software archive |
Step 3: Update mkdocs.yml¶
Add the new platform to the nav: section in mkdocs.yml in both the Getting Started and Using CONFIG sections:
nav:
- Getting Started:
- getting-started/index.md
# ... existing platforms ...
- <Platform Name>: getting-started/<platform-slug>.md # ← add here
- Using CONFIG:
- config/index.md
# ... existing platforms ...
- <Platform Name>: config/<platform-slug>.md # ← add here
Step 4: Update shared pages¶
docs/index.md¶
Add a new tab in the "Pick your platform" section:
=== ":material-<icon>: <Platform Name>"
Brief one-sentence description.
[Get started with <Platform Name> →](getting-started/<platform-slug>.md){ .md-button .md-button--primary }
docs/getting-started/index.md¶
Add a card in the "Choose your platform" grid:
- :material-<icon>: **<Platform Name>**
Brief description of the platform and connection method.
[Get started →](<platform-slug>.md){ .md-button }
Add the platform to the "What happens after setup?" CONFIG table.
docs/config/index.md¶
Add the platform to the launch methods table and the platform cards grid.
docs/features/disk-drives.md¶
Add a new tab in the "Supported image formats by platform" tabbed section with the platform's disk image formats and a row in the "Number of simultaneous drives" table.
docs/apps/index.md¶
Add a platform section (even if initially just a stub):
## <Platform Name> apps
| App | Description |
|---|---|
| (more apps coming soon) | |
### Where to find <Platform> apps
- `tnfs.fujinet.online` — `/<platform>/`
docs/games/high-scores.md¶
Add the platform to the "Other platforms" status table at the bottom.
Choosing a platform icon¶
Use a Material Design icon that best represents the platform. Browse available icons at pictogrammers.com/library/mdi. Use the format :material-icon-name: in Markdown.
Common choices:
- :material-atari: — Atari
- :fontawesome-brands-apple: — Apple
- :material-television-classic: — generic retro TV/computer
- :material-controller: — game controller
- :material-television-play: — TV with play button
Platform slug conventions¶
The <platform-slug> used in filenames should be:
- Lowercase
- Hyphenated (no underscores)
- Descriptive but concise
Examples: atari-8bit, apple-ii, commodore-64, coleco-adam, coco
Testing your contribution¶
Before opening a pull request:
# Build must succeed with --strict (no warnings)
mkdocs build --strict
# Start local server and verify all pages render correctly
mkdocs serve
Check:
- [ ] All new pages appear in the navigation
- [ ] All internal links resolve (no 404s)
- [ ] Mermaid diagrams render correctly
- [ ] Tabbed content works
- [ ] No broken images
- [ ] mkdocs build --strict exits with code 0
Opening the pull request¶
- Title:
docs: add <Platform Name> platform documentation - Description: brief summary of what was added and any areas that still need work
- Link to any relevant firmware issues or firmware platform tracker
The CI pipeline will build the docs automatically and post a comment confirming success. A maintainer will review and merge.