Files
pagasis/docs/ESTRUCTURA_PROYECTO.md
T
2025-10-15 23:45:32 -06:00

157 lines
5.9 KiB
Markdown

# Estructura del Proyecto
Este documento describe la organización de carpetas y archivos del Sistema de Asistencia MAC.
## Estructura de Directorios
```
pagina-mac-og/
├── backend/ # Aplicación Django (Backend)
│ ├── attendance/ # App de gestión de asistencias
│ ├── authentication/ # App de autenticación y usuarios
│ ├── events/ # App de gestión de eventos
│ ├── mac_attendance/ # Configuración principal de Django
│ ├── scripts/ # Scripts de utilidad y pruebas
│ ├── static/ # Archivos estáticos (CSS, JS)
│ ├── templates/ # Plantillas HTML
│ ├── db/ # Base de datos SQLite
│ ├── logs/ # Logs de la aplicación
│ ├── media/ # Archivos multimedia subidos
│ └── manage.py # CLI de Django
├── frontend/ # Aplicación React (Frontend)
│ ├── src/ # Código fuente
│ │ ├── components/ # Componentes React
│ │ ├── contexts/ # Contextos (Auth, etc.)
│ │ ├── services/ # Servicios (API calls)
│ │ └── styles/ # Estilos CSS
│ ├── public/ # Archivos públicos
│ └── package.json # Dependencias de Node.js
├── docker/ # Configuración Docker
│ ├── Dockerfile.backend # Dockerfile para Django
│ ├── Dockerfile.frontend # Dockerfile para React + Nginx
│ └── nginx.conf # Configuración de Nginx
├── docs/ # Documentación
│ ├── ACCESO_ADMIN.md # Guía de acceso al admin
│ ├── API_DOCUMENTATION.md # Documentación de API
│ ├── DOCKER_SETUP.md # Configuración de Docker
│ ├── GUIA_COMPARTIR_DOCKER.md # Guía para compartir
│ ├── INSTRUCCIONES_GITHUB.md # Instrucciones de Git
│ ├── ESTRUCTURA_PROYECTO.md # Este archivo
│ └── postman_collection.json # Colección de Postman
├── docker-compose.yml # Orquestación de contenedores
├── .dockerignore # Archivos ignorados por Docker
├── .env.example # Ejemplo de variables de entorno
├── .gitignore # Archivos ignorados por Git
├── install.sh # Script de instalación (Linux/Mac)
├── install.bat # Script de instalación (Windows)
├── create_superuser.sh # Script para crear superusuario
├── README.md # Documentación principal
└── LICENSE # Licencia del proyecto
```
## Descripción de Componentes
### Backend (Django)
**Aplicaciones Django:**
- **attendance**: Gestión de asistencias y estadísticas
- **authentication**: Sistema de autenticación, usuarios, perfiles
- **events**: Gestión de eventos del MAC
- **mac_attendance**: Configuración principal del proyecto Django
**Archivos importantes:**
- `manage.py`: CLI de Django para ejecutar comandos
- `requirements.txt`: Dependencias de Python
- `db.sqlite3`: Base de datos SQLite (desarrollo)
### Frontend (React)
**Estructura:**
- `src/components/`: Componentes React organizados por rol (admin, student, attendance)
- `src/contexts/`: Contextos de React (AuthContext para autenticación)
- `src/services/`: Servicios para llamadas a la API
- `src/styles/`: Archivos CSS
### Docker
**Archivos:**
- `Dockerfile.backend`: Imagen de Docker para el backend Django
- `Dockerfile.frontend`: Imagen de Docker para el frontend React + Nginx
- `nginx.conf`: Configuración del servidor Nginx como proxy reverso
### Documentación
Toda la documentación técnica, guías de uso y configuración se encuentra en la carpeta `docs/`.
## Flujo de Trabajo
### Desarrollo
1. **Backend**: Modificar código en `backend/`
2. **Frontend**: Modificar código en `frontend/src/`
3. **Docker**: Los cambios se reflejan automáticamente con volúmenes
### Despliegue
1. Construir imágenes: `docker-compose build`
2. Iniciar servicios: `docker-compose up -d`
3. Verificar logs: `docker-compose logs -f`
## Scripts Útiles
### Backend (desde `backend/`)
```bash
python manage.py migrate # Aplicar migraciones
python manage.py createsuperuser # Crear superusuario
python manage.py collectstatic # Recopilar archivos estáticos
python scripts/create_test_data.py # Crear datos de prueba
```
### Docker
```bash
docker-compose up -d # Iniciar servicios
docker-compose down # Detener servicios
docker-compose logs backend # Ver logs del backend
docker-compose restart backend # Reiniciar backend
```
## Variables de Entorno
Copia `.env.example` a `.env` y configura las variables según tu entorno:
```bash
cp .env.example .env
# Editar .env con tus valores
```
## Puertos
- **Frontend (Nginx)**: http://localhost (puerto 80)
- **Backend (Django)**: http://localhost:8000 (interno, proxy via Nginx)
- **Admin Django**: http://localhost/admin
## Notas Importantes
1. **Base de datos**: SQLite por defecto en desarrollo. Para producción, usar PostgreSQL.
2. **Archivos estáticos**: Servidos por Nginx en producción
3. **CORS**: Configurado para permitir localhost en desarrollo
4. **Logs**: Disponibles en `backend/logs/` y via `docker-compose logs`
## Convenciones
- **Backend**: Seguir guía de estilo PEP 8 para Python
- **Frontend**: Seguir guía de estilo de Airbnb para JavaScript/React
- **Commits**: Mensajes descriptivos en español
- **Branches**: `main` para producción, crear feature branches para desarrollo
## Soporte
Para más información, consulta:
- [README.md](../README.md) - Guía general del proyecto
- [API_DOCUMENTATION.md](API_DOCUMENTATION.md) - Documentación de la API
- [DOCKER_SETUP.md](DOCKER_SETUP.md) - Configuración detallada de Docker