Palekouran is a modern language learning tool that combines traditional flashcards with interactive audio features. Record your pronunciation, get AI-powered translations, and track your progress, all in one place.
- Audio Recording - Record and save pronunciations for each flashcard
- Multi-Language Support - Practice vocabulary across multiple language pairs
- Custom Decks - Organize vocabulary by topic or category
- Interactive Study Mode - Flip cards to test your knowledge
- Progress Tracking - Monitor your learning journey over time
Live Demo: palekouran.mauworks.com
Test Account:
- Email:
[email protected] - Password:
password
- React - UI library
- React Router - Client-side routing
- Vite - Build tool and dev server
- TypeScript - Type safety
- Styled Components - CSS-in-JS styling
- Font Awesome - all icons
- Node.js - Runtime environment
- Hono - Lightweight, TypeScript-first web framework
- Supabase - Postgres database, authentication, and storage
- Drizzle ORM - Type-safe database queries
- Railway - Hosting platform
- ElevenLabs - AI Text to Speech
- Node v24.11.0
- pnpm v11.6.0
- Create an account on Supabase
- Navigate to your dashboard and create a new project called
palekouran - For more details, see the Supabase quickstart guide
Database Migrations:
If you need to apply changes to the database, generate and run migrations using Drizzle:
# Generate a migration
npx drizzle-kit generate --name=add_some_column_to_some_table
# Apply migrations
npx drizzle-kit migrateCopy the example environment files in both frontend and backend directories:
cp .env.example .envThen add your values to each .env file.
Frontend Variables:
| Variable | Description |
|---|---|
| VITE_API_URL | Backend API URL (default: http://localhost:3000) |
Backend Variables:
| Variable | Description |
|---|---|
| PORT | Port number (default: 3000) |
| DATABASE_URL | PostgreSQL connection string (format: postgresql://postgres:[password]@db.[project].supabase.co:5432/) |
| SUPABASE_URL | Your Supabase project URL |
| SUPABASE_PUBLISHABLE_KEY | Supabase public API key (find here) |
| SUPABASE_SECRET_KEY | Supabase secret API key (find here) |
| FRONTEND_URL | Frontend URL (default: http://localhost:5173) |
| ELEVENLABS_API_KEY | ElevenLabs API keys (find here) |
nvm use
pnpm installStart both the frontend and backend development servers:
Frontend:
cd frontend
pnpm devBackend:
cd backend
pnpm devThe application will be available at http://localhost:5173
The application is deployed on Railway.
Live Demo: palekouran.mauworks.com
Test Account:
- Email:
[email protected] - Password:
password
This project is licensed under the PolyForm Noncommercial License - see the LICENSE file for details.
Drizzle + Supabase:
- Drizzle with Supabase Tutorial
- Supabase Database Guide
- Row Level Security (RLS)
- Indexes and Constraints
- Database Transactions
Supabase Storage:
React:
By default, Supabase enables telemetry data sharing. From Supabase:
By opting in to sharing telemetry data, Supabase can analyze usage patterns to enhance user experience and use it for marketing and advertising purposes.
You can disable this in your account settings under Analytics and Marketing.
Created by @mau11
