Matthew Trejo 4 месяцев назад
Родитель
Сommit
9d39d18708
1 измененных файлов с 163 добавлено и 20 удалено
  1. 163 20
      README.md

+ 163 - 20
README.md

@@ -1,36 +1,179 @@
-This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
+# 🎓 Tapir - Sistema de Gestión de Asistencia Académica
 
-## Getting Started
+Sistema web moderno para la gestión de asistencia estudiantil en instituciones educativas, desarrollado con Next.js 15, TypeScript, Prisma y PostgreSQL.
 
-First, run the development server:
+## ✨ Características Principales
 
+- **Gestión de Usuarios**: Administradores, profesores y estudiantes con roles diferenciados
+- **Control de Asistencia**: Registro y seguimiento detallado de asistencia por clase
+- **Gestión Académica**: Manejo de periodos, materias, secciones y horarios
+- **Dashboard Interactivo**: Visualización de estadísticas y reportes en tiempo real
+- **Autenticación Segura**: Sistema de login con NextAuth.js y encriptación bcrypt
+- **Interfaz Moderna**: UI responsiva con shadcn/ui y TailwindCSS
+
+## 🛠️ Stack Tecnológico
+
+- **Frontend**: Next.js 15, React 19, TypeScript
+- **Backend**: Next.js API Routes, Prisma ORM
+- **Base de Datos**: PostgreSQL
+- **Autenticación**: NextAuth.js
+- **UI/UX**: shadcn/ui, TailwindCSS 3, Radix UI
+- **Validación**: Zod, React Hook Form
+- **Notificaciones**: Sonner
+
+## 📋 Requisitos Previos
+
+- Node.js 18+ 
+- PostgreSQL 12+
+- npm, yarn, pnpm o bun
+
+## 🚀 Instalación
+
+### 1. Clonar el repositorio
+```bash
+git clone <url-del-repositorio>
+cd tapir
+```
+
+### 2. Instalar dependencias
+```bash
+npm install
+```
+
+### 3. Configurar variables de entorno
+Crea un archivo `.env` en la raíz del proyecto:
+
+```env
+# Base de datos PostgreSQL
+DATABASE_URL="postgresql://usuario:contraseña@localhost:5432/tapir_db"
+
+# NextAuth.js
+NEXTAUTH_SECRET="tu-clave-secreta-muy-segura-aqui"
+NEXTAUTH_URL="http://localhost:3000"
+```
+
+### 4. Configurar la base de datos
+
+#### Crear la base de datos
+```sql
+-- Conectarse a PostgreSQL y crear la base de datos
+CREATE DATABASE tapir_db;
+```
+
+#### Ejecutar migraciones
+```bash
+npx prisma migrate dev
+```
+
+#### Poblar con datos iniciales
+```bash
+npm run db:seed
+```
+
+Esto creará:
+- Usuario administrador: `admin@universidad.edu` / `admin123`
+- Periodo académico de ejemplo
+- Datos de prueba para desarrollo
+
+## 🏃‍♂️ Ejecutar el Proyecto
+
+### Modo Desarrollo
 ```bash
 npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
+```
+Abre [http://localhost:3000](http://localhost:3000) en tu navegador.
+
+### Modo Producción
+```bash
+npm run build
+npm run start
+```
+
+## 📊 Comandos Útiles
+
+```bash
+# Desarrollo
+npm run dev          # Servidor de desarrollo con Turbopack
+npm run build        # Build de producción
+npm run start        # Servidor de producción
+npm run lint         # Linting del código
+
+# Base de datos
+npm run db:seed      # Poblar base de datos con datos iniciales
+npx prisma studio    # Interfaz gráfica para explorar la BD
+npx prisma migrate dev    # Crear y aplicar migraciones
+npx prisma generate  # Regenerar cliente de Prisma
+npx prisma db push   # Sincronizar esquema sin migraciones
 ```
 
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+## 🗄️ Estructura de la Base de Datos
 
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
+### Entidades Principales
 
-This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
+- **Users**: Usuarios del sistema (Admin, Profesores, Estudiantes)
+- **Teachers**: Información específica de profesores
+- **Students**: Información específica de estudiantes
+- **Periods**: Periodos académicos
+- **Subjects**: Materias/Asignaturas
+- **Classes**: Clases específicas (Materia + Profesor + Periodo)
+- **Sections**: Secciones de clases
+- **Attendances**: Registros de asistencia
+- **TeacherAssignments**: Asignaciones de profesores a materias
+- **StudentEnrollments**: Inscripciones de estudiantes
 
-## Learn More
+### Roles de Usuario
 
-To learn more about Next.js, take a look at the following resources:
+- **ADMIN**: Acceso completo al sistema
+- **TEACHER**: Gestión de sus clases y asistencia
+- **STUDENT**: Visualización de su asistencia
 
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+## 🔐 Credenciales por Defecto
 
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
+Después de ejecutar el seed:
 
-## Deploy on Vercel
+- **Email**: `admin@universidad.edu`
+- **Contraseña**: `admin123`
+- **Rol**: Administrador
 
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+> ⚠️ **Importante**: Cambia estas credenciales en producción.
 
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
+## 📁 Estructura del Proyecto
+
+```
+tapir/
+├── src/
+│   ├── app/                 # App Router de Next.js
+│   │   ├── api/            # API Routes
+│   │   ├── admin/          # Panel de administración
+│   │   ├── teacher/        # Panel de profesores
+│   │   └── student/        # Panel de estudiantes
+│   ├── components/         # Componentes reutilizables
+│   ├── lib/               # Utilidades y configuraciones
+│   └── types/             # Definiciones de tipos TypeScript
+├── prisma/
+│   ├── schema.prisma      # Esquema de base de datos
+│   ├── migrations/        # Migraciones de BD
+│   └── seed.ts           # Datos iniciales
+└── public/               # Archivos estáticos
+```
+
+## 🔧 Configuración Adicional
+
+### Variables de Entorno Opcionales
+
+```env
+# Configuración de desarrollo
+NODE_ENV="development"
+
+# Configuración de base de datos (opcional)
+DATABASE_POOL_SIZE=10
+DATABASE_TIMEOUT=30000
+```
+
+### Variables de Entorno para Producción
+
+```env
+DATABASE_URL="postgresql://..."
+NEXTAUTH_SECRET="clave-super-segura-para-produccion"
+NEXTAUTH_URL="https://tu-dominio.com"
+```