Skip to content

Commit f42ba99

Browse files
docs(root): initialize project documentation and technical blueprint
1 parent 82255f2 commit f42ba99

1 file changed

Lines changed: 247 additions & 65 deletions

File tree

README.md

Lines changed: 247 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,278 @@
1-
# CollabData - Plataforma Colaborativa de Ingeniería de Datos
1+
# 📊 CollabData
22

3-
Esta es una aplicación Next.js construida con Firebase Studio. Es una plataforma diseñada para que equipos de datos colaboren en ingeniería y análisis de datos.
3+
![Next.js](https://img.shields.io/badge/Next.js-15+-black?style=flat&logo=nextdotjs&logoColor=white)
4+
![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?style=flat&logo=typescript&logoColor=white)
5+
![Firebase](https://img.shields.io/badge/Firebase-App%20Hosting-FFCA28?style=flat&logo=firebase&logoColor=black)
6+
![Tailwind CSS](https://img.shields.io/badge/Tailwind%20CSS-3.x-06B6D4?style=flat&logo=tailwindcss&logoColor=white)
7+
![Genkit](https://img.shields.io/badge/Google%20Genkit-AI%20Flows-4285F4?style=flat&logo=google&logoColor=white)
8+
![License](https://img.shields.io/badge/License-MIT-green?style=flat&logo=opensourceinitiative&logoColor=white)
49

5-
## 📝 Descripción del Proyecto
10+
> 🌐 **Live Demo:** [collabdata.vercel.app](https://collabdata.vercel.app)
611
7-
CollabData es una plataforma web que permite a los usuarios gestionar proyectos de análisis de datos, cargar conjuntos de datos (datasets), ejecutar análisis automatizados y visualizar los resultados. La aplicación está diseñada con un enfoque en la colaboración en tiempo real y la eficiencia del flujo de trabajo.
12+
---
813

9-
## 🔑 Características Principales
14+
## 🧠 Overview
1015

11-
- **🔐 Autenticación de Usuarios:** Sistema completo de inicio de sesión, registro y autenticación social usando Google y GitHub.
12-
- **📊 Panel de Control (Dashboard):** Un panel central para ver, buscar, filtrar y gestionar todos los proyectos de análisis.
13-
- **✨ Creación de Nuevos Análisis:** Un flujo guiado para crear nuevos proyectos de análisis, configurar herramientas y cargar conjuntos de datos.
14-
- **📈 Visualización de Resultados:** Paneles de resultados dinámicos con KPIs, gráficos, tablas de estadísticas descriptivas e insights generados por IA.
15-
- **💻 Espacio de Trabajo Interactivo:** Un entorno similar a un IDE para explorar archivos de datos.
16-
- **👤 Gestión de Perfil:** Página de ajustes para que los usuarios actualicen su información personal y gestionen su cuenta.
17-
- **🤖 Integración de IA:** Utiliza Genkit para proporcionar sugerencias de análisis inteligentes basadas en las descripciones de los datasets.
16+
**CollabData** es una plataforma web full-stack orientada a equipos de ingeniería y análisis de datos. Construida sobre el ecosistema **Next.js 15 con App Router** y respaldada por **Firebase** como infraestructura de backend, la aplicación permite a múltiples usuarios gestionar proyectos de análisis de datos, cargar conjuntos de datos, obtener visualizaciones de resultados y recibir sugerencias inteligentes generadas por modelos de IA a través de **Google Genkit**.
1817

19-
## 🛠️ Stack Tecnológico
18+
El proyecto combina una arquitectura moderna de frontend orientada a componentes (React + ShadCN UI + Tailwind CSS) con un backend serverless basado en Firebase Authentication y Firestore, y se despliega mediante **Firebase App Hosting** con integración de CI/CD a través de **GitHub Actions**. El entorno de desarrollo está configurado para trabajar con **Firebase Studio (Project IDX)**.
2019

21-
- **Framework:** [Next.js](https://nextjs.org/)
22-
- **Biblioteca UI:** [React](https://react.dev/)
23-
- **Lenguaje:** [TypeScript](https://www.typescriptlang.org/)
24-
- **Estilos:** [Tailwind CSS](https://tailwindcss.com/)
25-
- **Componentes UI:** [ShadCN UI](https://ui.shadcn.com/)
26-
- **Backend y Autenticación:** [Firebase](https://firebase.google.com/) (Authentication, Firestore)
27-
- **IA Generativa:** [Genkit](https://firebase.google.com/docs/genkit) (Google AI)
20+
---
2821

29-
## 🚀 Cómo Empezar
22+
## ⚙️ Features
3023

31-
Sigue estos pasos para poner en marcha el entorno de desarrollo.
24+
- **Autenticación social completa** mediante Firebase Authentication, con soporte para inicio de sesión con Google y GitHub, además de registro por email y contraseña.
25+
- **Dashboard centralizado de proyectos** con capacidades de búsqueda, filtrado y gestión visual de todos los análisis del usuario.
26+
- **Flujo guiado de creación de análisis** que permite definir configuración, seleccionar herramientas de procesamiento y cargar datasets paso a paso.
27+
- **Espacio de trabajo interactivo por proyecto** con una interfaz similar a un IDE para explorar la estructura de archivos de datos cargados.
28+
- **Visualización dinámica de resultados** que incluye paneles de KPIs, gráficos de análisis, tablas de estadísticas descriptivas y resúmenes ejecutivos.
29+
- **Sugerencias de análisis impulsadas por IA** mediante flujos de Genkit (Google AI) que interpretan las descripciones de los datasets y proponen estrategias de análisis.
30+
- **Gestión de perfil de usuario** con página de ajustes para actualizar información personal y preferencias de cuenta.
31+
- **Sistema de hooks de estado** para gestión reactiva del estado de los proyectos a lo largo de la sesión del usuario.
32+
- **CI/CD integrado** mediante GitHub Actions para automatizar el pipeline de validación y despliegue.
33+
- **Soporte nativo para RSC** (React Server Components) con tipado estricto a través de TypeScript en toda la codebase.
34+
35+
---
36+
37+
## 🛠️ Tech Stack
38+
39+
| Categoría | Tecnología |
40+
|---|---|
41+
| Framework web | Next.js 15+ (App Router) |
42+
| Lenguaje | TypeScript 5.x |
43+
| Biblioteca UI | React + ShadCN UI |
44+
| Estilos | Tailwind CSS 3.x |
45+
| Iconografía | Lucide React |
46+
| Backend & Auth | Firebase Authentication + Firestore |
47+
| Hosting | Firebase App Hosting + Vercel |
48+
| IA Generativa | Google Genkit (AI Flows) |
49+
| Linting | ESLint + Prettier |
50+
| CI/CD | GitHub Actions |
51+
| Dev Environment | Firebase Studio / Project IDX |
52+
| Package Manager | npm |
53+
| Node versioning | `.nvmrc` (Node 18+) |
54+
55+
---
56+
57+
## 📦 Installation
3258

3359
### Prerrequisitos
3460

35-
- Node.js (v18 o superior)
36-
- npm
61+
- **Node.js** v18 o superior (gestionado via `.nvmrc`)
62+
- **npm** v9+
63+
- Una cuenta en **Firebase** con un proyecto creado
64+
- Acceso a **Google AI / Genkit** (para los flujos de IA)
65+
66+
### 1. Clonar el repositorio
67+
```bash
68+
git clone https://github.com/devsebastian44/CollabData.git
69+
cd CollabData
70+
```
71+
72+
### 2. Usar la versión correcta de Node
73+
```bash
74+
nvm use
75+
```
76+
77+
### 3. Instalar dependencias
78+
```bash
79+
npm install
80+
```
81+
82+
### 4. Configurar variables de entorno
83+
84+
Crea un archivo `.env.local` en la raíz del proyecto con tus credenciales de Firebase y Genkit:
85+
```env
86+
# Firebase
87+
NEXT_PUBLIC_FIREBASE_API_KEY=
88+
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
89+
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
90+
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
91+
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
92+
NEXT_PUBLIC_FIREBASE_APP_ID=
93+
94+
# Google AI / Genkit
95+
GOOGLE_GENAI_API_KEY=
96+
```
3797

38-
### Instalación y Ejecución
98+
### 5. Configurar Firebase
3999

40-
1. Instala las dependencias del proyecto:
41-
```sh
42-
npm install
43-
```
44-
2. Inicia el servidor de desarrollo:
45-
```sh
46-
npm run dev
47-
```
48-
3. Abre [http://localhost:9002](http://localhost:9002) en tu navegador para ver la aplicación.
100+
Asegúrate de que tu proyecto Firebase esté correctamente referenciado en `.firebaserc`:
101+
```json
102+
{
103+
"projects": {
104+
"default": "tu-proyecto-firebase-id"
105+
}
106+
}
107+
```
108+
109+
---
110+
111+
## ▶️ Usage
112+
113+
### Servidor de desarrollo
114+
```bash
115+
npm run dev
116+
```
117+
118+
Abre [http://localhost:9002](http://localhost:9002) en tu navegador.
119+
120+
> El servidor Next.js corre en el puerto **9002** por configuración del proyecto.
121+
122+
### Build de producción
123+
```bash
124+
npm run build
125+
npm run start
126+
```
127+
128+
### Lint del código
129+
```bash
130+
npm run lint
131+
```
132+
133+
### Despliegue en Firebase App Hosting
134+
135+
El despliegue se gestiona automáticamente a través de **GitHub Actions** al hacer push a la rama principal. De forma manual:
136+
```bash
137+
firebase deploy
138+
```
49139

50-
## 📁 Estructura del Proyecto
140+
> La configuración en `apphosting.yaml` establece `maxInstances: 1` por defecto. Ajústalo según el tráfico esperado.
51141
52-
Aquí tienes una descripción general de los archivos y directorios más importantes del proyecto:
142+
---
53143

144+
## 📁 Project Structure
54145
```
55-
/
146+
CollabData/
147+
148+
├── .github/
149+
│ └── workflows/ # Pipelines de CI/CD con GitHub Actions
150+
151+
├── .idx/ # Configuración de Firebase Studio / Project IDX
152+
153+
├── docs/ # Documentación técnica adicional del proyecto
154+
56155
├── src/
57-
│ ├── app/
58-
│ │ ├── layout.tsx # Layout raíz de la aplicación
59-
│ │ ├── page.tsx # Landing Page
60-
│ │ ├── login/page.tsx # Página de autenticación
61-
│ │ ├── dashboard/ # Rutas del panel de control
62-
│ │ │ ├── page.tsx # Vista principal del dashboard
63-
│ │ │ ├── layout.tsx # Layout para las páginas del dashboard
64-
│ │ │ ├── new-analysis/page.tsx # Página para crear un nuevo análisis
65-
│ │ │ └── ...
66-
│ │ └── projects/[id]/ # Rutas para proyectos individuales
67-
│ │ ├── page.tsx # Espacio de trabajo del proyecto
68-
│ │ └── results/page.tsx # Página de resultados del análisis
156+
│ ├── app/ # Next.js App Router — páginas y layouts
157+
│ │ ├── layout.tsx # Layout raíz global de la aplicación
158+
│ │ ├── page.tsx # Landing page pública
159+
│ │ ├── login/
160+
│ │ │ └── page.tsx # Página de autenticación (login / registro)
161+
│ │ ├── dashboard/
162+
│ │ │ ├── layout.tsx # Layout compartido del área privada
163+
│ │ │ ├── page.tsx # Vista principal del dashboard de proyectos
164+
│ │ │ └── new-analysis/
165+
│ │ │ └── page.tsx # Flujo de creación de nuevo análisis
166+
│ │ └── projects/
167+
│ │ └── [id]/
168+
│ │ ├── page.tsx # Espacio de trabajo interactivo del proyecto
169+
│ │ └── results/
170+
│ │ └── page.tsx # Panel de resultados y visualizaciones
69171
│ │
70172
│ ├── components/
71-
│ │ ├── layout/ # Componentes de layout (header, footer)
72-
│ │ ├── pages/ # Componentes específicos de cada página
73-
│ │ └── ui/ # Componentes UI reutilizables (ShadCN)
173+
│ │ ├── layout/ # Componentes estructurales (header, footer, nav)
174+
│ │ ├── pages/ # Componentes específicos de cada vista
175+
│ │ └── ui/ # Biblioteca de componentes ShadCN UI reutilizables
74176
│ │
75177
│ ├── firebase/
76-
│ │ ├── config.ts # Configuración de Firebase
77-
│ │ ├── index.ts # Inicialización y exportación de servicios Firebase
78-
│ │ ├── provider.tsx # Proveedor de contexto Firebase
79-
│ │ └── auth/use-user.tsx # Hook para obtener el usuario autenticado
178+
│ │ ├── config.ts # Inicialización y configuración del SDK de Firebase
179+
│ │ ├── index.ts # Exportación centralizada de servicios Firebase
180+
│ │ ├── provider.tsx # Context Provider de Firebase para toda la app
181+
│ │ └── auth/
182+
│ │ └── use-user.tsx # Hook personalizado para obtener el usuario autenticado
80183
│ │
81184
│ ├── ai/
82-
│ │ ├── genkit.ts # Inicialización de Genkit
83-
│ │ └── flows/ # Flujos de IA con Genkit
185+
│ │ ├── genkit.ts # Inicialización de la instancia de Genkit
186+
│ │ └── flows/ # Definición de flujos de IA (análisis de datasets)
84187
│ │
85188
│ ├── hooks/
86-
│ │ └── use-project-store.ts # Hook para la gestión del estado del proyecto
189+
│ │ └── use-project-store.ts # Hook de gestión de estado global de proyectos
87190
│ │
88191
│ └── lib/
89-
│ ├── utils.ts # Funciones de utilidad
90-
│ ├── mock-data.ts # Datos de ejemplo para la aplicación
91-
│ └── types.ts # Definiciones de tipos TypeScript
192+
│ ├── utils.ts # Funciones de utilidad generales (cn, formatters, etc.)
193+
│ ├── mock-data.ts # Datos de ejemplo para desarrollo y prototipado
194+
│ └── types.ts # Definiciones de tipos e interfaces TypeScript globales
92195
93-
├── public/ # Archivos estáticos
94-
├── package.json # Dependencias y scripts del proyecto
95-
└── tailwind.config.ts # Configuración de Tailwind CSS
196+
├── public/ # Archivos estáticos (imágenes, iconos, fonts)
197+
198+
├── .firebaserc # Referencia al proyecto Firebase activo
199+
├── .gitignore # Exclusiones de Git (node_modules, .env.local, etc.)
200+
├── .nvmrc # Versión de Node.js fijada para el proyecto
201+
├── apphosting.yaml # Configuración de Firebase App Hosting
202+
├── components.json # Configuración de ShadCN UI (estilo, aliases, iconos)
203+
├── eslint.config.js # Configuración de ESLint
204+
├── next.config.ts # Configuración de Next.js (remote images, etc.)
205+
├── package.json # Dependencias y scripts del proyecto
206+
├── postcss.config.mjs # Configuración de PostCSS (requerido por Tailwind)
207+
├── prettier.config.js # Reglas de formateo de código
208+
├── tailwind.config.ts # Configuración de Tailwind CSS
209+
└── tsconfig.json # Configuración del compilador TypeScript
96210
```
211+
212+
---
213+
214+
## 🔐 Security
215+
216+
### Autenticación y autorización
217+
218+
La autenticación está completamente delegada a **Firebase Authentication**, lo que garantiza el manejo seguro de credenciales, tokens JWT y sesiones. Las rutas del dashboard son accesibles únicamente por usuarios autenticados, verificados mediante el hook `use-user.tsx` en el lado del cliente.
219+
220+
### Variables de entorno
221+
222+
Todas las claves de API y configuraciones sensibles se gestionan a través de variables de entorno definidas en `.env.local`, el cual está incluido en `.gitignore` y nunca se expone en el repositorio. Las variables prefijadas con `NEXT_PUBLIC_` se exponen al cliente de forma controlada; las variables del lado servidor (como `GOOGLE_GENAI_API_KEY`) permanecen exclusivamente en el entorno de ejecución de Next.js.
223+
224+
### Imágenes externas controladas
225+
226+
El archivo `next.config.ts` define una lista blanca explícita de dominios permitidos para carga de imágenes remotas (`placehold.co`, `images.unsplash.com`, `picsum.photos`), previniendo el abuso del componente `<Image>` de Next.js para cargar contenido de dominios no autorizados.
227+
228+
### Firestore Security Rules
229+
230+
Se recomienda definir **Firestore Security Rules** granulares en la consola de Firebase para garantizar que cada usuario solo pueda leer y escribir sus propios documentos de proyecto, evitando acceso cruzado entre cuentas.
231+
232+
---
233+
234+
## 🚀 Roadmap
235+
236+
Mejoras técnicas sugeridas a partir del análisis de la arquitectura actual del código:
237+
238+
- **Reemplazar `mock-data.ts` por Firestore real en todas las vistas:** La presencia de `mock-data.ts` sugiere que algunas rutas podrían estar funcionando aún con datos estáticos; migrar completamente a Firestore para producción es una mejora prioritaria.
239+
- **Implementar Firestore Security Rules** con validación por UID de usuario para proteger el acceso a documentos de proyectos y datasets.
240+
- **Añadir carga real de archivos a Firebase Storage:** Incorporar el SDK de Storage para persistir los datasets subidos por los usuarios más allá de la sesión.
241+
- **Ampliar los flujos de Genkit** con soporte para múltiples modelos (Gemini Pro, Gemini Flash) y prompts configurables por tipo de dataset.
242+
- **Tests de integración con Playwright o Cypress:** Automatizar pruebas E2E para los flujos críticos (login, creación de análisis, visualización de resultados).
243+
- **Escalar `maxInstances` en `apphosting.yaml`** para soportar tráfico concurrente real en producción.
244+
- **Modo colaborativo en tiempo real** mediante Firestore `onSnapshot` para que múltiples usuarios vean actualizaciones en tiempo real dentro del mismo proyecto.
245+
- **Exportación de resultados** en formatos PDF, CSV o JSON desde el panel de visualización.
246+
- **Internacionalización (i18n)** con `next-intl` dado el origen multicultural del proyecto.
247+
248+
---
249+
250+
## 📄 License
251+
252+
Este proyecto está distribuido bajo la licencia **MIT**.
253+
254+
Esto significa que puedes usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del software de forma libre, siempre que se incluya el aviso de copyright original.
255+
256+
Copyright © 2025 **Sebastián Zhunaula** (devsebastian44)
257+
258+
---
259+
260+
## 👨‍💻 Author
261+
262+
<table>
263+
<tr>
264+
<td align="center">
265+
<b>Sebastián Zhunaula</b><br/>
266+
<sub>Full-Stack Developer · Frontend Specialist · Data & AI Enthusiast</sub><br/><br/>
267+
<a href="https://github.com/devsebastian44">
268+
<img src="https://img.shields.io/badge/GitHub-devsebastian44-black?style=flat&logo=github" />
269+
</a>
270+
<br/><br/>
271+
<a href="https://collabdata.vercel.app">
272+
<img src="https://img.shields.io/badge/Live%20Demo-CollabData-blue?style=flat&logo=vercel" />
273+
</a>
274+
</td>
275+
</tr>
276+
</table>
277+
278+
> Este proyecto forma parte de un portafolio de desarrollo web full-stack, demostrando integración moderna de Next.js 15, Firebase, ShadCN UI y Google Genkit en una plataforma de análisis de datos colaborativa lista para producción.

0 commit comments

Comments
 (0)