GooseForum

command module
v0.2.60 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 4, 2026 License: MIT Imports: 2 Imported by: 0

README ΒΆ

GooseForum

πŸš€ Modern Go + Vue 3 Forum System

GitHub release pkg.go.dev Go Report Card Mentioned in Awesome Go Go version TailwindCSS License GitHub stars

δΈ­ζ–‡ | English

GooseForum interface preview

Quick Start

Download and Run

Download the latest prebuilt binary from GitHub Releases, then start it:

tar -zxvf GooseForum_Linux_x86_64.tar.gz
chmod +x ./GooseForum
./GooseForum serve

Open http://localhost:5234. The first registered user automatically becomes the administrator.

Build from Source

Requirements:

  • Go 1.26+
  • Node.js 18+
  • pnpm
git clone https://github.com/leancodebox/GooseForum.git
cd GooseForum

cd resource && pnpm install && pnpm build && cd ..
go mod tidy
go build -ldflags="-w -s" .

./GooseForum serve

Configuration

GooseForum creates config.toml on first startup. The default database is SQLite.

[app]
env = "production"

[server]
port = 5234
url = "http://localhost"

[db.default]
connection = "sqlite"
path = "./storage/database/sqlite.db"

See configuration documentation for MySQL, mail, backup, security, and site settings.

Admin Commands

./GooseForum set-user-admin <userId>
./GooseForum set-user-email <userId> <email>
./GooseForum set-user-password <userId> <password>

What Is GooseForum?

GooseForum is a technical community platform built with Go, Gin, GORM, Vue 3, TypeScript, Vite, and TailwindCSS. It ships as a single executable, supports SQLite/MySQL, and provides a payload-driven SPA experience with server-rendered fallback pages for SEO and no-js access.

Live demo: gooseforum.online

Features

  • Markdown topics, replies, categories, notifications, chat, drafts, and user profiles.
  • Role and permission management with a full admin console.
  • Responsive public UI for desktop and mobile.
  • Theme workbench for light/dark theme preview and publishing.
  • SQLite by default, optional MySQL, scheduled backups.
  • Payload-driven navigation with no-js GoHTML templates.
  • Brand customization for logo, text, footer, and site assets.

Development

# Backend with hot reload
air

# Public site and admin console
cd resource && pnpm dev

The admin console is served by the same Vue app under /admin; it does not require a separate frontend service.

Project Structure

GooseForum/
β”œβ”€β”€ app/                    # Backend code
β”‚   β”œβ”€β”€ console/            # CLI commands
β”‚   β”œβ”€β”€ http/               # Controllers, middleware, routes
β”‚   β”œβ”€β”€ models/             # GORM models
β”‚   └── service/            # Business services
β”œβ”€β”€ resource/               # Vue 3 frontend, templates, static assets
β”‚   β”œβ”€β”€ src/site/           # Public site
β”‚   β”œβ”€β”€ src/admin/          # Admin console
β”‚   β”œβ”€β”€ src/runtime/        # Payload runtime and shared browser helpers
β”‚   └── templates/          # GoHTML fallback templates
β”œβ”€β”€ docs/                   # Documentation
β”œβ”€β”€ main.go
└── config.toml

Deployment Notes

For production, place GooseForum behind a reverse proxy such as Nginx or Caddy, enable HTTPS, and configure database backups.

Minimal container image:

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY GooseForum .
CMD ["./GooseForum", "serve"]

Documentation

License

MIT License. See LICENSE.

Documentation ΒΆ

Overview ΒΆ

GooseForum is a self-hosted forum platform built with Go, Vue, and Tailwind CSS.

Directories ΒΆ

Path Synopsis
app
bundles/algorithm
Package algorithm contains cryptographic helpers used by GooseForum.
Package algorithm contains cryptographic helpers used by GooseForum.
bundles/buildinfo
Package buildinfo exposes release metadata compiled into the binary.
Package buildinfo exposes release metadata compiled into the binary.
bundles/closer
Package closer stores process-wide shutdown callbacks.
Package closer stores process-wide shutdown callbacks.
bundles/fileopt
Package fileopt provides small filesystem read, write, and creation helpers.
Package fileopt provides small filesystem read, write, and creation helpers.
bundles/i18n
Package i18n provides lightweight server-side translation for the server-rendered surfaces (SEO / no-JS templates, the activation page and e-mail bodies).
Package i18n provides lightweight server-side translation for the server-rendered surfaces (SEO / no-JS templates, the activation page and e-mail bodies).
bundles/jsonopt
Package jsonopt provides compact JSON encode/decode helpers.
Package jsonopt provides compact JSON encode/decode helpers.
bundles/jwtopt
Package jwtopt creates and validates GooseForum access tokens.
Package jwtopt creates and validates GooseForum access tokens.
bundles/lineopt
Package lineopt provides helpers for processing text files line by line.
Package lineopt provides helpers for processing text files line by line.
bundles/queryopt
Package queryopt builds small GORM-compatible query fragments.
Package queryopt builds small GORM-compatible query fragments.
bundles/setting
Package setting exposes process-level configuration helpers.
Package setting exposes process-level configuration helpers.
bundles/stropt
Package stropt provides string case and pluralization helpers.
Package stropt provides string case and pluralization helpers.
bundles/unicode
Package unicode decodes escaped Unicode sequences in strings.
Package unicode decodes escaped Unicode sequences in strings.
bundles/validate
Package validate wraps go-playground/validator with Chinese translations.
Package validate wraps go-playground/validator with Chinese translations.
cacheconfig
Package cacheconfig owns the capacity policy for bounded server-side caches.
Package cacheconfig owns the capacity policy for bounded server-side caches.
http/controllers/transform
Package transform maps model entities to API/view payload structs.
Package transform maps model entities to API/view payload structs.
http/httputil
Package httputil contains small HTTP response helpers.
Package httputil contains small HTTP response helpers.
service/tokenservice
Package tokenservice creates and parses short-lived account tokens.
Package tokenservice creates and parses short-lived account tokens.
service/urlconfig
Package urlconfig centralizes public URL and route path helpers.
Package urlconfig centralizes public URL and route path helpers.
Package resource exposes embedded templates and static assets.
Package resource exposes embedded templates and static assets.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL