This MVP release provides a complete full-stack solution for managing action mappings in Geutebruck's GeViScope and GeViSoft video surveillance systems. ## Features ### Flutter Web Application (Port 8081) - Modern, responsive UI for managing action mappings - Action picker dialog with full parameter configuration - Support for both GSC (GeViScope) and G-Core server actions - Consistent UI for input and output actions with edit/delete capabilities - Real-time action mapping creation, editing, and deletion - Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers) ### FastAPI REST Backend (Port 8000) - RESTful API for action mapping CRUD operations - Action template service with comprehensive action catalog (247 actions) - Server management (G-Core and GeViScope servers) - Configuration tree reading and writing - JWT authentication with role-based access control - PostgreSQL database integration ### C# SDK Bridge (gRPC, Port 50051) - Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll) - Action mapping creation with correct binary format - Support for GSC and G-Core action types - Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug) - Action ID lookup table with server-specific action IDs - Configuration reading/writing via SetupClient ## Bug Fixes - **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet - Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)` - Proper filter flags and VideoInput=0 for action mappings - Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft) ## Technical Stack - **Frontend**: Flutter Web, Dart, Dio HTTP client - **Backend**: Python FastAPI, PostgreSQL, Redis - **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK - **Authentication**: JWT tokens - **Configuration**: GeViSoft .set files (binary format) ## Credentials - GeViSoft/GeViScope: username=sysadmin, password=masterkey - Default admin: username=admin, password=admin123 ## Deployment All services run on localhost: - Flutter Web: http://localhost:8081 - FastAPI: http://localhost:8000 - SDK Bridge gRPC: localhost:50051 - GeViServer: localhost (default port) Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Geutebruck API Flutter App
Flutter mobile application for managing Geutebruck surveillance systems (G-Core and GeViScope servers) with offline-first architecture.
📱 Features
- 🔐 Authentication: Secure JWT-based login
- 🖥️ Server Management: Full CRUD operations for G-Core and GeViScope servers
- 📡 Offline-First: Local Hive storage with bidirectional sync
- 🔄 Sync: Upload changes and download latest configuration
- 🎨 Modern UI: Material Design 3 with responsive layout
- 🧭 Navigation: App drawer with organized menu structure
🚀 Quick Start
Prerequisites
- Flutter SDK ^3.5.0
- Dart SDK ^3.5.0
- API server running at
http://100.81.138.77:8000
Installation
# Clone the repository
cd geutebruck_app
# Install dependencies
flutter pub get
# Run code generation
flutter pub run build_runner build --delete-conflicting-outputs
# Run the app
flutter run -d web-server --web-port=8081 --web-hostname=0.0.0.0
Default Credentials
- Username:
admin - Password:
admin123
📁 Project Structure
lib/
├── core/ # Core functionality (constants, errors, network)
├── data/ # Data layer (repositories, data sources, models)
├── domain/ # Business logic (entities, use cases)
└── presentation/ # UI layer (screens, widgets, BLoCs)
🏗️ Architecture
- Clean Architecture: Separation of concerns across layers
- BLoC Pattern: State management with flutter_bloc
- Offline-First: Hive local storage with sync capabilities
- Dependency Injection: GetIt for IoC container
- Routing: GoRouter with type-safe navigation
🔧 Development
Hot Reload
Press r in the Flutter terminal to hot reload changes without restarting.
Code Generation
flutter pub run build_runner watch
Running Tests
flutter test
📊 Current Status
Phase 2 Complete: Server Management fully implemented
- ✅ View all servers with filtering
- ✅ Create G-Core and GeViScope servers
- ✅ Update server configuration
- ✅ Delete servers with confirmation
- ✅ Offline-first with sync
- ✅ Dirty change tracking
See STATUS.md for detailed progress.
🐛 Recent Fixes
2025-12-23: "No Data" Display Issue
Fixed BlocBuilder fallback case to show loading indicator instead of "No data" during state transitions.
📚 Documentation
- Project Status - Detailed development status
- Tasks - Implementation task list
- API Spec - API documentation
🛠️ Tech Stack
- Flutter - Cross-platform UI framework
- Dart - Programming language
- flutter_bloc - State management
- hive - Local NoSQL database
- dio - HTTP client
- go_router - Declarative routing
- get_it - Dependency injection
🤝 Contributing
This is an AI-assisted development project. Changes should maintain:
- Clean Architecture principles
- BLoC pattern for state management
- Offline-first data strategy
- Comprehensive error handling
📝 License
This project is part of the Geutebruck API integration suite.