|
|
@@ -1,36 +1,183 @@
|
|
|
-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).
|
|
|
+# Sistema de Gestión de Asistencia (NIMI)
|
|
|
|
|
|
-## Getting Started
|
|
|
+Este es un proyecto de [Next.js](https://nextjs.org) para gestión de asistencia estudiantil, construido con TypeScript, Drizzle ORM, NextAuth.js y PostgreSQL.
|
|
|
|
|
|
-First, run the development server:
|
|
|
+## Prerrequisitos
|
|
|
+
|
|
|
+Antes de comenzar, asegúrate de tener instalado:
|
|
|
+
|
|
|
+- [Node.js](https://nodejs.org/) (versión 18 o superior)
|
|
|
+- [PostgreSQL](https://www.postgresql.org/) (versión 12 o superior)
|
|
|
+- [npm](https://www.npmjs.com/) o [yarn](https://yarnpkg.com/)
|
|
|
+
|
|
|
+## Configuración Local
|
|
|
+
|
|
|
+### 1. Clonar el repositorio
|
|
|
+
|
|
|
+```bash
|
|
|
+git clone <url-del-repositorio>
|
|
|
+cd nimi
|
|
|
+```
|
|
|
+
|
|
|
+### 2. Instalar dependencias
|
|
|
+
|
|
|
+```bash
|
|
|
+npm install
|
|
|
+# o
|
|
|
+yarn install
|
|
|
+```
|
|
|
+
|
|
|
+### 3. Configurar variables de entorno
|
|
|
+
|
|
|
+Copia el archivo de ejemplo y configura las variables:
|
|
|
+
|
|
|
+```bash
|
|
|
+cp .env.example .env.local
|
|
|
+```
|
|
|
+
|
|
|
+Edita el archivo `.env.local` con tus configuraciones:
|
|
|
+
|
|
|
+```env
|
|
|
+# 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:
|
|
|
+
|
|
|
+```sql
|
|
|
+CREATE DATABASE nimi_db;
|
|
|
+```
|
|
|
+
|
|
|
+#### Generar y ejecutar migraciones
|
|
|
+
|
|
|
+```bash
|
|
|
+# 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:
|
|
|
+
|
|
|
+```bash
|
|
|
+npm run db:seed
|
|
|
+```
|
|
|
+
|
|
|
+### 5. Ejecutar el servidor de desarrollo
|
|
|
|
|
|
```bash
|
|
|
npm run dev
|
|
|
-# or
|
|
|
+# o
|
|
|
yarn dev
|
|
|
-# or
|
|
|
-pnpm dev
|
|
|
-# or
|
|
|
-bun dev
|
|
|
```
|
|
|
|
|
|
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
|
|
+Abre [http://localhost:3000](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
|
|
|
|
|
|
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
|
|
+- **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
|
|
|
|
|
|
-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.
|
|
|
+## Administración de Base de Datos
|
|
|
|
|
|
-## Learn More
|
|
|
+### Drizzle Studio
|
|
|
|
|
|
-To learn more about Next.js, take a look at the following resources:
|
|
|
+Para una interfaz visual de la base de datos:
|
|
|
|
|
|
-- [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.
|
|
|
+```bash
|
|
|
+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
|
|
|
+
|
|
|
+```bash
|
|
|
+# Limpia node_modules y reinstala
|
|
|
+rm -rf node_modules package-lock.json
|
|
|
+npm install
|
|
|
+```
|
|
|
|
|
|
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
|
|
+## Contribuir
|
|
|
|
|
|
-## Deploy on Vercel
|
|
|
+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
|
|
|
|
|
|
-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.
|
|
|
+## Licencia
|
|
|
|
|
|
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
|
|
+Este proyecto está bajo la Licencia MIT - ver el archivo [LICENSE](LICENSE) para más detalles.
|