Overview
Discover what makes Gancio powerful
Gancio is a lightweight, self‑hosted application that centralises community polls and event planning. At its core it exposes a RESTful API for creating, voting on, and aggregating polls, as well as scheduling events with RSVP support. The project is intentionally kept small to serve local or niche communities where a full‑blown enterprise scheduler would be overkill. The current release (1.28.0) is in alpha and the team plans a full rewrite for 2.0, which will clean up technical debt and modernise the stack.
Polling engine
Event calendar
Webhooks
Admin UI
Overview
Gancio is a lightweight, self‑hosted application that centralises community polls and event planning. At its core it exposes a RESTful API for creating, voting on, and aggregating polls, as well as scheduling events with RSVP support. The project is intentionally kept small to serve local or niche communities where a full‑blown enterprise scheduler would be overkill. The current release (1.28.0) is in alpha and the team plans a full rewrite for 2.0, which will clean up technical debt and modernise the stack.
Key Features
- Polling engine – supports single‑choice, multiple‑choice, and ranked voting. Results are returned in real time via WebSocket notifications.
- Event calendar – CRUD operations on events, RSVP handling, and time‑zone aware scheduling.
- Webhooks – trigger external services on poll closure or event registration.
- Admin UI – a Vue‑based interface for managing polls, events, and user roles.
- Multi‑tenant support – each community node runs in isolation with its own database schema.
Technical Stack
| Layer | Technology |
|---|---|
| Backend | Go 1.22, Gin‑Gonic web framework |
| Database | PostgreSQL (v15+), schema migrations via Goose |
| Frontend | Vue 3 + Vite, Tailwind CSS for styling |
| Real‑time | Gorilla WebSocket library |
| Containerization | Docker Compose for local dev; single‑container images available on Docker Hub |
| CI/CD | GitHub Actions orchestrates linting, unit tests, and image builds |
The Go codebase follows clean‑architecture principles: handlers layer exposes HTTP endpoints, services contain business logic, and repositories abstract database access. This separation makes unit testing straightforward and allows swapping the persistence layer with minimal friction.
Core Capabilities & APIs
- REST API –
/api/v1/polls,/api/v1/eventsendpoints expose CRUD operations and voting actions. All routes are authenticated via JWT, with role‑based access control. - WebSocket –
/ws/polls/{id}streams live vote tallies to subscribed clients. - Webhook registration –
/api/v1/webhookslets callers register URLs to be POSTed on poll closure or event registration. - CLI –
gancio-cliprovides administrative commands such as database migration, seed data import, and health checks.
Developers can embed Gancio in their own dashboards by consuming the API or integrating the WebSocket client library directly into existing SPAs.
Deployment & Infrastructure
- Self‑hosting – A single Docker Compose file (
docker-compose.yml) pulls the official image, mounts a persistent volume for PostgreSQL data, and exposes ports 80 (HTTP) and 443 (HTTPS). No external services are required. - Scalability – While designed for small communities, the stateless Go server can be scaled horizontally behind a load balancer. PostgreSQL can be replicated or sharded if needed, but the current schema is optimized for low‑write workloads typical of community polling.
- Resource footprint – A minimal instance requires ~200 MiB RAM and 500 MB disk for the database, making it suitable for Raspberry Pi or low‑cost VPS deployments.
Integration & Extensibility
- Plugin system – Gancio ships with a pluggable middleware hook (
plugins/) that allows developers to inject custom logic (e.g., rate limiting, analytics) without touching the core code. - SDKs – A lightweight Go client library (
github.com/gancio/sdk-go) wraps the HTTP API, handling authentication and retry logic. - Customization – The Vue UI is component‑based; themes can be swapped by replacing Tailwind configuration or overriding CSS variables. The admin UI is also exposed as a REST endpoint (
/api/v1/ui), enabling developers to build their own frontends. - Webhooks & Callbacks – External services can subscribe to events via JSON payloads, making integration with Slack, Discord, or custom dashboards trivial.
Developer Experience
- Documentation – The project includes a dedicated
docs/folder with API reference, migration guides, and contribution guidelines. The README also hosts a live demo link for quick testing. - Community – Issues and pull requests are actively triaged on GitHub. The team maintains a Slack channel for real‑time support and encourages open discussion around feature requests.
- Testing – The codebase contains comprehensive unit tests (≈80 % coverage) and integration tests that run in the CI pipeline. Test data is generated via Go’s
fakerpackage, ensuring realistic scenarios.
Use Cases
- Neighborhood Associations – Host monthly polls on community projects and schedule volunteer events.
- Campus Clubs – Organise elections, gather event RSVPs, and push updates to Discord via webhooks.
- Small NGOs – Coordinate local workshops with time‑zone aware scheduling and collect feedback through ranked voting.
- Open‑Source Projects – Use Gancio to decide on feature priorities and plan release dates with an embedded calendar.
Advantages
- Performance – Go’s compiled binaries and efficient concurrency model keep latency low even under rapid voting spikes.
- Flexibility – The modular architecture allows swapping PostgreSQL for SQLite in truly constrained environments without code changes.
- Licensing – The project is released under the MIT license, giving developers unrestricted use in commercial or private deployments.
- Low Overhead – No external dependencies
Open SourceReady to get started?
Join the community and start self-hosting Gancio today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Spectrum 2
Cross‑network instant messaging for self‑hosted users
Task Keeper
Powerful list editor for power users
Canvas LMS
Open‑source learning platform for educators and students
Odoo
All-in-one open source business suite
Mopidy
Self-hosted other
Wakupator
Wake LAN machines on demand with IP spoofing