096c4d0a2d
Серверная часть (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 — спецификация протокола
64 lines
1.8 KiB
Dart
64 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import '../screens/splash_screen.dart';
|
|
import '../screens/login_screen.dart';
|
|
import '../screens/home_screen.dart';
|
|
import '../screens/guild_screen.dart';
|
|
import '../screens/chat_screen.dart';
|
|
import '../screens/settings_screen.dart';
|
|
import '../services/connection_service.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
class JAMAppShell extends StatefulWidget {
|
|
const JAMAppShell({super.key});
|
|
|
|
@override
|
|
State<JAMAppShell> createState() => _JAMAppShellState();
|
|
}
|
|
|
|
class _JAMAppShellState extends State<JAMAppShell> {
|
|
final ConnectionService _connectionService = ConnectionService();
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_connectionService.init();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_connectionService.dispose();
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider.value(value: _connectionService),
|
|
],
|
|
child: MaterialApp(
|
|
debugShowCheckedModeBanner: false,
|
|
title: 'JustAMessenger',
|
|
theme: ThemeData.dark().copyWith(
|
|
colorScheme: ColorScheme.dark(
|
|
primary: const Color(0xFF5865F2),
|
|
secondary: const Color(0xFF3BA55D),
|
|
surface: const Color(0xFF2F3136),
|
|
error: const Color(0xFFED4245),
|
|
),
|
|
scaffoldBackgroundColor: const Color(0xFF36393F),
|
|
),
|
|
initialRoute: '/',
|
|
routes: {
|
|
'/': (context) => const SplashScreen(),
|
|
'/login': (context) => const LoginScreen(),
|
|
'/home': (context) => const HomeScreen(),
|
|
'/guild': (context) => const GuildScreen(),
|
|
'/chat': (context) => const ChatScreen(),
|
|
'/settings': (context) => const SettingsScreen(),
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|