Student Attendance Management System

Matthew Trejo 94d39ec5d6 FUCK 3 maanden geleden
drizzle 1d7a9b638d fix clases and secciones 4 maanden geleden
public b828702f41 Initial commit from Create Next App 4 maanden geleden
src 94d39ec5d6 FUCK 3 maanden geleden
.env.example bf23576e0d ok maybe we done here 4 maanden geleden
.gitignore bf23576e0d ok maybe we done here 4 maanden geleden
README.md 72dba2f325 there is something wrong here 3 maanden geleden
components.json d2f11ebc9d holy shit 4 maanden geleden
drizzle.config.ts d2f11ebc9d holy shit 4 maanden geleden
eslint.config.mjs b828702f41 Initial commit from Create Next App 4 maanden geleden
next.config.ts b828702f41 Initial commit from Create Next App 4 maanden geleden
package-lock.json 72dba2f325 there is something wrong here 3 maanden geleden
package.json 72dba2f325 there is something wrong here 3 maanden geleden
postcss.config.mjs b828702f41 Initial commit from Create Next App 4 maanden geleden
tsconfig.json b828702f41 Initial commit from Create Next App 4 maanden geleden

README.md

Sistema de Gestión de Asistencia (NIMI)

Este es un proyecto de Next.js para gestión de asistencia estudiantil, construido con TypeScript, Drizzle ORM, NextAuth.js y PostgreSQL.

Prerrequisitos

Antes de comenzar, asegúrate de tener instalado:

Configuración Local

1. Clonar el repositorio

git clone <url-del-repositorio>
cd nimi

2. Instalar dependencias

npm install

3. Configurar variables de entorno

Copia el archivo de ejemplo y configura las variables:

cp .env.example .env

Edita el archivo .env con tus configuraciones:

# Database
DATABASE_URL="postgresql://usuario:contraseña@localhost:5432/nimi_db"

# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="tu-clave-secreta-aqui"

# App
NEXT_PUBLIC_APP_NAME="Sistema de Gestión de Asistencia"

Importante:

  • Reemplaza usuario, contraseña y nimi_db con tus credenciales reales de PostgreSQL
  • Genera una clave secreta segura para NEXTAUTH_SECRET (puedes usar: openssl rand -base64 32)

4. Configurar la base de datos

Crear la base de datos

Conéctate a PostgreSQL y crea la base de datos:

CREATE DATABASE nimi_db;

Generar y ejecutar migraciones

# Generar archivos de migración
npm run db:generate

# Ejecutar migraciones en la base de datos
npm run db:migrate

(Opcional) Poblar con datos de prueba

Si existe un archivo de seed:

npm run db:seed

Si este comando falla, intenta instalar tsx con:

npm install tsx

5. Ejecutar el servidor de desarrollo

npm run dev
# o
yarn dev

Abre http://localhost:3000 en tu navegador para ver la aplicación.

Scripts Disponibles

  • npm run dev - Inicia el servidor de desarrollo
  • npm run build - Construye la aplicación para producción
  • npm run start - Inicia el servidor de producción
  • npm run lint - Ejecuta el linter
  • npm run db:generate - Genera archivos de migración de Drizzle
  • npm run db:migrate - Ejecuta las migraciones en la base de datos
  • npm run db:studio - Abre Drizzle Studio para administrar la base de datos
  • npm run db:seed - Pobla la base de datos con datos de prueba

Estructura del Proyecto

src/
├── app/                 # App Router de Next.js
│   ├── admin/          # Rutas de administrador
│   ├── api/            # API Routes
│   ├── auth/           # Páginas de autenticación
│   ├── student/        # Rutas de estudiante
│   └── teacher/        # Rutas de profesor
├── components/         # Componentes React reutilizables
├── lib/               # Utilidades y configuraciones
│   ├── auth.ts        # Configuración de NextAuth
│   └── db/            # Configuración de base de datos
└── types/             # Definiciones de tipos TypeScript

Tecnologías Utilizadas

  • Framework: Next.js 15 con App Router
  • Lenguaje: TypeScript
  • Base de datos: PostgreSQL con Drizzle ORM
  • Autenticación: NextAuth.js
  • Estilos: Tailwind CSS
  • Componentes UI: Radix UI
  • Validación: Zod

Administración de Base de Datos

Drizzle Studio

Para una interfaz visual de la base de datos:

npm run db:studio

Esto abrirá Drizzle Studio en tu navegador para administrar los datos.

Migraciones

Cuando hagas cambios al esquema en src/lib/db/schema.ts:

  1. Genera la migración: npm run db:generate
  2. Revisa el archivo de migración generado en drizzle/
  3. Aplica la migración: npm run db:migrate

Solución de Problemas

Error de conexión a la base de datos

  • Verifica que PostgreSQL esté ejecutándose
  • Confirma que las credenciales en .env.local sean correctas
  • Asegúrate de que la base de datos nimi_db exista

Error de autenticación

  • Verifica que NEXTAUTH_SECRET esté configurado
  • Confirma que NEXTAUTH_URL coincida con tu URL local

Problemas con dependencias

# Limpia node_modules y reinstala
rm -rf node_modules package-lock.json
npm install

Contribuir

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Licencia

Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.