88e828722498cc7ea76e8cf576acb85f1e0820ce
TTS Dialect Annotation Platform
A Next.js web application for annotating and managing dialect audio datasets.
Prerequisites
- Node.js 18+
- npm or yarn
- SQLite (included with better-sqlite3)
Quick Start
1. Install Dependencies
npm install
2. Set Up Environment Variables
Create a .env file in the project root with necessary configuration (database URL, auth secrets, etc.).
3. Initialize Database
npm run db:generate # Generate migration files
npm run db:push # Apply migrations to database
4. Run Development Server
npm run dev
Open http://localhost:3000 in your browser.
Project Structure
src/app/- Next.js pages and API routesadmin/- Admin dashboard pagesuser/- User authentication pagesactions/- Server actions for data operations
src/components/- Reusable React componentssrc/lib/- Utilities, database, and auth configurationdrizzle/- Database migrationspublic/datasets/- Dataset storage
Available Scripts
| Command | Description |
|---|---|
npm run dev |
Start development server (localhost:3000) |
npm run build |
Build for production |
npm run start |
Start production server |
npm run db:generate |
Generate database migrations |
npm run db:push |
Push migrations to database |
Tech Stack
- Framework: Next.js 16
- Auth: Better-Auth
- Database: Drizzle ORM + SQLite
- Styling: Tailwind CSS
- Language: TypeScript
Modifying the Data Model
Steps to Update the Database Schema
-
Edit the Schema
- Open
src/lib/model/and modify the relevant schema files - Export any new tables in
src/lib/model/index.ts
- Open
-
Generate Migration
npm run db:generateThis creates SQL migration files in the
drizzle/directory. -
Review the Migration
- Check the generated SQL file in
drizzle/to ensure correctness - Make manual adjustments if needed
- Check the generated SQL file in
-
Update Server Actions (if needed)
- Update or create server actions in
src/app/actions/to handle the new fields/tables
- Update or create server actions in
Example: Adding a New Field
- Open
src/lib/model/dataset_entry.ts - Add the new column to the schema
- Run
npm run db:generate - Review and run
npm run db:push - Update relevant server actions and components
Admin Signup System
The platform automatically generates a one-time admin token on startup if no admin exists in the database. This token is logged to the console and can only be used once.
Upgrading to Admin Account
- Sign in with your regular account
- Try to access
/admin - You'll see a form asking for the admin token
- Paste the token from the console output
- Click "Admin aktivieren" to upgrade your account
After successful upgrade:
- The token becomes invalid
- Your account gains full admin privileges
- No new token is generated (admin now exists)
- Trying to upgrade another account will fail (token is spent)
Development Notes
- Database schema is defined in
src/lib/model/ - Authentication config is in
src/lib/auth.ts - Server actions for database operations are in
src/app/actions/
Description
Languages
TypeScript
99.2%
Dockerfile
0.8%