Files
geutebruck/geutebruck_app
Administrator 14893e62a5 feat: Geutebruck GeViScope/GeViSoft Action Mapping System - MVP
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>
2025-12-31 18:10:54 +01:00
..

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

🛠️ 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.