start method

Future<void> start()

Starts the dashboard HTTP server.

Implementation

Future<void> start() async {
  // Initialize Jaspr before using renderComponent
  Jaspr.initializeApp();

  final router = Router();

  // API endpoints
  router.get('/api/agents', _handleAgentsApi);
  router.get('/api/project', _handleProjectApi);

  // Serve the Jaspr-rendered dashboard
  router.get('/', _handleDashboard);

  // Add CORS and logging middleware
  final handler = const shelf.Pipeline()
      .addMiddleware(_corsMiddleware())
      .addMiddleware(
        shelf.logRequests(
          logger: (msg, isError) {
            if (isError) {
              logger.err(msg);
            } else {
              logger.detail(msg);
            }
          },
        ),
      )
      .addHandler(router.call);

  _server = await shelf_io.serve(handler, InternetAddress.loopbackIPv4, port);
  logger.success('Dashboard running at http://localhost:$port');
  logger.info('Press Ctrl+C to stop.');
}