Skip to content

KunMoe/kun-galgame-forum

Repository files navigation

kun-galgame-forum

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.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors