feat: add Control Room with containers and stacks management

- Add Control Room page with stacks sidebar and containers list
- Implement container actions (start/stop/restart) with snackbars
- Add container logs viewer dialog
- Add search/filter for both stacks and containers lists
- Add external links for Portainer and Netdata (url_launcher)
- Add VS Code launch configuration for Flutter web debugging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jeroen Schweitzer
2025-12-31 02:01:01 +01:00
co-authored by Claude Opus 4.5
parent dd6bcbdbda
commit 3b89ed8c18
42 changed files with 4166 additions and 21 deletions
+3 -21
View File
@@ -2,8 +2,9 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import '../shared/layouts/app_scaffold.dart';
import '../features/control_room/presentation/pages/control_room_page.dart';
import '../features/front_hall/presentation/pages/front_hall_page.dart';
import '../shared/layouts/app_scaffold.dart';
part 'app_router.g.dart';
@@ -35,26 +36,7 @@ GoRouter appRouter(AppRouterRef ref) {
GoRoute(
path: AppRoutes.controlRoom,
name: 'controlRoom',
builder: (context, state) =>
const _PlaceholderPage(title: 'Control Room'),
routes: [
GoRoute(
path: 'containers',
name: 'containers',
builder: (context, state) =>
const _PlaceholderPage(title: 'Containers'),
routes: [
GoRoute(
path: ':id',
name: 'containerDetail',
builder: (context, state) {
final id = state.pathParameters['id']!;
return _PlaceholderPage(title: 'Container: $id');
},
),
],
),
],
builder: (context, state) => const ControlRoomPage(),
),
GoRoute(
path: AppRoutes.parlor,