A full-stack application for generating stories, built with NestJS (backend), Flask (Gen API) and ReactJS/Vite (frontend). Everything runs locally (except for TTS as the current state of local TTS is not as good/fast as the free EdgeTTS service). Used for https://www.youtube.com/channel/UCefA_F2t7JzwP7XXB_UxDGg.
graph TD
A[Frontend - Vite/React] -->|HTTP/API| B[Backend - NestJS] --> |HTTP/API| C[Gen API - Flask]
B -->|Database| C[(PostgreSQL)]
C -->|External API| D[Edge API]
B -->|External API| E[Youtube API]
.
├── backend/ # NestJS backend application
├── frontend/ # Vite frontend application
├── gen_api/ # API generation utilities
└── docker-compose.yml
- Node.js 22
- Docker and Docker Compose
- PostgreSQL 13 (if running locally)
- Conda
- Clone the repository
- Start the containers:
This will start:
docker-compose up -d
- Backend service on port 3001
- Frontend service on port 5173
- PostgreSQL database on port 5431
-
Install dependencies:
npm install
-
Start the development servers:
# Start both frontend and backend npm run dev # Or start them separately npm run frontend npm run backend
npm run dev
: Start both frontend and backend in development modenpm run frontend
: Start only the frontend development servernpm run backend
: Start only the backend development servernpm run test
: Run testsnpm run lint
: Run lintingnpm run format
: Format code
The project uses Docker containers with the following configurations:
-
Backend (NestJS):
- Node.js 22
- Port: 3001
- Includes additional dependencies for Puppeteer and other utilities
-
Frontend (Vite):
- Node.js 22 (ARM64)
- Port: 5173
-
Database (PostgreSQL):
- Version: 13
- Port: 5431
- Default credentials:
- User: user
- Password: password
- Database: mydb