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 is a collective of individuals passionate about the Galgame genre. It currently consists of the following sub-websites:
- KUN Visual Novel Forum (this project)
- KUN Visual Novel Sticker Pack (a website dedicated to collecting and creating Galgame sticker packs)
- KUN Visual Novel Development Documentation (this forum is entirely open source, and the development documentation will be publicly available here)
- Kun Visual Novel Navigation Page (A completely open-source navigation site! You can visit all Kun Visual Novel subsites!)
- Kun Visual Novel Patch (The most advanced visual novel patch resource website in the world at the moment! Free forever!)
- Kun Visual Novel Forum Downtime Page (In the event of unavoidable downtime, we will forcibly redirect the forum to this page.)
For more information, please visit the website's About Us page directly
https://www.kungal.com/kungalgame
- 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
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 |
| 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 |
├── 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
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:2333Or run the whole stack in containers (see docker/README.md):
docker compose up -d api web # kun-galgame-infra must be running first| 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 |
This project follows the AGPL-3.0 open-source license.
