# ![Logo del Proyecto SOMA](./soma_pro_updater/assets/logo.png) # Proyecto SOMA ![Versión](https://img.shields.io/badge/versión-1.0.0-blue.svg) ![Estado del proyecto](https://img.shields.io/badge/estado-en%20producción-brightgreen) Sistema de gestión para gimnasios, desarrollado como trabajo integrador para la materia **Taller de Integración** de la Licenciatura en Sistemas de Información. SOMA es una aplicación de escritorio que le permite al administrador de un gimnasio gestionar sus clientes, turnos, pagos y horarios desde un solo lugar, reemplazando las planillas manuales y los mensajes de WhatsApp dispersos. ## Equipo | Integrante | Rol principal | |---------------------|---------------| | Santángelo, Pablo | Backend | | Marioni, Alex | Frontend | ## Funcionalidades - **Usuarios**: alta, baja, modificación y búsqueda de clientes; gestión de roles (admin, superadmin). - **Pagos**: registro de cuotas con recargo automático por mora; exportación a PDF y CSV; importación desde CSV. - **Horarios y turnos**: configuración de franjas horarias y cupos; reserva de turnos por cliente. - **Actividades y tipos de cuota**: configuración de las actividades del gimnasio y los planes de pago. - **Notificación de deuda**: envío directo de mensaje de WhatsApp al cliente moroso. - **Autenticación**: inicio de sesión con contraseña; cambio de contraseña. ## Stack tecnológico | Capa | Tecnología | |------------|-----------------------------------------| | Frontend | Flutter (Dart) | | Backend | Supabase (PostgreSQL + Edge Functions) | | Lenguajes | Dart · PL/pgSQL · TypeScript (Deno) | | Plataforma | Windows (compilación nativa) | La lógica de negocio vive en funciones PL/pgSQL (`fc_*`) dentro de la base de datos. La app Flutter consume esas funciones a través de la API REST de Supabase. ## Estructura del repositorio ``` SOMA-PRO/ ├── flutter_soma_app/ # App Flutter (código fuente principal) │ └── lib/ │ ├── core/ # Configuración, tema, utilidades compartidas │ └── features/ # Módulos por dominio (pagos, turnos, usuarios, ...) │ └── / │ ├── domain/ # Entidades y lógica de negocio │ ├── data/ # Acceso a datos (repositorios, Supabase) │ └── presentation/ # Pantallas y widgets ├── soma_pro_updater/ # Actualizador automático de la app ├── supabase/ # Proyecto Supabase │ ├── migrations/ # Migraciones de la base de datos │ └── seed.sql # Datos iniciales ├── database/ # Scripts SQL: funciones, triggers, esquema, backups │ ├── functions/ │ ├── triggers/ │ ├── schema/ │ └── backup/ └── Documentation/ # Documentación del proyecto ├── DocumentacionTecnicaSoma.pdf # Documentación técnica └── ManualDeUsuarioSoma.pdf # Manual de usuario ``` Cada feature de la app sigue una arquitectura de tres capas (domain → data → presentation), organizada por módulo funcional. ## Requisitos para compilar - Flutter SDK ≥ 3.10 - Dart SDK ≥ 3.10 - Supabase CLI (para desarrollo local con la base de datos) - Windows 10+ (para compilar la app de escritorio) ## Cómo ejecutar ```bash git clone https://gitea.fcyt.uader.edu.ar/alumnos_ti/SOMA-PRO.git cd SOMA-PRO/flutter_soma_app flutter pub get flutter run -d windows ``` La app necesita conectarse a una instancia de Supabase. Los archivos de configuración del entorno están en `flutter_soma_app/config/`. ## Documentación | Documento | Contenido | |-----------------------------------|----------------------------------------------------| | `DocumentacionTecnicaSoma.pdf` | Arquitectura, decisiones técnicas, modelo de datos | | `ManualDeUsuarioSoma.pdf` | Guía de uso de la aplicación |