No description
  • Svelte 67.4%
  • TypeScript 24.4%
  • HTML 6.2%
  • CSS 1.2%
  • Dockerfile 0.6%
  • Other 0.2%
Find a file
2026-04-20 13:29:10 +00:00
.cursor initial 2026-01-02 01:24:36 +07:00
.vscode initial 2026-01-02 01:24:36 +07:00
content/articles Update article: Очень важная инфа 2026-04-20 13:29:10 +00:00
example initial 2026-01-02 01:24:36 +07:00
src update shit 2026-01-26 16:58:08 +07:00
static Award achievement first_character to player Винсент Фаброн 2026-01-31 13:12:58 +00:00
.dockerignore initial 2026-01-02 01:24:36 +07:00
.env.example . 2026-01-02 20:47:13 +07:00
.gitignore initial 2026-01-02 01:24:36 +07:00
.mcp.json initial 2026-01-02 01:24:36 +07:00
.npmrc initial 2026-01-02 01:24:36 +07:00
.onedev-buildspec.yml Add .onedev-buildspec.yml 2026-01-25 20:22:43 +00:00
ACHIEVEMENTS.md simple achievments 2026-01-26 01:21:31 +07:00
AGENTS.md initial 2026-01-02 01:24:36 +07:00
CLAUDE.md initial 2026-01-02 01:24:36 +07:00
docker-compose.yml update compose 2026-01-26 03:27:41 +07:00
Dockerfile update compose 2026-01-26 03:29:30 +07:00
package-lock.json simple achievments 2026-01-26 01:21:31 +07:00
package.json simple achievments 2026-01-26 01:21:31 +07:00
PROJECT_GUIDE.md initial 2026-01-02 01:24:36 +07:00
README.md initial 2026-01-02 01:24:36 +07:00
svelte.config.js initial 2026-01-02 01:24:36 +07:00
tsconfig.json initial 2026-01-02 01:24:36 +07:00
vite.config.ts . 2026-01-02 21:40:06 +07:00

Fungatorium

A retro terminal-themed wiki application for TTRPG games, built with SvelteKit, Tailwind CSS, and markdown-based content.

Quick Start

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

Visit http://localhost:5173 to view the app.

Default Login Tokens

  • Visitor: visitor123 (can view all public articles)
  • Admin: admin456 (can view all articles including restricted)

Features

  • Retro CRT terminal aesthetic with scanlines and phosphor green text
  • Token-based authentication (visitor and admin roles)
  • Markdown-based articles with frontmatter
  • Category-based organization
  • Auth-protected articles
  • File-based content (no database required)
  • Automatic article loading on server start

Content Management

Articles are stored as markdown files in content/articles/:

---
title: Article Title
category: Category Name
requiresAuth: false
createdAt: 2026-01-01
updatedAt: 2026-01-02
---

# Your Content Here

Write your article content in markdown...

Adding Articles

  1. Create a new .md file in content/articles/
  2. Add frontmatter with title, category, etc.
  3. Write your content
  4. Restart server or wait for auto-reload

See content/articles/README.md for detailed formatting instructions.

Project Structure

src/
├── lib/
│   ├── components/TerminalLayout.svelte
│   └── server/
│       ├── articles.ts  (markdown loader)
│       └── auth.ts      (token validation)
├── routes/
│   ├── articles/        (article listing & viewing)
│   ├── auth/            (login/logout)
│   └── map/             (placeholder)
content/
└── articles/            (markdown files)
    ├── welcome.md
    ├── mycelial-network.md
    └── ...

Design

The app features a unique retro terminal aesthetic inspired by old CRT monitors:

  • Terminal green (#33ff00) color scheme
  • VT323 display font for headers
  • Fira Code monospace font for body text
  • Scanline overlay effect
  • Retro 3D box shadows
  • Grid background pattern
  • Custom green scrollbar

Tech Stack

  • SvelteKit 2.x - Full-stack framework
  • Svelte 5.x - UI framework with runes
  • Tailwind CSS 4.x - Styling
  • gray-matter - Frontmatter parsing
  • marked - Markdown to HTML
  • TypeScript - Type safety

Authentication

Simple token-based authentication with in-memory store. To add or modify tokens, edit src/lib/server/auth.ts:

const AUTH_TOKENS = {
  visitor123: { role: 'visitor', name: 'Guest Visitor' },
  admin456: { role: 'admin', name: 'Administrator' }
};

Development

Articles are cached for 1 minute during development. To force reload:

  • Restart the server
  • Modify src/hooks.server.ts to trigger reload
  • Wait for cache to expire

License

MIT