nimi nightmare don't sue me lmao

Matthew Trejo 390060b33f uscg logo 3 месяцев назад
prisma 43cfd61ae3 almost one shot lmfao 3 месяцев назад
public 390060b33f uscg logo 3 месяцев назад
src 390060b33f uscg logo 3 месяцев назад
.gitignore 43cfd61ae3 almost one shot lmfao 3 месяцев назад
README.md 14bea1ea55 NOOOO I FORGOR THE URL 3 месяцев назад
ROADMAP.md 8d1c149d62 student kinda worky 3 месяцев назад
components.json 43cfd61ae3 almost one shot lmfao 3 месяцев назад
eslint.config.mjs dcbd6f8033 Initial commit from Create Next App 3 месяцев назад
next.config.ts dcbd6f8033 Initial commit from Create Next App 3 месяцев назад
package-lock.json 8d1c149d62 student kinda worky 3 месяцев назад
package.json 8d1c149d62 student kinda worky 3 месяцев назад
postcss.config.mjs dcbd6f8033 Initial commit from Create Next App 3 месяцев назад
tsconfig.json dcbd6f8033 Initial commit from Create Next App 3 месяцев назад

README.md

🎓 Tapir - Sistema de Gestión de Asistencia Académica

Sistema web moderno para la gestión de asistencia estudiantil en instituciones educativas, desarrollado con Next.js 15, TypeScript, Prisma y PostgreSQL.

✨ 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

git clone https://git.checkthis.space/nekomataokayu/tapir.git
cd tapir

2. Instalar dependencias

npm install

3. Configurar variables de entorno

Crea un archivo .env en la raíz del proyecto:

# 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

-- Conectarse a PostgreSQL y crear la base de datos
CREATE DATABASE tapir_db;

Ejecutar migraciones

npx prisma migrate dev

Poblar con datos iniciales

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

npm run dev

Abre http://localhost:3000 en tu navegador.

Modo Producción

npm run build
npm run start

📊 Comandos Útiles

# 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

🗄️ Estructura de la Base de Datos

Entidades Principales

  • 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

Roles de Usuario

  • ADMIN: Acceso completo al sistema
  • TEACHER: Gestión de sus clases y asistencia
  • STUDENT: Visualización de su asistencia

🔐 Credenciales por Defecto

Después de ejecutar el seed:

  • Email: admin@universidad.edu
  • Contraseña: admin123
  • Rol: Administrador

⚠️ Importante: Cambia estas credenciales en producción.

📁 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

# 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

DATABASE_URL="postgresql://..."
NEXTAUTH_SECRET="clave-super-segura-para-produccion"
NEXTAUTH_URL="https://tu-dominio.com"