Logo Lanfrica

Kibet-Rotich/language-doc-app

Domain:

natural language processing

Record type:

software
Creator:
Kib
Host:
A lightweight FastAPI + HTML/JS app for recording, uploading, and viewing audio with transcripts β€” built to support indigenous language documentation starting with the Ogiek community. # πŸŽ™οΈ Ogiek Language Recorder A lightweight web app for recording, uploading, and viewing audio clips with transcripts β€” built to support language documentation efforts starting with the Ogiek community. ## βœ… Features - 🎀 Record audio directly from the browser - πŸ“ Add an optional transcript - πŸ’Ύ Store audio files locally during development - πŸ“œ View recordings with timestamps + transcript - πŸ” FastAPI backend + vanilla HTML/CSS/JS frontend - πŸ—ƒοΈ SQLite for easy local setup - 🧭 Navigation between pages ## πŸ—οΈ Tech Stack ### Backend - FastAPI - SQLite (development) - SQLAlchemy - Uvicorn ### Frontend - HTML - CSS - JavaScript (no frameworks) ## πŸš€ Project Structure ``` project-root/ β”œβ”€β”€ backend/ β”‚ β”œβ”€β”€ main.py # FastAPI app β”‚ β”œβ”€β”€ models.py # SQLAlchemy models β”‚ β”œβ”€β”€ database.py # DB config β”‚ β”œβ”€β”€ schemas.py # (Optional) Pydantic schemas β”‚ └── uploads/ β”‚ └── audio/ # Stored audio files β”‚ β”œβ”€β”€ frontend/ β”‚ β”œβ”€β”€ index.html # Recording page β”‚ β”œβ”€β”€ view.html # Recordings list β”‚ β”œβ”€β”€ styles.css # Shared styling β”‚ β”œβ”€β”€ script.js # Recording + upload logic β”‚ └── view.js # List + playback logic β”‚ └── README.md ``` ## βš™οΈ Setup & Run (Dev Mode) ### 1️⃣ Create & activate a virtual environment ```bash python -m venv venv source venv/bin/activate # macOS/Linux venv\Scripts\activate # Windows ``` ### 2️⃣ Install dependencies ```bash pip install fastapi uvicorn sqlalchemy ``` ### 3️⃣ Run the backend From the project root: ```bash uvicorn backend.main:app --reload ``` Backend will start at: `localhost` ### 4️⃣ Open the frontend You can: - Just open `frontend/index.html` and `frontend/view.html` in the browser, or - Serve with a simple HTTP server if needed ## πŸ“Œ API Endpoints | Method | Endpoint | Description | |--------|----------|-------------| | POST | `/api/upload-audio` | Upload audio + transcript | | GET | `/api/list-recordings` | List all saved entr …