import 'package:chat_server/config/config.dart'; import 'package:chat_server/models.dart'; import 'package:chat_server/objectbox.g.dart'; import 'package:chat_server/src/auth/auth_middleware.dart'; import 'package:chat_server/src/handlers/auth_handlers.dart'; import 'package:chat_server/src/handlers/channel_handlers.dart'; import 'package:chat_server/src/handlers/debug_handlers.dart'; import 'package:chat_server/src/handlers/message_handlers.dart'; import 'package:chat_server/src/handlers/user_handlers.dart'; import 'package:hotreloader/hotreloader.dart'; import 'package:relic/relic.dart'; // Global ObjectBox boxes final Store store = openStore(); final Box userBox = store.box(); final Box channelBox = store.box(); final Box messageBox = store.box(); RelicApp? _currentApp; Future startServer() async { await _currentApp?.close(); _currentApp = RelicApp() // Public routes ..post('/login', loginHandler) ..post('/register', registerHandler) // Debug routes ..get('/debug/users', debugUsersHandler) ..get('/debug/messages', debugMessagesHandler) ..get('/debug/clear', debugClearHandler) // Protected routes ..use('/api', jwtMiddleware) // Channels ..get('/api/channels', getChannelsHandler) ..post('/api/channels', createChannelHandler) // Messages ..get('/api/messages', getMessagesHandler) ..post('/api/messages', sendMessageHandler) // Users ..get('/api/users', getUsersHandler) // Logging & fallback ..use('/', logRequests()) ..fallback = respondWith((_) => Response.notFound()); print('🚀 Server starting on http://localhost:${Config.port}'); await _currentApp!.serve(port: Config.port); } void main() async { await HotReloader.create( onAfterReload: (ctx) async { print('🔄 Changes detected! Restarting server...'); await startServer(); }, ); await startServer(); }