forked from val-lop20/Pagina-de-Asistencia-MAC
157 lines
5.9 KiB
Markdown
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
|