Una aplicación web para escuchar cuentos infantiles, hecha con amor para que Helena los disfrute por las noches.
Reproductor de cuentos infantiles en formato FLAC con:
- Reproducción continua con paso automático al siguiente cuento
- Portadas extraídas de los metadatos del archivo de audio
- Sistema de calificación con estrellas por cuento
- Media Session API — controles de reproducción funcionan con la pantalla apagada (ideal para cuando ya está durmiendo)
- Panel de administración para gestionar la biblioteca
- Streaming de audio con soporte de HTTP range requests
| Capa | Tecnología |
|---|---|
| Frontend | Angular 20 + Tailwind CSS v4 |
| Backend | Express.js + Node.js |
| Base de datos | PostgreSQL |
| Audio | Archivos FLAC con metadatos embebidos |
| Deploy | Docker + Docker Compose |
cuentos-infantiles/
├── api/ # Backend Express.js
│ └── src/
│ ├── routes/ # Endpoints REST
│ └── utils/ # Lectura de metadatos de audio
├── frontend/ # Angular 20
│ └── src/app/
│ ├── components/ # player, stars, story-card
│ ├── pages/ # home, admin
│ └── services/ # cuentos.service.ts
├── cuentos/ # Archivos FLAC (no incluidos en el repo)
└── docker-compose.yml
- Docker y Docker Compose, o
- Node.js 18+ y PostgreSQL (para desarrollo local)
-
Clonar el repositorio:
git clone https://github.com/nesticle8bit/cuentos-infantiles.git cd cuentos-infantiles -
Crear la carpeta
cuentos/y copiar los archivos FLAC ahí. -
Copiar el archivo de entorno del backend:
cp api/.env.example api/.env # Editar api/.env con los datos de tu base de datos -
Levantar todo con Docker Compose:
docker compose up -d
-
Abrir http://localhost en el navegador.
-
Ir al panel de administración en http://localhost/admin y hacer clic en "Escanear carpeta" para importar los cuentos.
cd api
npm install
cp .env.example .env
# Editar .env con tus credenciales de PostgreSQL
npm run devEl backend queda en http://localhost:4000
cd frontend
npm install
npm startEl frontend queda en http://localhost:4200
Crear api/.env basándose en este ejemplo:
DATABASE_URL=postgresql://usuario:contraseña@localhost:5432/cuentos_infantiles_db
PORT=4000
CUENTOS_DIR=../cuentos
COVERS_DIR=./covers| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/cuentos |
Listar todos los cuentos |
| GET | /api/cuentos/:id/audio |
Stream del archivo de audio |
| GET | /api/cuentos/:id/cover |
Portada del cuento |
| POST | /api/cuentos/scan |
Escanear carpeta e importar |
| PUT | /api/cuentos/:id |
Actualizar datos (ej: rating) |
| GET | /health |
Estado del servidor |
Hecho con cariño para Helena.