Skip to content

Repository files navigation

Sistema de Gestión de Comunicados y Matrículas para Escuela

Características

  • 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)

Stack Tecnológico

  • 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

Requisitos del Sistema

  • PHP >= 8.2
  • Composer
  • Node.js y NPM
  • MySQL
  • Docker (opcional, para usar Laravel Sail)

Instalación

Con Laravel Sail (recomendado)

Laravel Sail es una interfaz de línea de comandos ligera para interactuar con el entorno de desarrollo Docker predeterminado de Laravel.

Instalación en proyectos existentes

  1. Clonar el repositorio
git clone https://github.com/YoimelDev/school-management-system
cd school-management-system
  1. 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
  1. Configurar variables de entorno
cp .env.example .env
  1. Ejecutar la instalación de Sail
php artisan sail:install
  1. Iniciar los contenedores de Sail
./vendor/bin/sail up

Para iniciar en modo desacoplado (background):

./vendor/bin/sail up -d
  1. Generar clave de aplicación
./vendor/bin/sail artisan key:generate
  1. Ejecutar migraciones y seeders
./vendor/bin/sail artisan migrate --seed
  1. Instalar dependencias frontend y compilar assets
./vendor/bin/sail npm install
./vendor/bin/sail npm run build
  1. Acceder a la aplicación en http://localhost

Configurando un alias para Sail

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

Con Docker Compose

  1. Clonar el repositorio
git clone https://github.com/yourusername/school-management-system.git
cd school-management-system
  1. Configurar variables de entorno
cp .env.example .env
  1. Levantar los contenedores Docker
docker compose up -d
  1. Instalar dependencias PHP
docker compose exec app composer install
  1. Generar clave de aplicación
docker compose exec app php artisan key:generate
  1. Ejecutar migraciones y seeders
docker compose exec app php artisan migrate --seed
  1. Instalar dependencias frontend y compilar assets
docker compose exec app npm install
docker compose exec app npm run build
  1. Acceder a la aplicación en http://localhost

Sin Docker (Entorno Local)

  1. Clonar el repositorio
git clone https://github.com/yourusername/school-management-system.git
cd school-management-system
  1. Instalar dependencias PHP
composer install
  1. Configurar variables de entorno
cp .env.example .env
  1. Configurar la conexión a la base de datos en el archivo .env

  2. Generar clave de aplicación

php artisan key:generate
  1. Ejecutar migraciones y seeders
php artisan migrate --seed
  1. Instalar dependencias frontend y compilar assets
npm install
npm run build
  1. Iniciar servidor de desarrollo
php artisan serve
  1. Acceder a la aplicación en http://localhost:8000

Comandos Útiles

Con Laravel Sail

# 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

Sin Docker

# 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

Estructura de la Base de Datos

Modelos Principales

  1. Academia (Academy)

    • id
    • name (nombre)
    • description (descripción)
    • logo (logo)
    • active (activo)
    • created_at
    • updated_at
  2. 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
  3. 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
  4. Tutor (Guardian)

    • id
    • user_id (id del usuario)
    • name (nombre)
    • email (correo electrónico)
    • phone (teléfono)
    • created_at
    • updated_at
  5. 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
  6. 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
  7. 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

Documentación API

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.

Endpoints API

Academias y Cursos

GET /api/v1/academies
GET /api/v1/academies/{id}
GET /api/v1/courses
GET /api/v1/courses/{id}

Matrículas

POST /api/v1/enrollments
GET /api/v1/enrollments/{id}
PUT /api/v1/enrollments/{id}

Pagos

POST /api/v1/payments

Comunicaciones

POST /api/v1/communications
GET /api/v1/communications
GET /api/v1/communications/{id}
POST /api/v1/communications/{communication}/send

Seguridad

  • 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

Pruebas

Ejecutar el conjunto de pruebas:

./vendor/bin/sail artisan test

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages