RadikalWiki#
A full open-source platform for democratic organizations — enabling voting, polls, speaker queue management, collaborative document editing, and conference communication.
Built for and used by Danish political organizations to run conferences, manage proposals, and conduct live votes.
Features#
- Voting & Polls — Create and manage votes on policies, candidates, and positions with real-time results and charts
- Speaker Queue — Manage speaker lists with an admin panel and participant dial-in
- Document Editing — Rich text editor powered by Slate.js with publishing, authoring, and export to DOCX/XLSX
- Event Management — Organize conferences and events with structured content trees
- Groups & Members — Manage organizations, groups, memberships, and invitations
- Permissions — Fine-grained access control for content and administrative actions
- Screen/Projection Mode — Dedicated views for projecting live results and speaker queues
- Maps — Interactive map integration with MapLibre GL
- Material Design 3 — Adaptive theming with dynamic color support
- Real-time Updates — GraphQL subscriptions for live data across all clients
- Authentication — User registration, login, password reset, and email verification via NHost
Tech Stack#
| Layer | Technology |
|---|---|
| Runtime | Deno |
| Build | Rsbuild |
| Frontend | React + React Router |
| UI | MUI (Material UI) |
| Editor | Slate.js |
| Charts | DevExpress React Chart |
| Maps | MapLibre GL via react-map-gl |
| GraphQL | GQty with subscriptions via graphql-ws |
| Backend | NHost (Auth, Storage, Hasura GraphQL) |
| Dev Environment | Nix + just |
Getting Started#
Prerequisites#
Development#
# Install dependencies
just install
# Start development server (generates GraphQL types and opens browser)
just dev
Build & Preview#
# Production build
just build
# Preview production build locally
just start
Other Commands#
# Regenerate GraphQL types from schema
just build-gqty
# Lint the codebase
just lint
Project Structure#
wiki/
├── core/ # Shared logic — GraphQL client, hooks, theming, i18n, utilities
│ ├── gql/ # Generated GraphQL types and client (GQty)
│ ├── hooks/ # Custom React hooks
│ ├── theme/ # Material Design 3 theming
│ └── types/ # TypeScript type definitions
├── src/
│ ├── components/ # UI components organized by domain
│ │ ├── admin/ # Admin panel
│ │ ├── auth/ # Authentication views
│ │ ├── content/ # Document editor and content management
│ │ ├── event/ # Event management
│ │ ├── group/ # Group management
│ │ ├── member/ # Member management
│ │ ├── poll/ # Polls with live charts
│ │ ├── speak/ # Speaker queue
│ │ └── vote/ # Voting on policies, candidates, positions
│ └── pages/ # Route pages
├── public/ # Static assets
└── doc/ # Documentation assets
License#
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).