⚡ Electrics-App: El Gemelo Digital en tu bolsillo
Cálculo, diseño y normativa unificado bajo el REBT.
"Deja el Excel para la oficina. Lleva la ingeniería al campo de trabajo."
Electrics-App no es solo una calculadora eléctrica. Es un Gemelo Digital diseñado para ingenieros e instaladores que necesitan precisión técnica y validación normativa (REBT/RAT) en tiempo real, sin necesidad de un ordenador.
Warning
Estamos trabajando en su lanzamiento en Play Store & App Store. De momento, puedes descargar la última release en Github ya compilada.
🛠️ ¿Por qué Electrics-App?
Como ingenieros, nos enfrentamos a un mar de normativas y cálculos complejos en entornos donde no puedes abrir un portátil. El flujo de trabajo actual está roto:
- Tomas datos en papel o móvil.
- Llegas a casa cansado tras la jornada de campo.
- Pasas horas en Excel legalizando y presupuestando.
Electrics-App rompe este ciclo. Diseña, mide y presupuesta in situ. Para que cuando llegues a casa, tu único trabajo sea descansar.
📱 Tour Visual por la App
Aquí puedes ver el flujo de trabajo real de un ingeniero usando Electrics-App:
| Diagrama Unifilar | Sistema de Salud |
|---|---|
![]() |
![]() |
| Organiza tus obras | Diagnóstico en tiempo real |
| Biblioteca | Mediciones de Campo |
|---|---|
![]() |
![]() |
| Componentes inteligentes | Ingresa resultados |
✨ Funcionalidades Estrella
🧬 Motor de Física Avanzado
Cálculos precisos de caída de tensión, intensidades de cortocircuito y suma vectorial de impedancias. Un núcleo robusto que entiende la física real detrás de los cables.
A diferencia de otras aplicaciones, Electrics-App no es una "caja negra". El motor de cálculo ha sido programado siguiendo estrictamente el compendio de normas técnicas vigentes en España y Europa, las cuales puedes consultar directamente en la carpeta /normas del repositorio.
📚 Normativas Integradas
- Cálculo de Caída de Tensión e Intensidades Admisibles: Basado en la UNE-HD 60364-5-52:2014.
- Cálculo de Corrientes de Cortocircuito: Implementación de la norma IEC 60909-0:2016.
- Protecciones y Curvas de Disparo: Siguiendo la IEC 60898-1 para interruptores magnetotérmicos.
- Reglamento Nacional: Cumplimiento íntegro del REBT (RD 842/2002) y sus Guías Técnicas de Aplicación.
💻 Implementación en Código
Si eres ingeniero o desarrollador, puedes auditar nuestra lógica en:
electrical_math.dart: Fórmulas base de suma vectorial de impedancias y potencias.rebt_rules.dart: Mapeo de las restricciones legales del Reglamento Electrotécnico.iz_constants.dart: Tablas de intensidades máximas según el método de instalación y tipo de aislamiento.trip_curve_calculator.dart: Motor de renderizado y cálculo de tiempos de disparo para curvas B, C y D.
🏥 Sistema de Diagnóstico (Health Check)
Introduce las mediciones reales de tus herramientas y la app las comparará con el modelo teórico. ¿Desviación excesiva? La app te avisa antes de que sea un problema.
🤖 Base de Datos impulsada por IA
Añadir componentes nunca fue tan fácil. Gracias a nuestra integración con IA, puedes solicitar nuevos componentes electricos de la biblioteca directamente desde GitHub Issues.
- ¿Necesitas un magnetotérmico específico? Abre un Issue con:
[COMPONENT REQUEST] M9U11206 Schneider Electrico[COMPONENT REQUEST] Diferencial bipolar 40A R9 2P SCHNEIDER ELECTRICy la IA se encargará de mapear sus características técnicas a la app. En la próxima actualización estará disponible para su uso. También existen ya componente sgenerales o puedes crear tus propios componentes.
📄 Presupuestos al Instante (En desarrollo)
Genera reportes y presupuestos listos para imprimir y entregar al cliente antes de salir de la instalación.
🚀 Cómo empezar
El proyecto está diseñado para no requerir conexión y no requiere configuración de servidores externos. Simplemente, descárgate la última actualización
🌐 Live Demo & Documentation
Puedes explorar el catálogo de componentes y la documentación técnica del código en los siguientes enlaces:
| Recurso | Enlace | Descripción |
|---|---|---|
| 🚀 Landing Page | Visitar Web | Portal central de documentación |
| 🎨 Storybook | Explorar UI | Catálogo interactivo de componentes Flutter |
| 📚 API Reference | Leer API | Documentación técnica generada con Dartdoc |
Recuerda hecharle un vistazo a la Wiki!
🤝 Buscamos Talento (Contribuir)
Este proyecto es público porque la ingeniería eléctrica merece herramientas modernas. Buscamos dos perfiles:
- Ingenieros Eléctricos: Ayúdanos a verificar los algoritmos de cálculo, añadir lógica de normativas internacionales y testear el motor físico.
- Desarrolladores Flutter: Mejora de la UI/UX, optimización de base de datos local (Isar) y pulido de animaciones.
Consulta nuestra Wiki para entender la arquitectura del motor físico.
🤖 Automatización y DevOps
Contamos con un flujo de trabajo moderno:
- AI Code Review: Revisión automática de Pull Requests.
- Automated Releases: Cada mejora llega a tus manos sin esperas.
- AI Component Agent: Generación automática de plantillas de componentes mediante procesamiento de lenguaje natural.
- Documentation Automation: Dartdoc y Storybook se actualizan automáticamente en cada push.
📚 Documentación
API Documentation (Dartdoc)
Documentación técnica completa generada automáticamente con Dartdoc, organizada por capas de Clean Architecture (Core, Domain, Data, Presentation).
Component Library (Storybook)
Explora y prueba componentes UI de forma aislada. Útil para desarrolladores y diseñadores que quieran entender el Design System.
Ejecutar localmente:
# Storybook
flutter run -d chrome -t storybook/main.dart
# Dartdoc
dart doc . && start doc/api/index.html
Consulta DOCUMENTATION.md para más detalles.
📊 Project Analytics
⭐ Star History
--
Hecho con ❤️ por ingenieros, para ingenieros.
© 2025 Ruben Ortiz, Electrics App Team
Libraries
- config/routes/routes
- config/theme/app_themes
- config/theme/theme_cubit
- core/constants/app_strings
- core/constants/constants
- core/constants/electrical_constants
- core/database/database_service
- core/database/isar_service
- core/domain/entities/app_initialization_result
- core/domain/usecases/initialize_app_usecase
- core/error/failures
- core/navigation/route_observer
- core/presentation/bloc/app_state_cubit
- core/presentation/widgets/app_text_field
- core/presentation/widgets/coming_soon_dialog
- core/resources/data_state
- core/usecase/usecase
- core/utils/validators
- features/budget/data/repositories/mock_price_repository
- features/budget/domain/entities/budget_item
- features/budget/domain/repositories/price_repository
- features/budget/domain/services/material_aggregator_service
- features/budget/domain/services/pricing_engine
- features/budget/presentation/cubit/budget_cubit
- features/budget/presentation/cubit/budget_state
- features/budget/presentation/screens/budget_page
- features/budget/presentation/widgets/budget_config_dialog
- features/calculator/domain/entities/conductor
- features/calculator/domain/entities/ev_models
- features/calculator/domain/services/cable_service
- features/calculator/domain/usecases/electrical_math
- features/calculator/presentation/screens/calculations_page
- features/calculator/presentation/screens/charging_station_page
- features/calculator/presentation/screens/voltage_drop_page
- features/compliance/domain/compliance_registry
- features/compliance/domain/entities/compliance_base
- features/compliance/domain/standards/rebt_rules
- features/components/data/datasources/component_local_data_source
- features/components/data/models/component_model
- features/components/domain/entities/component_template
- features/components/domain/repositories/component_repository
- features/components/domain/services/trip_curve_calculator
- features/components/presentation/bloc/component_library_cubit
- features/components/presentation/screens/component_detail_page
- features/components/presentation/screens/component_library_page
- features/components/presentation/widgets/trip_curve_painter
- features/components/presentation/widgets/trip_curve_viewer
- features/diagram/data/data_sources/cable_presets_data_source
- features/diagram/data/data_sources/protection_presets_data_source
- features/diagram/data/models/electrical_node_dto
- features/diagram/data/repositories/diagram_repository_impl
- features/diagram/domain/entities/cable_definition
- features/diagram/domain/entities/cable_physics
- features/diagram/domain/entities/calculation_result
- features/diagram/domain/entities/catalog_metadata
- features/diagram/domain/entities/conductor_attributes
- features/diagram/domain/entities/diagram_models
- features/diagram/domain/entities/electrical_enums
- features/diagram/domain/entities/electrical_node
- features/diagram/domain/entities/electrical_state
- features/diagram/domain/entities/forensic_finding
- features/diagram/domain/entities/measurement_state
- features/diagram/domain/entities/protection_definition
- features/diagram/domain/entities/validation_status
- features/diagram/domain/repositories/diagram_repository
- features/diagram/domain/services/electrical_calculator
- features/diagram/domain/services/electrical_forensics
- features/diagram/domain/services/iz_constants
- features/diagram/domain/services/node_factory
- features/diagram/domain/services/tree_cable_info
- features/diagram/domain/services/tree_utilities
- features/diagram/domain/services/validation_engine
- features/diagram/domain/use_cases/add_child_node
- features/diagram/domain/use_cases/calculate_diagram
- features/diagram/domain/use_cases/get_saved_diagrams
- features/diagram/domain/use_cases/load_diagram
- features/diagram/domain/use_cases/save_diagram
- features/diagram/domain/use_cases/update_node
- features/diagram/domain/use_cases/validate_diagram
- features/diagram/presentation/bloc/diagram_cubit
- features/diagram/presentation/bloc/diagram_state
- features/diagram/presentation/logic/auto_layout_service
- features/diagram/presentation/logic/drag_drop_handler
- features/diagram/presentation/painters/diagram_painters
- features/diagram/presentation/screens/single_line_diagram_page
- features/diagram/presentation/widgets/alignment_guides_widget
- features/diagram/presentation/widgets/cable_catalog_dialog
- features/diagram/presentation/widgets/circuit_config_sheet
- features/diagram/presentation/widgets/diagnostic_sheet
- features/diagram/presentation/widgets/diagram_bottom_panel
- features/diagram/presentation/widgets/diagram_canvas
- features/diagram/presentation/widgets/diagram_constants
- features/diagram/presentation/widgets/diagram_floating_actions
- features/diagram/presentation/widgets/diagram_node_widget
- features/diagram/presentation/widgets/diagram_top_bar
- features/diagram/presentation/widgets/diagram_wires_layer
- features/diagram/presentation/widgets/electrical_node_widget
- features/diagram/presentation/widgets/health_check_panel
- features/diagram/presentation/widgets/node_status_badge
- features/diagram/presentation/widgets/onboarding_overlay
- features/diagram/presentation/widgets/panel_containers_layer
- features/diagram/presentation/widgets/protection_catalog_dialog
- features/diagram/presentation/widgets/protection_config_sheet
- features/documents/domain/services/pdf_service
- features/documents/presentation/screens/document_generation_page
- features/health/domain/entities/asset_metadata
- features/health/domain/entities/field_measurement
- features/health/domain/entities/insight
- features/health/domain/entities/installation_health
- features/health/domain/services/electrical_validation_service
- features/health/domain/services/health_scoring_service
- features/health/domain/services/insight_generator_service
- features/health/presentation/bloc/health_bloc
- features/health/presentation/extensions/field_measurement_ui_extension
- features/health/presentation/screens/health_dashboard_page
- features/health/presentation/screens/health_page
- features/health/presentation/widgets/component_detail_sheet
- features/health/presentation/widgets/component_selector_page
- features/health/presentation/widgets/components_list_sheet
- features/health/presentation/widgets/health_score_card
- features/health/presentation/widgets/insight_card
- features/health/presentation/widgets/manual_entry_form
- features/help/presentation/screens/help_page
- features/home/presentation/screens/dashboard_page
- features/home/presentation/screens/home_page
- features/onboarding/data/models/onboarding_status_dto
- features/onboarding/domain/entities/onboarding_preferences
- features/onboarding/domain/entities/onboarding_step
- features/onboarding/domain/usecases/save_onboarding_data_usecase
- features/onboarding/domain/utils/validators
- features/onboarding/presentation/bloc/onboarding_cubit
- features/onboarding/presentation/screens/onboarding_page
- features/onboarding/presentation/screens/welcome_intro_screen
- features/onboarding/presentation/widgets/company_info_step
- features/onboarding/presentation/widgets/personal_info_step
- features/onboarding/presentation/widgets/preferences_step
- features/onboarding/presentation/widgets/professional_type_step
- features/onboarding/presentation/widgets/welcome_step
- features/profile/presentation/screens/profile_page
- features/projects/data/datasources/project_local_data_source
- features/projects/data/models/project_model
- features/projects/data/repositories/project_repository_impl
- features/projects/domain/entities/budget_config
- features/projects/domain/entities/project
- features/projects/domain/repositories/project_repository
- features/projects/presentation/bloc/project_cubit
- features/projects/presentation/screens/general_config_page
- features/projects/presentation/screens/projects_page
- features/regulations/presentation/screens/regulations_page
- features/reports/data/generators/budget_pdf_generator
- features/reports/data/generators/pdf_report_generator
- features/reports/data/generators/report_generator_interface
- features/reports/data/generators/single_line_diagram_generator
- features/reports/data/generators/technical_memory_generator
- features/reports/data/generators/user_manual_generator
- features/reports/data/painters/iec_symbols
- features/reports/data/painters/technical_frame_painter
- features/reports/data/repositories/report_repository_impl
- features/reports/domain/repositories/report_repository
- features/reports/domain/services/document_service
- features/reports/domain/services/document_strategy
- features/reports/domain/services/form_filler_service
- features/reports/domain/services/maps/andalucia_form_map
- features/reports/domain/services/maps/region_form_map
- features/reports/domain/services/strategies/andalucia_document_strategy
- features/reports/domain/use_cases/generate_technical_memory
- features/settings/data/models/app_preferences_dto
- features/settings/data/models/app_settings_model
- features/settings/data/models/user_profile_model
- features/settings/data/repositories/settings_repository_impl
- features/settings/data/repositories/user_profile_repository_impl
- features/settings/domain/entities/app_preferences
- features/settings/domain/entities/app_theme_mode
- features/settings/domain/entities/user_profile
- features/settings/domain/repositories/settings_repository
- features/settings/domain/repositories/user_profile_repository
- features/settings/domain/usecases/get_user_profile
- features/settings/domain/usecases/save_user_profile
- features/settings/domain/usecases/update_company_logo
- features/settings/domain/usecases/update_profile_photo
- features/settings/presentation/bloc/settings_cubit
- features/settings/presentation/bloc/user_profile_cubit
- features/settings/presentation/screens/settings_page
- features/settings/presentation/widgets/edit_profile_sheet
- features/settings/presentation/widgets/language_selector
- features/settings/presentation/widgets/profile_header_card
- features/settings/presentation/widgets/text_size_selector
- features/templates/domain/entities/template_model
- injection_container
- l10n/app_localizations
- l10n/app_localizations_en
- l10n/app_localizations_es
- main



