This commit is contained in:
urieljarethbusiness-cpu
2026-05-17 10:14:14 -06:00
parent d8773b2508
commit 64b3d15b90
61 changed files with 7612 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
# Knowledge Station
Plataforma para organizar conocimiento escolar por materia y semana, procesar documentos/audio/video y generar archivos Markdown optimizados para ingesta en LLM.
El archivo `estacion documentos.html` queda como prototipo funcional de referencia. La plataforma principal usa `backend/` (FastAPI) y `frontend/` (Next.js).
## Capacidades Iniciales
- Materias y semanas persistidas en SQLite.
- Estructura de archivos por materia/semana en `data/subjects/`.
- Ingesta de `.txt`, `.md`, `.docx`, `.pdf`, audio y video.
- PDF con texto mediante PyMuPDF.
- OCR opcional de PDF con Mistral.
- Audio con Deepgram en español.
- Video con extracción temporal de audio vía `ffmpeg` y transcripción con Deepgram.
- Exportación semanal consolidada a Markdown.
- UI dedicada con materias, semanas, subida de archivos, polling de trabajos y editor Markdown con preview.
## Desarrollo Local
```bash
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
uvicorn backend.app.main:app --reload
```
En otra terminal:
```bash
cd frontend
npm install
set NEXT_PUBLIC_API_URL=http://127.0.0.1:8000
npm run dev -- -p 3000
```
La plataforma queda en `http://localhost:3000`, la API en `http://localhost:8000` y la documentación interactiva en `http://localhost:8000/docs`.
Para usuarios no tecnicos en Windows, usa `abrir_estacion.bat`; detecta puertos libres, prepara backend/frontend y abre el navegador. Usa `cerrar_estacion.bat` para detener todo.
## Docker / Coolify
```bash
docker compose up --build
```
Para Coolify, configura backend y frontend como servicios separados. Monta un volumen persistente para `/app/data` en el backend y define `NEXT_PUBLIC_API_URL` en el frontend apuntando a la URL publica del backend.
## Variables
- `APP_DATA_DIR`: carpeta de datos persistentes.
- `DATABASE_PATH`: ruta SQLite.
- `MISTRAL_API_KEY`: OCR para PDFs escaneados.
- `DEEPGRAM_API_KEY`: transcripción de audio/video.
No subas claves reales al repositorio.
## Flujo API Basico
Crear materia:
```bash
curl -X POST http://localhost:8000/subjects -H "Content-Type: application/json" -d '{"name":"Comportamiento Organizacional"}'
```
Crear semana:
```bash
curl -X POST http://localhost:8000/subjects/1/weeks -H "Content-Type: application/json" -d '{"number":1,"title":"Grupos y equipos"}'
```
Subir archivo:
```bash
curl -X POST -F "[email protected]" http://localhost:8000/subjects/1/weeks/1/files
```
Consultar trabajo:
```bash
curl http://localhost:8000/jobs/1
```
Exportar semana:
```bash
curl -L http://localhost:8000/subjects/1/weeks/1/export -o semana-01.md
```