README

go-chapper

Installation

CLI

Run the ./server install command.

Manual installation

The manual installation provides more control over the installation process but requires a lot more setup, like creating directories, config files and more...

Running

To run your Chapper instance use the ./server run --config path/to/your/config.toml command.

TODOs

  • Finish bridge
  • Make log ctx more robust/thought trough
  • Create invite template
  • Rework server handlers/services (and more?)
  • Rework TURN New function

Ideas

  • Add AutoTLS support (ACME Manager) and ask this in the install CLI

All Todos

Authentication
  • Password Argon2 Hashing
  • Authentication Routes
    • Login
    • Register
    • Refresh
    • Register 2FA code
    • Enter 2FA code
  • Password Reset
Avatars
  • Generate Avatars based on Username
    • Save Avatars on disk
    • JPEG or SVG?
    • Resizer
  • Custom Avatar support
    • Routes
    • Resizer
    • Constraints
Profile
  • Custom Avatar
  • Username change?
  • Password change
  • 2FA add/delete
  • Change e-mail
  • Privacy settings
    • What data is public?
    • Who can add me as a friend?
    • ...
Config
  • Add TOML config support
    • Validation
    • Default values
Virtual Servers
  • Add virtual server support
    • Invite System
    • Routes (CRUD Actions)
    • Keep track which virtual servers the user is on
Rooms
  • Add Voice Rooms
    • Session management
    • Routes
    • Key exchange
    • Admin controls (Mute, kick user, etc)
  • Add Text Rooms
    • Session management
    • Routes
    • Key exchange
    • Admin controls
    • Multimedia message support
1 on 1 Room
  • Add Voice Room
    • Session management
    • Routes
    • Key exchange
    • Admin controls (Mute, kick user, etc)
  • Add Text Room
    • Session management
    • Routes
    • Key exchange
    • Admin controls
    • Multimedia message support
Media Handler
  • Routes
    • Upload
    • Original
    • Preview
  • Saving media on disk
  • Images
    • Validation / Constraints
    • Resizing
    • Quality
    • Save in different file formats
  • Videos
    • Validation / Constraints
    • Resizing
    • Quality
    • Save in different file formats (Transcoding)
Broadcaster / Session Handler / TURN / STUN
  • Alot
Scheduler?
  • How do we handle background jobs?
  • Microservice approach?
Expand ▾ Collapse ▴

Documentation

The Go Gopher

There is no documentation for this package.

Source Files

Directories

Path Synopsis
Package cmd provides command line commands
Package cmd provides command line commands
internal
app
Package app provides the central entry point to read in the config, setup the server and start services
Package app provides the central entry point to read in the config, setup the server and start services
config
Package config provides the top-level config struct
Package config provides the top-level config struct
constants
Package constants provides different constant values
Package constants provides different constant values
installer
Package installer provides utilities for installing a Chapper instance
Package installer provides utilities for installing a Chapper instance
log
Package log provides logging utilities
Package log provides logging utilities
models
Package models provides model structs
Package models provides model structs
modules/avatar
Package avatar is reponsible for creating avatar images Thanks to https://github.com/taironas/tinygraphs Package avatar is reponsible for creating avatar images Thanks to https://github.com/taironas/tinygraphs
Package avatar is reponsible for creating avatar images Thanks to https://github.com/taironas/tinygraphs Package avatar is reponsible for creating avatar images Thanks to https://github.com/taironas/tinygraphs
modules/hash
Package hash provides multiple hash functions Package hash provides multiple hash functions Package hash provides multiple hash functions
Package hash provides multiple hash functions Package hash provides multiple hash functions Package hash provides multiple hash functions
modules/jwt
Package jwt provides utilities to genearte and validate JWT credentials
Package jwt provides utilities to genearte and validate JWT credentials
modules/twofa
Package twofa provides utilities to generate and validate 2FA codes
Package twofa provides utilities to generate and validate 2FA codes
router
Package router provides the top-level router
Package router provides the top-level router
router/handlers
Package handlers provides HTTP handlers
Package handlers provides HTTP handlers
services
Package services provides different services which combine functions from modules and the store interface
Package services provides different services which combine functions from modules and the store interface
services/errors
Package errors provides service level errors
Package errors provides service level errors
store
Package store provides an interface for all database operations
Package store provides an interface for all database operations
store/schemas
Package schemas provides database schemas
Package schemas provides database schemas
transport/bridge
Package bridge provides utilities to create, keep track of and delete WebRTC calls
Package bridge provides utilities to create, keep track of and delete WebRTC calls
transport/broadcast
Package broadcast provides utilities to broadcast messages Inspired by https://github.com/DATA-DOG/golang-websocket-hub and https://github.com/gorilla/websocket/tree/master/examples/chat
Package broadcast provides utilities to broadcast messages Inspired by https://github.com/DATA-DOG/golang-websocket-hub and https://github.com/gorilla/websocket/tree/master/examples/chat
transport/turn
Package turn provides utilities to run a TURN server
Package turn provides utilities to run a TURN server
utils
Package utils provides small utility functions
Package utils provides small utility functions