Home
Softono

Kun Galgame Forum

Open source Go
1.6K
Stars
69
Forks
20
Issues
9
Watchers
2 months
Last Commit

 About Kun Galgame Forum

The CUTEST visualnovel / galgame forum! Built with Nuxt4, GO Fiber and PostgreSQL. Kun Visual Novel forum 6th generation!

Platforms

Web Self-hosted Docker

Languages

Go

Need Help Installing Kun Galgame Forum?

We provide expert installation service for this software. Our team will install, configure, and secure Kun Galgame Forum on your server. plans start at just $30.

Kun Galgame Forum

View on GitHub

kun-galgame-forum

English | 日本語 | 简体中文 | 繁體中文

Contact us:Telegram | Discord

The image is sourced from the game Ark Order, featuring the character 'KUN' (鲲).

Note on AI-assisted development: Starting from version 5.1.0, this project uses LLM-assisted tools including but not limited to Claude Code for Vibe Coding. All code up to and including version 5.0.70 was written entirely by hand. The last purely hand-written codebase can be found at: v5.0.70 (commit b4ad59e)

KUN Visual Novel Forum

Website Introduction

KUN Visual Novel is a collective of individuals passionate about the Galgame genre. It currently consists of the following sub-websites:

For more information, please visit the website's About Us page directly

https://www.kungal.com/kungalgame

Features

  • Galgame Database — Community-driven Galgame catalog with VNDB integration, multi-language metadata (EN / JA / ZH-CN / ZH-TW), ratings, tags, engine info, and developer profiles
  • Resource Sharing — Upload and share game patches, translations, voice packs, and other resources with provider tracking and platform/language filters
  • Discussion Forum — Full-featured topic system with rich Markdown editing (Milkdown + CodeMirror), replies, nested comments, polls, upvotes, and favorites
  • Collaborative Editing — Git-style PR (Pull Request) workflow for Galgame information edits, with edit history tracking and contributor credits
  • Private Messaging & Chat — Direct messages and contact list served by the Go API
  • Moemoepoint System — Community reputation points earned through contributions (posting, sharing resources, editing Galgame info), unified across the ecosystem via the shared OAuth service
  • Rich Content Editing — Milkdown Markdown editor with KaTeX math formulas, code highlighting, and image upload via drag & drop
  • Dark / Light Theme — System-aware color mode with customizable page transparency, fonts, and background images
  • SEO Optimized — Server-side rendering, structured data (Schema.org), sitemap generation, and RSS feeds for Galgames and topics

Architecture

This is a pnpm workspace monorepo with a Go backend and a Nuxt frontend. It is a downstream app in the kun-galgame-infra ecosystem, which owns the shared PostgreSQL / Redis / Meilisearch and the OAuth, image, and Galgame-wiki services.

Package Role
apps/api Go (Fiber + GORM) REST API — auth, forum, Galgame DB, resources, search, messaging, scheduled jobs
apps/web Nuxt 4 SSR frontend — Vue 3, calls the Go API; the Nitro server only serves RSS feeds

Tech Stack

Layer Technology
Frontend Nuxt 4 (Vue 3 SSR, Nitro node-server)
UI Layer @kungal/ui-nuxt — shared Nuxt layer
Styling Tailwind CSS 4
State Management Pinia with persisted state
Editor Milkdown + CodeMirror
Backend API Go 1.26 + Fiber v2
Database PostgreSQL via GORM — raw-SQL migrations (no Prisma)
Cache Redis
Search Meilisearch
Authentication JWT (dual token — access + refresh) + OAuth (kun-galgame-infra)
Object Storage S3-compatible (Cloudflare R2 image bed + Backblaze B2 for toolset uploads)
Scheduler robfig/cron (daily resets, stats)
Validation Zod (web)
Deployment Docker → GHCR → Dokploy (or PM2 via scripts/)
Analytics Umami

Project Structure

├── apps/
│   ├── api/                 # Go Fiber backend (REST API)
│   │   ├── cmd/             # server, migrate, + one-off backfill/sync tools
│   │   ├── internal/        # domain modules (user, topic, galgame, moemoepoint, message, search, …)
│   │   ├── migrations/      # raw SQL migrations (.up.sql / .down.sql)
│   │   └── pkg/             # cross-cutting (config, logger, health, …)
│   └── web/                 # Nuxt 4 SSR frontend
│       ├── app/             # pages, components, composables, store (Pinia), validations
│       ├── server/          # Nitro routes (RSS feeds only)
│       └── shared/          # shared TypeScript types & utils
├── docker/                  # Dockerfiles + env examples + Docker README
├── docker-compose*.yml      # base (joins infra) + prod
├── scripts/                 # PM2 deploy scripts (deploy / start / stop / restart)
└── docs/                    # documentation

Getting Started

Prerequisites: Node.js 22+ (with Corepack/pnpm), Go 1.26+, PostgreSQL, Redis, and (optionally) Meilisearch. Full functionality also needs the kun-galgame-infra services (OAuth, image, Galgame-wiki).

# Install workspace dependencies
pnpm install

# Configure environment (per app)
cp apps/api/.env.example apps/api/.env   # Go API: DB, Redis, OAuth, S3, mail, search, …
cp apps/web/.env.example apps/web/.env   # Nuxt: API base URL, OAuth client, image/wiki URLs

# Run database migrations (see docs/ for the cross-repo migration order)
pnpm migrate

# Start both apps in parallel — API on :2334, Web on :2333
pnpm dev
#   pnpm dev:api   # Go API only (air hot-reload) → http://127.0.0.1:2334
#   pnpm dev:web   # Nuxt only                     → http://127.0.0.1:2333

Or run the whole stack in containers (see docker/README.md):

docker compose up -d api web        # kun-galgame-infra must be running first

Scripts

Command Description
pnpm dev Run API + Web together (parallel)
pnpm dev:web / pnpm dev:api Run a single app
pnpm build Production build — Go API then Nuxt web
pnpm lint / pnpm lint:fix ESLint (web)
pnpm typecheck vue-tsc type checking (web)
pnpm format Prettier / gofmt across apps
pnpm vet go vet (api)
pnpm test:api go test (api)
pnpm migrate / pnpm migrate:down Run / roll back DB migrations (api)
pnpm sitemap Generate the sitemap
pnpm prod:deploy / prod:start / prod:stop / prod:restart PM2 deployment scripts

Join / Contact Us

License

This project follows the AGPL-3.0 open-source license.