start method

Future<void> start()

Starts the dashboard HTTP server.

Implementation

Future<void> start() async {
  Jaspr.initializeApp();

  final router = Router()
    ..get('/api/agents', _handleAgentsApi)
    ..get('/api/project', _handleProjectApi)
    ..get('/api/v1/state', _handleV1State)
    ..get('/api/v1/issue/<identifier>', _handleV1Issue)
    ..post('/api/v1/refresh', _handleV1Refresh)
    ..get('/', _handleDashboard);

  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.');
}