{"id":28092372,"url":"https://github.com/leancodebox/gooseforum","last_synced_at":"2026-06-13T07:01:47.327Z","repository":{"id":285574762,"uuid":"957727147","full_name":"leancodebox/GooseForum","owner":"leancodebox","description":"超简单社区构建软件 / Easy forum software for building friendly communities.","archived":false,"fork":false,"pushed_at":"2026-06-07T11:22:33.000Z","size":10756,"stargazers_count":95,"open_issues_count":0,"forks_count":18,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-07T12:21:43.408Z","etag":null,"topics":["bbs","forum","gin","golang","gooseforum","tailwindcss","vue"],"latest_commit_sha":null,"homepage":"https://gooseforum.online/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leancodebox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-03-31T02:43:31.000Z","updated_at":"2026-06-07T11:22:36.000Z","dependencies_parsed_at":"2025-05-21T02:36:03.166Z","dependency_job_id":"9d5d7e83-182a-4be2-93e1-8848ff118b82","html_url":"https://github.com/leancodebox/GooseForum","commit_stats":null,"previous_names":["leancodebox/gooseforum"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/leancodebox/GooseForum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancodebox%2FGooseForum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancodebox%2FGooseForum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancodebox%2FGooseForum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancodebox%2FGooseForum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leancodebox","download_url":"https://codeload.github.com/leancodebox/GooseForum/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leancodebox%2FGooseForum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34275068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bbs","forum","gin","golang","gooseforum","tailwindcss","vue"],"created_at":"2025-05-13T13:06:56.189Z","updated_at":"2026-06-13T07:01:47.311Z","avatar_url":"https://github.com/leancodebox.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"resource/static/pic/icon_300.webp\" width=\"140\"/\u003e\n  \u003ch1\u003eGooseForum\u003c/h1\u003e\n  \u003cp\u003e🚀 Modern Go + Vue 3 Forum System\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/leancodebox/GooseForum/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/leancodebox/GooseForum.svg\" alt=\"GitHub release\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pkg.go.dev/github.com/leancodebox/GooseForum\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/leancodebox/GooseForum.svg\" alt=\"pkg.go.dev\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://goreportcard.com/report/github.com/leancodebox/GooseForum\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/leancodebox/GooseForum\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://app.codecov.io/gh/leancodebox/GooseForum\"\u003e\u003cimg src=\"https://codecov.io/gh/leancodebox/GooseForum/branch/main/graph/badge.svg\" alt=\"Code coverage\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://golang.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/Go-1.26+-blue.svg\" alt=\"Go version\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://tailwindcss.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/TailwindCSS-4-blue.svg\" alt=\"TailwindCSS\"\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/leancodebox/GooseForum.svg\" alt=\"License\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/leancodebox/GooseForum/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/leancodebox/GooseForum.svg?style=social\" alt=\"GitHub stars\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## 🌐 Language / 语言\n\n[🇨🇳 中文](README_ZH.md) | [🇺🇸 English](README.md)\n\n## 📖 Project Overview\n\nGooseForum is a modern technical community platform built with Go + Vue 3 + TailwindCSS. It keeps deployment simple while using a payload-driven SPA experience with no-js HTML rendering for SEO and graceful fallback.\n\n🌐 **Live Demo**: [GooseForum](https://gooseforum.online/)\n\n## ✨ Core Features\n\n### 🎯 User System\n- **User Registration/Login** - Email activation support\n- **Permission Management** - Role-based access control\n- **User Center** - Profile management, avatar upload\n- **Points System** - Check-in, posting, reply rewards\n- **Admin Panel** - Complete backend management\n\n### 📝 Content Management\n- **Article Publishing** - Markdown editor with preview\n- **Comment System** - Multi-level replies\n- **Article Categories** - Flexible category management\n- **Real-time Notifications** - WebSocket-powered notifications\n- **Chat System** - Real-time messaging\n\n### 🛠 Technical Features\n- **Single File Deployment** - Single executable after compilation\n- **SQLite/MySQL Support** - Default SQLite, MySQL optional\n- **Auto Backup** - Scheduled database backup\n- **Responsive Design** - Perfect mobile support\n- **Brand Customization** - Custom logo/text/image support\n- **Payload-driven SPA** - Smooth in-app navigation with server-provided page payloads\n- **SEO Friendly** - Lightweight no-js GoHTML rendering for crawlers and fallback\n\n## 🚀 Quick Start\n\n### Method 1: Download Pre-compiled Version (Recommended)\n\n1. Download pre-compiled version from [GitHub Releases](https://github.com/leancodebox/GooseForum/releases)\n2. Extract and start:\n\n```bash\n# Extract\ntar -zxvf GooseForum_Linux_x86_64.tar.gz\n\n# Grant permission\nchmod +x ./GooseForum\n\n# Start service\n./GooseForum serve\n```\n\n### Build with GoReleaser\n\n```bash\n# Install GoReleaser\ngo install github.com/goreleaser/goreleaser@latest\n\n# Build all platforms\ngoreleaser build --snapshot --clean\n\n# Build current platform\ngoreleaser build --snapshot --clean --single-target\n```\n\n3. Visit `http://localhost:5234`\n\n\u003e 💡 **Tip**: First registered account becomes administrator\n\n### Method 2: Build from Source\n\n#### Requirements\n- Go 1.26+\n- Node.js 18+\n- pnpm\n\n#### Build Steps\n\n```bash\n# Clone project\ngit clone https://github.com/leancodebox/GooseForum.git\ncd GooseForum\n\n# Build frontend\ncd resource \u0026\u0026 pnpm install \u0026\u0026 pnpm build \u0026\u0026 cd ..\n\n# Build backend\ngo mod tidy\ngo build -ldflags=\"-w -s\" .\n\n# Start service\n./GooseForum serve\n```\n\n### Development Mode\n\n```bash\n# Backend with hot reload\nair\n\n# Public site and admin console frontend\ncd resource \u0026\u0026 pnpm dev\n```\n\nThe current admin console is served by the `resource` Vue app under `/admin`. It does not require a separate admin frontend service.\n\n## 🔧 Configuration\n\nGooseForum auto-creates `config.toml` on first startup:\n\n```toml\n[app]\nenv = \"production\"              # local or production\n# debug is optional; local defaults to true, other environments default to false\n\n[server]\nport = 5234                    # Service port\nurl = \"http://localhost\"       # Site URL\n\n[db.default]\nconnection = \"sqlite\"          # Database type (sqlite/mysql)\npath = \"./storage/database/sqlite.db\"\n```\n\n📖 **Detailed Configuration**: [Configuration Documentation](docs/user/configuration.md)\n\n## 🏗 Technical Architecture\n\n### Backend Tech Stack\n- **Go 1.26+** - Main language\n- **Gin** - Web framework\n- **GORM** - ORM\n- **SQLite/MySQL** - Database\n- **JWT** - Authentication\n- **Cobra** - CLI\n\n### Frontend Tech Stack\n- **Vue 3** - Public site and admin UI framework\n- **TypeScript** - Type-safe frontend code\n- **Payload SPA Runtime** - Client-side navigation via `X-Goose-Page` JSON payloads\n- **TailwindCSS 4** - CSS framework\n- **GoHTML** - Lightweight no-js/SEO templates\n- **Vite** - Build tool\n\n### Admin Panel Tech Stack\n- **Vue 3 + TypeScript** - Admin UI inside `resource/src/admin`\n- **TailwindCSS 4** - Admin-scoped styling and design tokens\n- **Reka UI / VueUse** - Accessible primitives and interaction utilities where needed\n- **Unovis** - Admin charts and statistics visualization\n- **SortableJS / vuedraggable** - Drag sorting for operational lists\n\n## 📁 Project Structure\n\n```\nGooseForum/\n├── app/                    # Backend code\n│   ├── bundles/           # Utilities (JWT, cache, events)\n│   ├── console/           # CLI commands\n│   ├── http/              # Controllers, middleware, routes\n│   ├── models/            # GORM models\n│   └── service/           # Business services\n├── resource/              # Frontend resources\n│   ├── src/\n│   │   ├── site/          # Public Vue app\n│   │   ├── admin/         # Admin Vue app\n│   │   ├── runtime/       # Shared payload runtime\n│   │   ├── styles/        # Public-site styles\n│   │   └── types/         # Shared frontend types\n│   ├── static/            # Static assets\n│   └── templates/         # No-js/SEO GoHTML templates\n├── docs/                  # Documentation\n├── main.go               # Entry point\n└── config.toml           # Configuration\n```\n\n## 🛡 Admin Features\n\n```bash\n# Grant administrator role\n./GooseForum set-user-admin \u003cuserId\u003e\n\n# Set user email\n./GooseForum set-user-email \u003cuserId\u003e \u003cemail\u003e\n\n# Set user password\n./GooseForum set-user-password \u003cuserId\u003e \u003cpassword\u003e\n```\n\n### Admin Panel Features\n- **User Management** - Search, filter, ban, delete users\n- **Site Settings** - General, brand, footer, mail, security, posting\n- **Category Management** - Create, edit, delete categories\n- **Sponsorship Management** - Sponsor tiers and user sponsors\n- **Dashboard** - Traffic stats, daily analytics\n\n### Data Backup\n- Automatic scheduled SQLite backup\n- Configurable frequency and retention\n- Backup in `./storage/databasebackup/`\n\n## 📦 Deployment\n\n### Production\n1. Use reverse proxy (Nginx/Apache)\n2. Configure HTTPS\n3. Set up scheduled backups\n4. Monitor logs\n\n### Docker\n```dockerfile\nFROM alpine:latest\nRUN apk --no-cache add ca-certificates\nWORKDIR /root/\nCOPY GooseForum .\nCMD [\"./GooseForum\", \"serve\"]\n```\n\n## 🤝 Contributing\n\n1. Fork this project\n2. Create feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit changes (`git commit -m 'Add AmazingFeature'`)\n4. Push branch (`git push origin feature/AmazingFeature`)\n5. Create Pull Request\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE)\n\n## 📚 Related Documentation\n\n- [Documentation Index](docs/README.md)\n- [Configuration Documentation](docs/user/configuration.md)\n- [Resource Frontend Design](docs/architecture/resource-frontend.md)\n- [Resource UI Specification](docs/frontend/ui-spec.md)\n- [Chinese README](README_ZH.md)\n\n## 🙏 Acknowledgments\n\nThanks to all contributors!\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eIf this project helps you, please give us a ⭐️\u003c/p\u003e\n  \u003cp\u003eMade with ❤️ by \u003ca href=\"https://github.com/leancodebox\"\u003eLeanCodeBox\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleancodebox%2Fgooseforum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleancodebox%2Fgooseforum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleancodebox%2Fgooseforum/lists"}