GetLingo - the interactive language learning platform with lessons, quizzes and progress tracking.
GetLingo is built using TypeScript and follows all modern Web Development practices.
- 馃攼 Auth using Clerk
- 馃寪 Courses, Units, Lessons, Challenges
- 馃攰 Sound effects
- 鉂わ笍 Hearts system
- 馃専 Points / XP system
- 馃椇 Quests milestones
- 馃攧 Practice old lessons to regain hearts
- 馃泹 Shop system to exchange diamonds with hearts
- 馃弳 Leaderboard
- 馃彔 Landing page
- 馃搳 Admin dashboard React Admin
- 馃挸 Courses, Units, Lessons, Challenges CRUD operations
- 馃摫 Mobile responsiveness
- 馃捑 PostgresDB using NeonDB
- 馃導 ORM using DrizzleORM
Node version 18.x.x
git clone https://github.com/Ventorix/GetLingo.git
npm i
# clerk auth keys
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
CLERK_SECRET_KEY=sk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# clerk admin user id(s) separated by comma and space (, )
CLERK_ADMIN_IDS="user_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx, user_xxxxxxxxxxxxxxxxxxxxxx"
# db uri
DATABASE_URL=
Push database schema to server (I used Neon)
npm run db:push
npm run db:seed
npm run dev
Running commands with npm npm run [command]
command | description |
---|---|
dev |
Starts a development instance of the app |
db:push |
Push database schema to server |
db:seed |
Fill database with base working data |
db:studio |
Launch Drizzle Studio to view database |
Contributions are welcome! If you want to contribute to this project, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Commit your changes to the new branch.
- Open a pull request back to the main repository, including a description of your changes.