MCPSERV.CLUB
Gancio

Gancio

Self-Hosted

Local community shared agenda for events and meetings

Stale(40)
0stars
0views

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

LayerTechnology
BackendGo 1.22, Gin‑Gonic web framework
DatabasePostgreSQL (v15+), schema migrations via Goose
FrontendVue 3 + Vite, Tailwind CSS for styling
Real‑timeGorilla WebSocket library
ContainerizationDocker Compose for local dev; single‑container images available on Docker Hub
CI/CDGitHub 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/events endpoints 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/webhooks lets callers register URLs to be POSTed on poll closure or event registration.
  • CLIgancio-cli provides 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 faker package, ensuring realistic scenarios.

Use Cases

  1. Neighborhood Associations – Host monthly polls on community projects and schedule volunteer events.
  2. Campus Clubs – Organise elections, gather event RSVPs, and push updates to Discord via webhooks.
  3. Small NGOs – Coordinate local workshops with time‑zone aware scheduling and collect feedback through ranked voting.
  4. 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