How airencracken/witmoot works
Witmoot is a self-hosted, server-rendered bulletin board for small communities. Members sign in or join by invitation, then read and post conversations subject to board, group, and conversation access rules; owners govern accounts, boards, groups, and site settings. Images can optionally be stored through imvault, while data export, backups, and migration support community ownership and portability. The sampled sources establish startup and some integration behavior, but most handler wiring and storage calls were not shown, so uncertain internal edges are omitted.
Main entry points: web.go Web interface · store.go SQLite store · main.go HTTP server setup · admin.go Administration
Components 26
Server runtime
- HTTP server setup
cmd/witmoot/main.go - Web interface
internal/forum/web.go - SQLite store
internal/forum/store.go
Community and access
- Authentication
internal/forum/auth.go - Accounts
cmd/witmoot/accounts.go - Invitations
internal/forum/invitations.go - Boards
internal/forum/boards.go - Board lifecycle
internal/forum/board_lifecycle.go - Groups and grants
internal/forum/groups.go - Access rules
internal/forum/access.go
Conversations and media
- Discussions
internal/suite/discussion.go - Discussion pages
internal/suite/discussion_page.go - Recent activity
internal/forum/recent.go - Image handling
internal/forum/images.go - Avatars
internal/forum/avatar.go
Governance and portability
- Administration
internal/admin/admin.go - Site settings
internal/forum/settings.go - Community export
internal/forum/export.go - Automatic backups
internal/forum/automatic_backup.go - Password resets
internal/forum/reset.go
External integrations
- Imvault service
- Shared sign-in
internal/sharedoidc/provider.go - App navigation
internal/suite/apps.go - SMTP relay
Other components
- Visitors and members
- Community owner
Connections 30
- Visitors and members → Web interface: browse and submit
README.md - Community owner → Web interface: manage community
README.md - HTTP server setup → SQLite store: opens
cmd/witmoot/main.go - HTTP server setup → Web interface: serves
- HTTP server setup → Automatic backups: starts
cmd/witmoot/main.go - Web interface → Authentication: handles sign-in
- Web interface → Discussions: serves conversations
- Web interface → Boards: serves boards
- Web interface → Invitations: handles invites
- Web interface → Administration: routes management
- Authentication → SQLite store: reads credentials
- Accounts → SQLite store: creates accounts
- Invitations → SQLite store: stores invitations
- Boards → Access rules: checks permissions
- Groups and grants → Access rules: defines grants
- Discussions → Discussion pages: renders pages
- Discussions → SQLite store: stores conversations
- Recent activity → SQLite store: reads posts
- Image handling → Imvault service: uses optionally
README.md - Avatars → Imvault service: uses optionally
README.md - Administration → Accounts: manages members
- Administration → Boards: manages boards
- Administration → Groups and grants: manages groups
- Site settings → SQLite store: stores settings
- Community export → SQLite store: exports data
- Automatic backups → SQLite store: backs up
- Password resets → SQLite store: stores reset links
- Web interface → Shared sign-in: supports optional
- Web interface → App navigation: shows configured apps
- HTTP server setup → SMTP relay: configures optionally
cmd/witmoot/main.go