GooseForum

command module
v0.2.73 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2026 License: MIT Imports: 2 Imported by: 0

README

GooseForum

A forum for conversations, shared knowledge, and lasting communities.

GitHub release Mentioned in Awesome Go Go version TailwindCSS License GitHub stars

中文 | English

GooseForum interface preview

GooseForum is an open-source forum for discussions, shared knowledge, and ongoing connections. From the first topic to managing content, members, and your community’s look, it gives you the tools to build and run a community on your own server.

Try the demo · Download the latest release

Features

  • Make room for discussion: Markdown topics, replies, categories, and drafts keep sharing and conversations organized.
  • Stay connected: Notifications, private messages, and user profiles help conversations continue beyond a topic.
  • Run your community: A built-in admin console with role and permission management.
  • Make it your own: Customize your logo, brand copy, and footer, then preview and publish light and dark themes in the theme workbench.
  • Join from any screen: Desktop and mobile layouts, smooth navigation, and accessible pages when JavaScript is unavailable.
  • Host it yourself: A single executable, SQLite by default, optional MySQL, and scheduled backups.

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.27+
  • 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 migrate
./GooseForum set-user-admin <userId>
./GooseForum set-user-email <userId> <email>
./GooseForum set-user-password <userId> <password>

Development

The backend uses Go, Gin, and GORM; the frontend uses Vue 3, TypeScript, Vite, and TailwindCSS. Server payloads drive navigation, with GoHTML fallback pages for SEO and access without JavaScript.

# 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/                   # Configuration 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/oidcprovider
Package oidcprovider contains the HTTP-agnostic OAuth 2.0/OIDC provider core.
Package oidcprovider contains the HTTP-agnostic OAuth 2.0/OIDC provider core.
bundles/oidcprovider/storetest
Package storetest provides a reusable contract suite for oidcprovider Store implementations.
Package storetest provides a reusable contract suite for oidcprovider Store implementations.
bundles/queryopt
Package queryopt builds small GORM-compatible query fragments.
Package queryopt builds small GORM-compatible query fragments.
bundles/redirectopt
Package redirectopt validates browser redirects that must remain within the current origin.
Package redirectopt validates browser redirects that must remain within the current origin.
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/oidcprovider
Package oidcprovider adapts the transport-neutral OIDC provider core to Gin.
Package oidcprovider adapts the transport-neutral OIDC provider core to Gin.
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/oidcproviderservice
Package oidcproviderservice assembles GooseForum persistence and users with the transport-independent OIDC provider core.
Package oidcproviderservice assembles GooseForum persistence and users with the transport-independent OIDC provider core.
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