|
1 | | -# FrictionLog ⚡ |
2 | | - |
3 | | -**Convierte la frustración en tu próximo proyecto.** |
4 | | -FrictionLog es una API ligera que captura "puntos de dolor" (fricciones) diarios, los analiza con IA y los prioriza para que construyas soluciones que la gente realmente necesita. |
5 | | - |
6 | | ---- |
7 | | - |
8 | | -### "Odio hacer esto manualmente..." |
9 | | - |
10 | | -¿Cuántas veces has pensado eso y luego lo has olvidado? |
11 | | -Como desarrolladores o Indie Hackers, a menudo buscamos ideas "revolucionarias" mientras ignoramos los problemas reales que tenemos delante. **FrictionLog** actúa como un buzón de quejas inteligente: |
12 | | - |
13 | | -1. **Captura** la molestia en el momento (vía CLI o API). |
14 | | -2. **Centraliza** tus frustraciones. |
15 | | -3. **Genera** especificaciones técnicas automáticas (MVP) usando LLMs. |
16 | | - |
17 | | ---- |
18 | | - |
19 | | -### 🚀 Quickstart |
20 | | - |
21 | | -#### Opción A: Docker + PocketBase (Recomendado) |
22 | | - |
23 | | -1. **Configura tu Base de Datos** |
24 | | - Descarga y ejecuta [PocketBase](https://pocketbase.io/). Importa el archivo `pocketbase_schema.json` desde su panel de administrador (`http://127.0.0.1:8090/_/`). |
25 | | - |
26 | | -2. **Clona y levanta** |
27 | | - |
28 | | - ```bash |
29 | | - git clone https://github.com/Medalcode/FrictionLog.git && cd FrictionLog |
30 | | - export GOOGLE_API_KEY="tu_clave_aqui" # Necesario para Gemini |
31 | | - docker-compose up --build -d |
32 | | - ``` |
33 | | - |
34 | | -3. **Servicios** |
35 | | - - **Dashboard:** [http://localhost:8501](http://localhost:8501) |
36 | | - - **API:** [http://localhost:8000/docs](http://localhost:8000/docs) |
37 | | - |
38 | | -#### Opción B: Local (Python) |
39 | | - |
40 | | -1. **Instala y ejecuta** |
41 | | - |
42 | | - ```bash |
43 | | - # Clona |
44 | | - git clone https://github.com/Medalcode/FrictionLog.git && cd FrictionLog |
45 | | - |
46 | | - # Setup entorno y dependencias |
47 | | - python3 -m venv venv |
48 | | - source venv/bin/activate |
49 | | - pip install -r requirements.txt |
50 | | - |
51 | | - # Configurar Entorno e IPs |
52 | | - export GOOGLE_API_KEY="tu_clave_aqui" # En Windows usa: $env:GOOGLE_API_KEY="tu_clave" |
53 | | - export POCKETBASE_URL="http://127.0.0.1:8090" |
54 | | - |
55 | | - # Ejecuta API y Dashboard (en terminales separadas) |
56 | | - uvicorn api:app --reload |
57 | | - streamlit run ui.py |
58 | | - ``` |
59 | | - |
60 | | -2. **Registra una fricción (tu primer pain-point)** |
61 | | - |
62 | | - ```bash |
63 | | - curl -X POST http://127.0.0.1:8000/registrar-friccion \ |
64 | | - -H "Content-Type: application/json" \ |
65 | | - -d '{"description": "Odio copiar datos de facturas PDF a Excel manualmente", "severity": 4}' |
66 | | - ``` |
67 | | - |
68 | | -3. **Visualiza y Prioriza** |
69 | | - Abre el dashboard en `http://localhost:8501` para ver qué deberías construir primero. |
70 | | - |
71 | | -### ☁️ Despliegue en Vercel (Serverless) |
72 | | - |
73 | | -FrictionLog está completamente optimizado para entornos Serverless y Zero-Config en Vercel (gracias a su entrypoint nativo `main.py`). |
74 | | - |
75 | | -1. Sube tu código a GitHub. |
76 | | -2. Crea un nuevo proyecto en Vercel e importa el repositorio. |
77 | | -3. En **Environment Variables**, añade: |
78 | | - * `GOOGLE_API_KEY`: Tu clave de Google AI Studio. |
79 | | - * `POCKETBASE_URL`: La URL pública donde tengas alojado tu PocketBase. |
80 | | - |
81 | | ---- |
82 | | - |
83 | | -### 💡 Casos de Uso |
84 | | - |
85 | | -- **Para Indie Hackers:** Valida ideas basándote en quejas recurrentes, no en suposiciones. |
86 | | -- **Para equipos de Plataforma/DevOps:** Detecta qué herramientas internas están frenando al equipo. |
87 | | -- **Para DevRel:** Recolecta feedback crudo y prioriza fixes en tu librería. |
88 | | - |
89 | | ---- |
90 | | - |
91 | | -### 🛠 Estructura Lean & Stack |
92 | | - |
93 | | -Arquitectura desacoplada para máxima hackeabilidad. |
94 | | - |
95 | | -- **`api.py`**: Interfaz RESTful ligera asíncrona con FastAPI. |
96 | | -- **`core.py`**: Motor de lógica y orquestador hacia la BD. |
97 | | -- **`llm_client.py`**: Cliente estricto Pydantic + Google Gemini (1.5 Flash). |
98 | | -- **`ui.py`**: Dashboard visual con Streamlit (Maneja Live Analytics y persistencia base). |
99 | | -- **`docs/`**: Documentación técnica y bitácora. |
100 | | -- **DB:** PocketBase (Reemplaza a SQLite para soportar persistencia distribuida y Serverless en Vercel/Cloud Run). |
101 | | -- **IA:** Google AI Studio (Gemini) vía SDK oficial. |
102 | | - |
103 | | ---- |
104 | | - |
105 | | -### 🤝 Desarrollo |
106 | | - |
107 | | -Consulta nuestras guías internas para contribuir (ahora en `/docs`): |
108 | | -- [Roles de Agentes](./docs/agents.md): Estructura del equipo simulado. |
109 | | -- [Skills y Estándares](./docs/skills.md): Guías técnicas y mejores prácticas. |
110 | | -- [Bitácora](./docs/BITACORA.md): Registro de decisiones arquitectónicas. |
111 | | - |
112 | | ---- |
113 | | - |
114 | | -### 🔮 Roadmap |
115 | | - |
116 | | -- [x] **Persistencia IA:** Guardar los análisis generados automáticamente en base de datos. |
117 | | -- [ ] **CLI Wrapper:** `fl log "esto apesta"` para registro instantáneo. |
118 | | -- [ ] **Smart Grouping:** Detectar fricciones duplicadas semánticamente. |
119 | | - |
120 | | ---- |
121 | | - |
122 | | -_Hecho con ❤️ para constructores._ |
| 1 | +# FrictionLog ⚡ |
| 2 | + |
| 3 | +**Convierte la frustración en tu próximo proyecto.** |
| 4 | +FrictionLog es una API ligera que captura "puntos de dolor" (fricciones) diarios, los analiza con IA y los prioriza para que construyas soluciones que la gente realmente necesita. |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +### "Odio hacer esto manualmente..." |
| 9 | + |
| 10 | +¿Cuántas veces has pensado eso y luego lo has olvidado? |
| 11 | +Como desarrolladores o Indie Hackers, a menudo buscamos ideas "revolucionarias" mientras ignoramos los problemas reales que tenemos delante. **FrictionLog** actúa como un buzón de quejas inteligente: |
| 12 | + |
| 13 | +1. **Captura** la molestia en el momento (vía CLI o API). |
| 14 | +2. **Centraliza** tus frustraciones. |
| 15 | +3. **Genera** especificaciones técnicas automáticas (MVP) usando LLMs. |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +### 🚀 Quickstart |
| 20 | + |
| 21 | +#### Opción A: Docker + PocketBase (Recomendado) |
| 22 | + |
| 23 | +1. **Configura tu Base de Datos** |
| 24 | + Descarga y ejecuta [PocketBase](https://pocketbase.io/). Importa el archivo `pocketbase_schema.json` desde su panel de administrador (`http://127.0.0.1:8090/_/`). |
| 25 | + |
| 26 | +2. **Clona y levanta** |
| 27 | + |
| 28 | + ```bash |
| 29 | + git clone https://github.com/Medalcode/FrictionLog.git && cd FrictionLog |
| 30 | + export GOOGLE_API_KEY="tu_clave_aqui" # Necesario para Gemini |
| 31 | + docker-compose up --build -d |
| 32 | + ``` |
| 33 | + |
| 34 | +3. **Servicios** |
| 35 | + - **Dashboard:** [http://localhost:8501](http://localhost:8501) |
| 36 | + - **API:** [http://localhost:8000/docs](http://localhost:8000/docs) |
| 37 | + |
| 38 | +#### Opción B: Local (Python) |
| 39 | + |
| 40 | +1. **Instala y ejecuta** |
| 41 | + |
| 42 | + ```bash |
| 43 | + # Clona |
| 44 | + git clone https://github.com/Medalcode/FrictionLog.git && cd FrictionLog |
| 45 | + |
| 46 | + # Setup entorno y dependencias |
| 47 | + python3 -m venv venv |
| 48 | + source venv/bin/activate |
| 49 | + pip install -r requirements.txt |
| 50 | + |
| 51 | + # Configurar Entorno e IPs |
| 52 | + export GOOGLE_API_KEY="tu_clave_aqui" # En Windows usa: $env:GOOGLE_API_KEY="tu_clave" |
| 53 | + export POCKETBASE_URL="http://127.0.0.1:8090" |
| 54 | + |
| 55 | + # Ejecuta API y Dashboard (en terminales separadas) |
| 56 | + uvicorn api:app --reload |
| 57 | + streamlit run ui.py |
| 58 | + ``` |
| 59 | + |
| 60 | +2. **Registra una fricción (tu primer pain-point)** |
| 61 | + |
| 62 | + ```bash |
| 63 | + curl -X POST http://127.0.0.1:8000/registrar-friccion \ |
| 64 | + -H "Content-Type: application/json" \ |
| 65 | + -d '{"description": "Odio copiar datos de facturas PDF a Excel manualmente", "severity": 4}' |
| 66 | + ``` |
| 67 | + |
| 68 | +3. **Visualiza y Prioriza** |
| 69 | + Abre el dashboard en `http://localhost:8501` para ver qué deberías construir primero. |
| 70 | + |
| 71 | +### ☁️ Despliegue en Vercel (Serverless) |
| 72 | + |
| 73 | +FrictionLog está completamente optimizado para entornos Serverless y Zero-Config en Vercel (gracias a su entrypoint nativo `main.py`). |
| 74 | + |
| 75 | +1. Sube tu código a GitHub. |
| 76 | +2. Crea un nuevo proyecto en Vercel e importa el repositorio. |
| 77 | +3. En **Environment Variables**, añade: |
| 78 | + * `GOOGLE_API_KEY`: Tu clave de Google AI Studio. |
| 79 | + * `POCKETBASE_URL`: La URL pública donde tengas alojado tu PocketBase. |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +### 💡 Casos de Uso |
| 84 | + |
| 85 | +- **Para Indie Hackers:** Valida ideas basándote en quejas recurrentes, no en suposiciones. |
| 86 | +- **Para equipos de Plataforma/DevOps:** Detecta qué herramientas internas están frenando al equipo. |
| 87 | +- **Para DevRel:** Recolecta feedback crudo y prioriza fixes en tu librería. |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +### 🛠 Estructura Lean & Stack |
| 92 | + |
| 93 | +Arquitectura desacoplada para máxima hackeabilidad. |
| 94 | + |
| 95 | +- **`api.py`**: Interfaz RESTful ligera asíncrona con FastAPI. |
| 96 | +- **`core.py`**: Motor de lógica y orquestador hacia la BD. |
| 97 | +- **`llm_client.py`**: Cliente estricto Pydantic + Google Gemini (1.5 Flash). |
| 98 | +- **`ui.py`**: Dashboard visual con Streamlit (Maneja Live Analytics y persistencia base). |
| 99 | +- **`docs/`**: Documentación técnica y bitácora. |
| 100 | +- **DB:** PocketBase (Reemplaza a SQLite para soportar persistencia distribuida y Serverless en Vercel/Cloud Run). |
| 101 | +- **IA:** Google AI Studio (Gemini) vía SDK oficial. |
| 102 | + |
| 103 | +--- |
| 104 | + |
| 105 | +### 🤝 Desarrollo |
| 106 | + |
| 107 | +Consulta nuestras guías internas para contribuir (ahora en `/docs`): |
| 108 | +- [Roles de Agentes](./docs/agents.md): Estructura del equipo simulado. |
| 109 | +- [Skills y Estándares](./docs/skills.md): Guías técnicas y mejores prácticas. |
| 110 | +- [Bitácora](./docs/BITACORA.md): Registro de decisiones arquitectónicas. |
| 111 | + |
| 112 | +#### 🧪 Pruebas Unitarias y de Integración (Docker) |
| 113 | +Puedes ejecutar toda la suite de pruebas unitarias localmente de forma aislada a través de Docker Compose: |
| 114 | + |
| 115 | +```bash |
| 116 | +# Método A: Usando el script helper (dale permisos de ejecución primero) |
| 117 | +chmod +x run_tests_docker.sh |
| 118 | +./run_tests_docker.sh |
| 119 | + |
| 120 | +# Método B: Comando directo |
| 121 | +docker-compose run --rm test |
| 122 | +``` |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +### 🔮 Roadmap |
| 127 | + |
| 128 | +- [x] **Persistencia IA:** Guardar los análisis generados automáticamente en base de datos. |
| 129 | +- [ ] **CLI Wrapper:** `fl log "esto apesta"` para registro instantáneo. |
| 130 | +- [ ] **Smart Grouping:** Detectar fricciones duplicadas semánticamente. |
| 131 | + |
| 132 | +--- |
| 133 | + |
| 134 | +_Hecho con ❤️ para constructores._ |
0 commit comments