Task 1: Set up project structure and dependencies

- Created backend directory with FastAPI project structure
- Created frontend directory with React + TypeScript + Vite
- Configured Python virtual environment and installed dependencies (fastapi, uvicorn, kokoro, soundfile, python-multipart)
- Verified espeak-ng system dependency is installed
- Configured Node.js project with TypeScript, React, and Vite
- Set up Tailwind CSS for styling
- Set up environment variable configuration for both projects
- Created comprehensive README documentation

Requirements: 9.6, 10.2, 11.1
This commit is contained in:
2025-12-09 00:47:44 +00:00
parent 81b8f004d2
commit f4bc759007
32 changed files with 5694 additions and 44 deletions

2
backend/.env.example Normal file
View File

@@ -0,0 +1,2 @@
PORT=8000
LOG_LEVEL=info

15
backend/.gitignore vendored Normal file
View File

@@ -0,0 +1,15 @@
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
env/
ENV/
.env
*.egg-info/
dist/
build/
.pytest_cache/
.coverage
htmlcov/

65
backend/README.md Normal file
View File

@@ -0,0 +1,65 @@
# Text to Audiobook Backend
FastAPI backend service for converting text to multi-voice audiobooks using Kokoro TTS.
## Setup
### Prerequisites
- Python 3.10 or higher
- espeak-ng (system dependency)
### Install espeak-ng
**macOS:**
```bash
brew install espeak-ng
```
**Linux (Ubuntu/Debian):**
```bash
sudo apt-get update
sudo apt-get install espeak-ng
```
### Python Environment Setup
1. Create a virtual environment:
```bash
python -m venv venv
```
2. Activate the virtual environment:
```bash
# macOS/Linux
source venv/bin/activate
# Windows
venv\Scripts\activate
```
3. Install dependencies:
```bash
pip install -r requirements.txt
```
4. Create environment file:
```bash
cp .env.example .env
```
## Running the Server
```bash
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
The API will be available at `http://localhost:8000`
API documentation: `http://localhost:8000/docs`
## API Endpoints
- `GET /api/health` - Health check endpoint
- `POST /api/tts/roles` - Detect roles in text
- `POST /api/tts` - Generate audiobook

22
backend/main.py Normal file
View File

@@ -0,0 +1,22 @@
"""
FastAPI backend for Text to Audiobook application.
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI(title="Text to Audiobook API")
# Configure CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:5173", "http://localhost:3000"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/api/health")
async def health_check():
"""Health check endpoint."""
return {"status": "ok"}

7
backend/requirements.txt Normal file
View File

@@ -0,0 +1,7 @@
fastapi==0.109.0
uvicorn[standard]==0.27.0
kokoro==0.9.4
soundfile==0.12.1
python-multipart==0.0.6
pydantic==2.5.3
numpy==1.26.3

View File

@@ -0,0 +1 @@
"""Services package for backend."""