Data Layer
Una Data Layer centraliza cómo la aplicación lee y escribe datos.
En aplicaciones con React Server Components y App Router, la línea entre frontend y backend es menos evidente. Por eso conviene decidir explícitamente dónde viven el acceso a datos, las comprobaciones de permisos y la transformación de entidades.
Problema que resuelve
Si cada componente accede directamente a la base de datos o a servicios externos, es fácil duplicar lógica y olvidar checks de autorización.
Una Data Layer evita que la seguridad dependa de recordar la misma validación en muchos sitios.
Enfoques habituales
HTTP APIs
Útil en organizaciones grandes, proyectos existentes o cuando varios clientes consumen el mismo backend.
Ventaja: límites claros entre cliente y servidor.
Coste: más boilerplate, serialización y capa de red incluso dentro del mismo producto.
Data Access Layer interna
Recomendada cuando el frontend y backend viven en el mismo codebase.
La aplicación expone funciones internas que concentran permisos y acceso a datos:
export async function getProjectForUser(userId: string, projectId: string) {
const project = await db.project.findUnique({ where: { id: projectId } });
if (!project || project.ownerId !== userId) {
return null;
}
return project;
}La regla importante es que cada función debe recibir el usuario o contexto necesario para decidir si puede devolver esos datos.
Component-level Data Access
Útil para prototipos y aprendizaje.
Puede ser rápido, pero en proyectos grandes tiende a dispersar permisos, queries y lógica de transformación por toda la UI.
Regla práctica
El componente no debería recibir más datos de los que necesita ni datos que el usuario actual no está autorizado a ver.