LAAMCITO /
sistemacontratos
Proyecto de SSO para el desarrollo de una plataforma de gestión de contratos y diversos documentos.
31/100 healthLoading repository data…
florencia-re / repository
Sistema de gestión de ventas y clientes desarrollado en PHP con Laravel, conectando con API externa para la recuperación de los datos de ventas de los distintos usuarios.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Trabajo Práctico Final de la materia "Desarrollo de Aplicaciones Web" perteneciente a la Tecnicatura Universitaria en Tecnologías de la Información UTN Santa Fe
Sistema de gestión de ventas y clientes desarrollado en PHP con Laravel, conectando con API externa para la recuperación de los datos de ventas de los distintos usuarios. La aplicación implementa una arquitectura en capas con una clara separación entre los controladores HTTP, la lógica del servicio y el acceso a los datos.
La aplicación sirve como interfaz de gestión para tres entidades principales:
El sistema requiere autenticación de doble capa: los usuarios deben autenticarse contra el sistema de autenticación interno de Laravel y autenticarse por separado con la API externa para acceder a los datos de ventas.
| Capa | Tecnología |
|---|---|
| Backend | Laravel 11.x with PHP 8.2+ |
| Frontend | Vite 5.x with Hot Moduel Replacement |
| CSS Framework | Tailwind v3.x with v4 compatibility layer |
| JavaScript | Alpine.js for reactive components, Axios for HTTP |
| Data base | PostgreSQL/MySQL via Eloquent ORM |
| HTTP Client | GuzzleHttp with CookieJar for external API |
| Session Management | Laravel session with cookie storage |
| Authentication | Laravel Breeze (internal) + external API auth |
- Capa HTTP: validación de solicitudes, comprobaciones de autenticación, representación de respuestas
- Capa de servicio: lógica de negocio, filtrado de datos, autorización
- Capa de repositorio: abstracción de acceso a datos con contratos de interfaz
- Capa de datos: almacenamiento persistente (base de datos) y fuentes de datos externas (API)
La inyección de dependencias está configurada en app/Providers/AppServiceProvider.php donde las interfaces del repositorio están vinculadas a implementaciones concretas
| Controlador | Responsabilidad principal | Métodos clave |
|---|---|---|
| SalesController | Visualización de datos de ventas | listSalesByCuit() en app/Http/Controllers/SalesController.php |
| AuthenticatedSessionController | Autenticación dual | store() en app/Http/Controllers/Auth/AuthenticatedSessionController.php |
| authenticateWithExternalApi() app/Http/Controllers/Auth/AuthExternalSessionController.php | ||
| ClientController | CRUD de cliente + eliminaciones temporales | Métodos de recursos + archived(), restore(), sales() |
| UserController | CRUD de usuario con sincronización externa | Métodos de recursos con carga de API externa |
| Servicio | Propósito | Dependencias |
|---|---|---|
| VentasService | Recuperación y filtrado de ventas | SalesRepositoryInterface, ClientService, UserService |
| ClientService | Lógica de negocio del cliente | ClientRepositoryInterface |
| UserService | Gestión de usuarios + carga externa | UserRepositoryInterface, cliente HTTP |
Este VentasService es el componente más complejo, implementa app/Services/VentasService.php con amplio registro para depurar operaciones de transformación y filtrado de datos.
Todo el acceso a datos se realiza a través de las interfaces del repositorio
Los enlaces se configuran en app/Providers/AppServiceProvider.php permitiendo el intercambio continuo de implementaciones para pruebas o migración de fuentes de datos
El flujo más crítico del sistema implica la recuperación de datos de ventas de la API externa.
Detalles de implementación:
1. Comprobaciónd e autenticación en app/Http/Controllers/SalesController.php
2. Filtrado a nivel de servicio en app/Services/VentasService.php
3. Llamada a la API externa a nivel de repositorio (implementación en SalesRepository)
El sistema implementa un patrón de autenticación dual.
Claves de sesión gestionadas: - external_api_cookies: Matriz de cookies de API externas almacenadas en app/Http/Controllers/Auth/AuthExternalSessionController.php - external_api_authenticated: Valor booleano establecido en app/Http/Controllers/Auth/AuthExternalSessionController.php
La autenticación de API externa utiliza GuzzleHttp\Cookie\CookieJaren en app/Http/Controllers/Auth/AuthExternalSessionController.php para capturar y almacenar cookies del sistema externo.
La aplicación depende de una API externa http://localhost/daw2025/TP/Public con tres endpoints:
| Endpoint | Método | Propósito | Cuerpo de la solicitud |
|---|---|---|---|
| /login | POST | Autenticar y recibir cookies | {"nombre_usuario": "...", "contrasena": "..."} |
| /ventas | GET | Recuperar todos los datos de ventas | Ninguno (se requieren cookies) |
| /usuarios | POST | Cargar usuario | Objeto de datos de usuario |
Ejemplo de solicitud de autenticación en app/Http/Controllers/Auth/AuthenticatedSessionController.php
POST http://localhost/daw2025/TP/Public/login
Content-Type: application/json
{
"nombre_usuario": "username",
"contrasena": "password"
}
La API externa devuelve datos con nombres de campo en español que deben transformarse: - cuit_cliente -> cuitClient - fecha -> date - monto -> price
Esta transformación ocurre en SalesRepository antes de que los datos lleguen a la capa de servicio
La aplicación genera datos de desarrollo a través de database/seeders/DatabaseSeeder.php
1. 5 usuarios de prueba aleatorios generados por User::factory(5)
2. 1 cuenta de administrador mediante AdminSeeder credenciales admin@example.com / admin123
3. 6 clientes predefinidos con números CUIT realistas
- Alba Inés (CUIT: 1209312094)
- Juan Ignacio (CUIT: 20377138792)
- Francisco Colombara (CUIT: 11111111111)
- Mariana López (CUIT: 11111111115)
- Sofía García (CUIT: 90333333339)
- Milo J (CUIT: 99999999999)
Estos clientes se pueden utilizar para probar la recuperación de datos de ventas asumiendo que la API externa tiene registros de ventas correspondientes.
Las rutas se definen en rutas/web.php con la siguiente estructura:
| Patrón | Controlador | Middleware | Propósito |
|---|---|---|---|
| / | Redirección | Ninguno | Redirecciona a client.index |
| /dashboard | Redirección | auth, verified | Redirección posterior al inicio de sesión a clients.index |
| /users | UserController | auth | Rutas de recursos CRUD del usuario |
| /clients | ClientController | auth | Rutas de recursos CRUD del cliente |
| /clients/archived | ClientController::archived | auth | Lista de clientes eliminados temporalmente |
| /clients/restore/{id} | ClientController::restore | auth | Restaurar cliente eliminado |
| /clients/{client}/sales | ClientController::sales | auth | Redirigir a la vista de ventas |
| /sales/listSalesByCuit/{cuit} | SalesController::listSalesByCuit | Ninguno | Ventas de exhibición (sesión de cheques) |
| /profile | ProfileController | auth | Gestión de perfiles de usuario (Breeze) |
La ruta de ventas en la línea 56 no utiliza auth el middleware de Laravel, sino que verifica los valores de la sesión directamente en app/Http/Controllers/SalesController.php
1. Patrón de repositorio con interfaces: permite la abstracción de API externa y acceso a base de datos detrás de contratos uniformes.
2. Capa de servicio para la lógica de negocios: separa la orquestación del manejo de HTTP y el acceso a los datos
3. Autenticación dual: autenticación interna de Laravel + autenticación de API externa con estado basado en sesión
4. Soft-delete para clientes: los clientes utilizan deleted_at timestamps, para la eliminación lógica con capacidad de restauración
5. Ventas externas de solo lectura: los datos de ventas nunca se almacenan localmente, siempre se obtienen a pedido a una API externa
6. Registro extenso: registros de depuración en app/Http/Controllers/SalesController.php y app/Services/VentasService.php para solucionar problemas de integración con API externa
7. Almacenamiento de cookies basado en sesión: cookies de API externa almacenadas en la sesión de Laravel en lugar de pasarse explícitamente por el frontend
Estas decisiones priorizan la separación de tareas, la capacidad de prueba mediante la inyección de dependencia y la integración con un sistema externo que no se puede modificar.
Selected from shared topics, language and repository description—not editorial ratings.
LAAMCITO /
Proyecto de SSO para el desarrollo de una plataforma de gestión de contratos y diversos documentos.
31/100 healthEnmaLv /
Sistema Integrado de Gestión Universitaria (SIGA).
65/100 healthJefferson-ux /
Sistema web monolítico para la gestión clínica de pacientes, citas y pagos. Desarrollado con Laravel, Blade, Tailwind CSS y MySQL.
JeffDota2 /
El propósito principal del proyecto Gestión Empresarial es mejorar el manejo y manipulación de la información dentro de la fase práctica tanto para usuarios de Instituto Superior Tecnológico Yavirac, entidades formadoras donde se desempeña los roles de estudiantes, tutores empresariales e institucionales mediante la creación de un servidor para un intercambio de información con el aplicativo web. El lenguaje de programación es Php para ambos entornos. El sistema simplificará procesos de revisión, calificación y firmado de documentos como proyecto de titulación, plan marco, plan de rotación y reportes semanales de la carrera de Desarrollo de Software Modalidad Dual. Las herramientas que serán integradas en el lado del back-end son: MySQL en el lado de base de datos, Artisan del servidor, en el front-end se usará Bootstrap con Blade para la creación de interfaces, permitiendo una conexión y flujo de datos entre ambos entornos.
27/100 healthRoilodev /
Sistema de Gestión de Recursos Humanos - Estadísticas
31/100 healthDaniel2000k /
Sistema de gestión de servicios y citas - Laravel + MySQL + Blade
34/100 health