Feature/markdown editor#66
Conversation
…e y es actualizado en caos que existe, igualmente se creo un query del slug para evitar creaciones de proyectos que no existen en la bd TODO: subida de archivos markdown
… bd de ultimo cambio en el proyecto
There was a problem hiding this comment.
Pull request overview
This PR implements a complete Markdown editor system for Devurity projects, enabling authenticated users to create and edit project documentation securely through API endpoints with Supabase Storage integration.
Changes:
- Added two API routes for Markdown file management: direct content upload and file upload
- Implemented authentication middleware and Supabase client configuration
- Added utility function for filename normalization and user management endpoints
- Included database schema dump and environment variable configuration
Reviewed changes
Copilot reviewed 9 out of 13 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
tsconfig.json |
Changed JSX transformation from react-jsx to preserve |
prisma/devurity-2025-12-08-new.sql |
Complete database schema dump with sample data |
package.json |
Added @supabase/supabase-js dependency |
lib/utils/normalize.space.ts |
Utility to normalize filenames by replacing spaces with underscores |
lib/supabase/supabase.ts |
Supabase client and admin client configuration |
lib/auth/require-auth.ts |
Authentication helper to validate JWT tokens |
app/api/auth/projects/editor/[projectid]/route.ts |
API endpoint for uploading Markdown content |
app/api/auth/projects/editor/[projectid]/upload/route.ts |
API endpoint for uploading Markdown files |
app/api/auth/login/route.ts |
Added logger.info() call for token logging |
app/api/auth/csrf-token/users/route.ts |
New endpoint for user pagination and retrieval |
app/api/auth/csrf-token/users/[id]/route.ts |
New endpoint for user approval/rejection operations |
.env.example |
Added Supabase environment variable examples |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This comment was marked as resolved.
This comment was marked as resolved.
5a1cd8e to
ade367a
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…principal bcryptjs para manejo de contraseñas y un script para evitar la ejecución de scripts maliciosos al instalar. Y subida de Next.js a la última versión.
✅ Actions performedReview triggered.
|
📝 WalkthroughWalkthroughSe agregan nuevas capacidades de autenticación y carga de archivos. Se introduce una función de autenticación requerida, se inicializa un cliente de Supabase, se crean dos nuevos endpoints API para proyectos que permiten editar y cargar contenido de Markdown, se agrega logging de autenticación y una utilidad de normalización. Changes
Sequence Diagram(s)sequenceDiagram
actor Client as Cliente
participant API as API POST<br/>/editor/[id]
participant Auth as requireAuth
participant DB as Base de Datos<br/>(Prisma)
participant Storage as Supabase<br/>Storage
Client->>API: POST /editor/[projectid]<br/>(formData con contenido)
API->>Auth: requireAuth(request)
Auth-->>API: { userId } | null
alt No autenticado
API-->>Client: 401 Unauthorized
else Autenticado
API->>DB: findUnique(project)<br/>+ user_projects
DB-->>API: project | null
alt No encontrado
API-->>Client: 404 Project not found
else Encontrado
API->>Storage: Upload content<br/>bucket: devurity
Storage-->>API: Upload result
API->>DB: Update project<br/>updated_at
DB-->>API: Success
API-->>Client: 200 JSON result
end
end
sequenceDiagram
actor Client as Cliente
participant API as API POST<br/>/upload/[id]
participant Auth as requireAuth
participant Validate as Validador<br/>de Archivo
participant DB as Base de Datos<br/>(Prisma)
participant Storage as Supabase<br/>Storage
Client->>API: POST /upload/[projectid]<br/>(FormData con archivo .md)
API->>Auth: requireAuth(request)
Auth-->>API: { userId } | null
alt No autenticado
API-->>Client: 401 Unauthorized
else Autenticado
API->>DB: Verificar propiedad<br/>del proyecto
DB-->>API: proyecto válido | null
alt Proyecto no válido
API-->>Client: 404 Project not found
else Válido
API->>Validate: Validar extensión,<br/>tamaño < 1MB
alt Validación fallida
Validate-->>API: Error
API-->>Client: 400 Bad Request
else Válido
Validate->>Validate: Decodificar UTF-8<br/>Rechazar null bytes
alt Decodificación fallida
Validate-->>API: Error
API-->>Client: 400 Invalid encoding
else Éxito
Validate-->>API: Contenido decodificado
API->>Storage: Upload text<br/>bucket: devurity
Storage-->>API: Upload result
API->>DB: Update project<br/>updated_at
DB-->>API: Success
API-->>Client: 200 Success response
end
end
end
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Esta PR implementa un sistema completo de editor de Markdown para proyectos del semillero Devurity, permitiendo a los usuarios autenticados crear y editar documentación de proyectos de manera segura.
✨ Características principales
1. API de Editor de Markdown (
/api/auth/projects/editor/[projectid]).mden Supabase Storageupdated_atdel proyecto en la BD2. Upload de archivos Markdown (
/api/auth/projects/editor/[projectid]/upload).mddesde el sistema local.md)3. Middleware de autenticación (
lib/auth/require-auth.ts)requireAuth()para verificar tokens JWT4. Utilidades
normalizeSpace()para limpiar nombres de archivos🔐 Seguridad implementada
📁 Archivos modificados/creados
Nuevos archivos:
app/api/auth/projects/editor/[projectid]/route.tsapp/api/auth/projects/editor/[projectid]/upload/route.tslib/auth/require-auth.tslib/utils/normalize.space.tsArchivos modificados:
.env.example- Variables de Supabase agregadaspackage.json- Dependencias actualizadasprisma/devurity-2025-12-08-new.sql- Schema actualizadolib/supabase/supabase.ts- Cliente de Supabase configurado🧪 Testing
.mdexitoso📝 Commits principales
6e75896- Implementación inicial: ruta de editor con query a BDd9a8d0f- Sistema de upload con validaciones de seguridad78df688- Finalización: verificación BD, autenticación y actualización de timestamps🚀 Cómo probar
/api/auth/projects/editor/[projectid].mda/api/auth/projects/editor/[projectid]/uploadprojects/{nombre-proyecto}/{nombre-proyecto}.md📌 Notas adicionales
devurity/projects/{proyecto}/{archivo}.mdupsert: truepara sobrescribir contenido existenteupdated_aten cada modificación del proyectoSummary by CodeRabbit
Notas de la versión
Nuevas Características
Chores