Initial commit: JustAMessenger v0.1.0

Серверная часть (Go):
- WebSocket сервер с бинарным протоколом
- XChaCha20-Poly1305 шифрование
- zstd сжатие с дедупликацией (64KB чанки)
- SQLite хранилище (WAL режим)
- Управление гильдиями, каналами, ролями
- Федерация между серверами (ed25519)
- REST API + WebSocket endpoints

Клиентская часть (Flutter):
- Material Design 3 тёмная тема (Discord-like)
- WebSocket соединение с сервером
- Экраны: сплэш, логин, домашний, гильдии, чат
- Модели: пользователи, гильдии, каналы, сообщения, роли
- Сервисы: соединение, API, криптография, тема
- Виджеты: иконки гильдий, сообщения, ввод чата
- Web сборка (PWA)

Документация:
- AGENTS.md — контекст для ИИ ассистентов
- docs/protocol.md — спецификация протокола
This commit is contained in:
SashegDev
2026-06-06 22:39:14 +00:00
commit 096c4d0a2d
40 changed files with 5054 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
package config
import (
"encoding/json"
"os"
"path/filepath"
)
type Config struct {
ServerName string `json:"server_name"`
ListenAddr string `json:"listen_addr"`
Domain string `json:"domain"`
DataDir string `json:"data_dir"`
MaxFileSize int64 `json:"max_file_size"`
Federation bool `json:"federation"`
FederatedWith []string `json:"federated_with"`
LogLevel string `json:"log_level"`
}
func Default() *Config {
return &Config{
ServerName: "JustAMessenger",
ListenAddr: ":8443",
Domain: "localhost",
DataDir: "./data",
MaxFileSize: 2 << 30,
Federation: false,
LogLevel: "info",
}
}
func Load(path string) (*Config, error) {
cfg := Default()
abs, err := filepath.Abs(path)
if err != nil {
return cfg, nil
}
data, err := os.ReadFile(abs)
if err != nil {
return cfg, nil
}
if err := json.Unmarshal(data, cfg); err != nil {
return nil, err
}
return cfg, nil
}