-
Gestión de Oferta Académica
- Visualización de academias y cursos disponibles
- Detalles de cursos incluyendo costo, duración y modalidad
-
Sistema de Matrícula
- Formularios de inscripción interactivos usando Livewire con proceso por pasos
- Registro de estudiantes con información demográfica (género, fecha de nacimiento)
- Selección de cursos y seguimiento del estado de matrícula
-
Sistema de Comunicación
- Comunicaciones dirigidas a padres/tutores
- Filtrado por curso específico o rango de edad del estudiante
- Programación de envíos y seguimiento del estado (borrador, enviado, programado)
- Envío de correos electrónicos a tutores con seguimiento de lectura
-
Procesamiento de Pagos
- Soporte para múltiples métodos de pago (efectivo, transferencia bancaria)
-
Backend
- Laravel 12.0
- PHP 8.2+
- MySQL
-
Frontend
- Livewire 3.4+
- TailwindCSS 3.1+
-
Documentación API
- L5-Swagger 9.0+
-
Desarrollo y Pruebas
- Laravel Sail
- PHPUnit
- PHP >= 8.2
- Composer
- Node.js y NPM
- MySQL
- Docker (opcional, para usar Laravel Sail)
Laravel Sail es una interfaz de línea de comandos ligera para interactuar con el entorno de desarrollo Docker predeterminado de Laravel.
- Clonar el repositorio
git clone https://github.com/YoimelDev/school-management-system
cd school-management-system- Instalar dependencias de Composer con Docker
docker run --rm \
-u "$(id -u):$(id -g)" \
-v "$(pwd):/var/www/html" \
-w /var/www/html \
laravelsail/php84-composer:latest \
composer install --ignore-platform-reqs- Configurar variables de entorno
cp .env.example .env- Ejecutar la instalación de Sail
php artisan sail:install- Iniciar los contenedores de Sail
./vendor/bin/sail upPara iniciar en modo desacoplado (background):
./vendor/bin/sail up -d- Generar clave de aplicación
./vendor/bin/sail artisan key:generate- Ejecutar migraciones y seeders
./vendor/bin/sail artisan migrate --seed- Instalar dependencias frontend y compilar assets
./vendor/bin/sail npm install
./vendor/bin/sail npm run build- Acceder a la aplicación en http://localhost
Para evitar escribir ./vendor/bin/sail cada vez, puedes configurar un alias en tu shell:
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'Agrega esto a tu archivo de configuración de shell (~/.bashrc, ~/.zshrc, etc.) y reinicia la terminal.
Una vez configurado, puedes usar simplemente:
sail up -d
sail artisan migrate
sail npm run build- Clonar el repositorio
git clone https://github.com/yourusername/school-management-system.git
cd school-management-system- Configurar variables de entorno
cp .env.example .env- Levantar los contenedores Docker
docker compose up -d- Instalar dependencias PHP
docker compose exec app composer install- Generar clave de aplicación
docker compose exec app php artisan key:generate- Ejecutar migraciones y seeders
docker compose exec app php artisan migrate --seed- Instalar dependencias frontend y compilar assets
docker compose exec app npm install
docker compose exec app npm run build- Acceder a la aplicación en http://localhost
- Clonar el repositorio
git clone https://github.com/yourusername/school-management-system.git
cd school-management-system- Instalar dependencias PHP
composer install- Configurar variables de entorno
cp .env.example .env-
Configurar la conexión a la base de datos en el archivo .env
-
Generar clave de aplicación
php artisan key:generate- Ejecutar migraciones y seeders
php artisan migrate --seed- Instalar dependencias frontend y compilar assets
npm install
npm run build- Iniciar servidor de desarrollo
php artisan serve- Acceder a la aplicación en http://localhost:8000
# Iniciar contenedores
sail up -d
# Detener contenedores
sail stop
# Ejecutar tests
sail artisan test
# Iniciar servidor de desarrollo frontend
sail npm run dev
# Generar documentación API
sail artisan l5-swagger:generate
# Limpiar caché
sail artisan optimize:clear
# Reconstruir imágenes (actualización)
sail build --no-cache# Ejecutar tests
php artisan test
# Iniciar servidor de desarrollo frontend
npm run dev
# Generar documentación API
php artisan l5-swagger:generate
# Limpiar caché
php artisan optimize:clear-
Academia (Academy)
- id
- name (nombre)
- description (descripción)
- logo (logo)
- active (activo)
- created_at
- updated_at
-
Curso (Course)
- id
- academy_id (id de academia)
- name (nombre)
- description (descripción)
- cost (costo)
- duration (duración)
- modality (modalidad: in-person, online, hybrid)
- active (activo)
- capacity (capacidad)
- start_date (fecha de inicio)
- end_date (fecha de fin)
- created_at
- updated_at
-
Estudiante (Student)
- id
- guardian_id (id del tutor)
- first_name (nombre)
- last_name (apellido)
- birth_date (fecha de nacimiento)
- gender (género: male, female, other)
- created_at
- updated_at
-
Tutor (Guardian)
- id
- user_id (id del usuario)
- name (nombre)
- email (correo electrónico)
- phone (teléfono)
- created_at
- updated_at
-
Matrícula (Enrollment)
- id
- student_id (id del estudiante)
- course_id (id del curso)
- enrollment_date (fecha de matrícula)
- status (estado: pending, confirmed, cancelled)
- notes (notas)
- created_at
- updated_at
-
Pago (Payment)
- id
- enrollment_id (id de matrícula)
- amount (monto)
- method (método de pago: cash, bank_transfer)
- status (estado: pending, completed, failed, refunded)
- payment_date (fecha de pago)
- reference_number (número de referencia)
- notes (notas)
- created_at
- updated_at
-
Comunicación (Communication)
- id
- course_id (id del curso, opcional)
- title (título)
- message (mensaje)
- age_from (edad desde)
- age_to (edad hasta)
- send_date (fecha de envío)
- status (estado: draft, sent, scheduled)
- created_at
- updated_at
El proyecto incluye documentación completa de la API usando Swagger/OpenAPI. Puede acceder a la documentación en:
- Interfaz Swagger UI:
/api/documentation - Formato JSON:
/docs?api-docs.json
La documentación proporciona información detallada sobre todos los endpoints disponibles, parámetros de solicitud, formatos de respuesta y requisitos de autenticación.
GET /api/v1/academies
GET /api/v1/academies/{id}
GET /api/v1/courses
GET /api/v1/courses/{id}
POST /api/v1/enrollments
GET /api/v1/enrollments/{id}
PUT /api/v1/enrollments/{id}
POST /api/v1/payments
POST /api/v1/communications
GET /api/v1/communications
GET /api/v1/communications/{id}
POST /api/v1/communications/{communication}/send
- Autenticación API usando Laravel Sanctum 4.0+
- Protección CSRF para rutas web
- Validación de formularios
- Protección XSS
- Prevención de inyección SQL mediante Eloquent ORM
Ejecutar el conjunto de pruebas:
./vendor/bin/sail artisan test