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:
@@ -0,0 +1,63 @@
|
||||
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(),
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user