Estructura del Proyecto

Organización General

class="highlight">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Capi-App/
lib/ # Código fuente principal
actions/ # Acciones de FlutterFlow
app_constants.dart # Constantes de la aplicación
app_state.dart # Estado global
auth/ # Autenticación
backend/ # Backend y schemas
chat/ # Sistema de chat
clinica/ # Módulo de clínica
componentes/ # Componentes reutilizables
components/ # Componentes adicionales
custom_code/ # Código personalizado
flutter_flow/ # Framework FlutterFlow
models/ # Modelos de datos
paciente/ # Módulo de paciente
services/ # Servicios de negocio
validacion_rol/ # Validación de roles
firebase/ # Firebase Functions y config
functions/ # Cloud Functions
public/ # Archivos públicos
firestore.rules # Reglas de seguridad
storage.rules # Reglas de Storage
android/ # Configuración Android
ios/ # Configuración iOS
web/ # Configuración Web
docs/ # Documentación
assets/ # Recursos estáticos

Estructura de lib/

auth/

Manejo de autenticación con Firebase Auth.

class="highlight">
1
2
3
4
5
auth/
firebase_auth/ # Implementación Firebase Auth
auth_util.dart # Utilidades de autenticación
...
auth_manager.dart # Gestor de autenticación

backend/

Schemas y acceso a datos de Firestore.

class="highlight">
1
2
3
4
5
6
7
8
backend/
schema/ # Schemas de Firestore
structs/ # Estructuras de datos
enums/ # Enumeraciones
*.dart # Records de colecciones
api_requests/ # Llamadas a APIs externas
api_calls.dart # Definiciones de APIs
backend.dart # Exportaciones principales

clinica/

Módulo completo para gestión de clínica.

class="highlight">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clinica/
menu_principal/ # Menú principal de clínica
estadisticas/ # Dashboard de estadísticas
calendario/ # Calendario de citas
conversaciones/ # Lista de chats
citas/ # Gestión de citas
consultas/ # Gestión de consultas
perfil/ # Perfil del doctor
mi_plan/ # Gestión de suscripción
otraspaginas/ # Páginas adicionales
detalles_paciente/ # Detalles de paciente
crear_servicio/ # Crear servicio médico
equipo/ # Gestión de equipo
...
configuracion/ # Configuración de clínica
crear_cuenta/ # Registro de cuenta
login/ # Login
...

paciente/

Módulo completo para pacientes.

class="highlight">
1
2
3
4
5
6
7
8
paciente/
menu/ # Menú principal paciente
citaspaciente/ # Citas del paciente
conversacionespaciente/ # Chats del paciente
misdoctores_pac/ # Doctores del paciente
perfil/ # Perfil del paciente
buscadordoctores/ # Búsqueda de doctores
...

services/

Servicios de negocio y utilidades.

class="highlight">
1
2
3
4
5
6
7
services/
subscription_service.dart # Gestión de suscripciones
revenuecat_service.dart # RevenueCat (iOS)
notification_service.dart # Notificaciones push
permissions_manager.dart # Gestión de permisos
chat_notification_service.dart # Notificaciones de chat
...

custom_code/

Código personalizado y acciones.

class="highlight">
1
2
3
4
5
6
7
custom_code/
actions/ # Acciones personalizadas
validar_suscripcion_action.dart
receta_pdf.dart
busqueda_*.dart
...
widgets/ # Widgets personalizados

Convenciones de Código

Nomenclatura

  • Archivos: snake_case.dart
  • Clases: PascalCase
  • Variables: camelCase
  • Constantes: SCREAMING_SNAKE_CASE

Estructura de Widgets

class="highlight">
1
2
3
4
5
6
7
8
9
10
class MiWidget extends StatefulWidget {
// Constructor y propiedades
}

class _MiWidgetState extends State<MiWidget> {
// Estado local
// Métodos de ciclo de vida
// Métodos de negocio
// Build method
}

Estructura de Servicios

class="highlight">
1
2
3
4
5
6
7
class MiService {
static final MiService _instance = MiService._internal();
factory MiService() => _instance;
MiService._internal();

// Métodos públicos
}

Patrones Utilizados

Singleton

Para servicios compartidos:

class="highlight">
1
2
3
4
class SubscriptionService {
static final SubscriptionService _instance = SubscriptionService._internal();
factory SubscriptionService() => _instance;
}

Repository Pattern

Para acceso a datos:

class="highlight">
1
2
3
4
class UsersRepository {
Future<List<UsersRecord>> getUsers();
Future<void> createUser(UsersRecord user);
}

Service Layer

Para lógica de negocio:

class="highlight">
1
2
3
class BusinessService {
Future<void> processSubscription();
}

Archivos Importantes

app_constants.dart

Constantes globales de la aplicación:

  • API keys
  • URLs
  • Configuraciones

app_state.dart

Estado global de la aplicación:

  • Usuario actual
  • Configuración
  • Preferencias

index.dart

Exportaciones principales de páginas y componentes.

Próximos Pasos

  1. Backend Firebase - Entiende Firestore y servicios
  2. Autenticación y Roles - Sistema de permisos


This site uses Just the Docs, a documentation theme for Jekyll.