Matthew Trejo 4 tháng trước cách đây
mục cha
commit
70626764ca
1 tập tin đã thay đổi với 166 bổ sung19 xóa
  1. 166 19
      README.md

+ 166 - 19
README.md

@@ -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.