├── .eslintrc.json ├── .gitignore ├── README.md ├── actions ├── challenge-progress.ts ├── user-progress.ts └── user-subscription.ts ├── app ├── (main) │ ├── courses │ │ ├── card.tsx │ │ ├── list.tsx │ │ ├── loading.tsx │ │ └── page.tsx │ ├── layout.tsx │ ├── leaderboard │ │ ├── loading.tsx │ │ └── page.tsx │ ├── learn │ │ ├── header.tsx │ │ ├── lesson-button.tsx │ │ ├── loading.tsx │ │ ├── page.tsx │ │ ├── unit-banner.tsx │ │ └── unit.tsx │ ├── quests │ │ ├── loading.tsx │ │ └── page.tsx │ └── shop │ │ ├── items.tsx │ │ ├── loading.tsx │ │ └── page.tsx ├── (marketing) │ ├── footer.tsx │ ├── header.tsx │ ├── layout.tsx │ └── page.tsx ├── admin │ ├── app.tsx │ ├── challenge │ │ ├── create.tsx │ │ ├── edit.tsx │ │ └── list.tsx │ ├── challengeOption │ │ ├── create.tsx │ │ ├── edit.tsx │ │ └── list.tsx │ ├── course │ │ ├── create.tsx │ │ ├── edit.tsx │ │ └── list.tsx │ ├── lesson │ │ ├── create.tsx │ │ ├── edit.tsx │ │ └── list.tsx │ ├── page.tsx │ └── unit │ │ ├── create.tsx │ │ ├── edit.tsx │ │ └── list.tsx ├── api │ ├── challengeOptions │ │ ├── [challengeOptionId] │ │ │ └── route.ts │ │ └── route.ts │ ├── challenges │ │ ├── [challengeId] │ │ │ └── route.ts │ │ └── route.ts │ ├── courses │ │ ├── [courseId] │ │ │ └── route.ts │ │ └── route.ts │ ├── lessons │ │ ├── [lessonId] │ │ │ └── route.ts │ │ └── route.ts │ ├── units │ │ ├── [unitId] │ │ │ └── route.ts │ │ └── route.ts │ └── webhooks │ │ └── stripe │ │ └── route.ts ├── buttons │ └── page.tsx ├── favicon.ico ├── globals.css ├── layout.tsx └── lesson │ ├── [lessonId] │ └── page.tsx │ ├── card.tsx │ ├── challenge.tsx │ ├── footer.tsx │ ├── header.tsx │ ├── layout.tsx │ ├── page.tsx │ ├── question-bubble.tsx │ ├── quiz.tsx │ └── result-card.tsx ├── components.json ├── components ├── feed-wrapper.tsx ├── mobile-header.tsx ├── mobile-sidebar.tsx ├── modals │ ├── exit-modal.tsx │ ├── hearts-modal.tsx │ └── practice-modal.tsx ├── promo.tsx ├── quests.tsx ├── sidebar-item.tsx ├── sidebar.tsx ├── sticky-wrapper.tsx ├── ui │ ├── avatar.tsx │ ├── button.tsx │ ├── dialog.tsx │ ├── progress.tsx │ ├── separator.tsx │ ├── sheet.tsx │ └── sonner.tsx └── user-progress.tsx ├── constants.ts ├── db ├── drizzle.ts ├── queries.ts └── schema.ts ├── drizzle.config.ts ├── lib ├── admin.ts ├── stripe.ts └── utils.ts ├── middleware.ts ├── next.config.mjs ├── package.json ├── postcss.config.js ├── public ├── boy.svg ├── correct.wav ├── es.svg ├── es_boy.mp3 ├── es_girl.mp3 ├── es_man.mp3 ├── es_robot.mp3 ├── es_woman.mp3 ├── es_zombie.mp3 ├── finish.mp3 ├── finish.svg ├── fr.svg ├── girl.svg ├── heart.svg ├── hero.svg ├── hr.svg ├── incorrect.wav ├── it.svg ├── jp.svg ├── leaderboard.svg ├── learn.svg ├── man.svg ├── mascot.svg ├── mascot_bad.svg ├── mascot_sad.svg ├── next.svg ├── points.svg ├── quests.svg ├── robot.svg ├── shop.svg ├── unlimited.svg ├── vercel.svg ├── woman.svg └── zombie.svg ├── scripts ├── prod.ts ├── reset.ts └── seed.ts ├── store ├── use-exit-modal.ts ├── use-hearts-modal.ts └── use-practice-modal.ts ├── tailwind.config.ts └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/README.md -------------------------------------------------------------------------------- /actions/challenge-progress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/actions/challenge-progress.ts -------------------------------------------------------------------------------- /actions/user-progress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/actions/user-progress.ts -------------------------------------------------------------------------------- /actions/user-subscription.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/actions/user-subscription.ts -------------------------------------------------------------------------------- /app/(main)/courses/card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/courses/card.tsx -------------------------------------------------------------------------------- /app/(main)/courses/list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/courses/list.tsx -------------------------------------------------------------------------------- /app/(main)/courses/loading.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/courses/loading.tsx -------------------------------------------------------------------------------- /app/(main)/courses/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/courses/page.tsx -------------------------------------------------------------------------------- /app/(main)/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/layout.tsx -------------------------------------------------------------------------------- /app/(main)/leaderboard/loading.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/leaderboard/loading.tsx -------------------------------------------------------------------------------- /app/(main)/leaderboard/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/leaderboard/page.tsx -------------------------------------------------------------------------------- /app/(main)/learn/header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/learn/header.tsx -------------------------------------------------------------------------------- /app/(main)/learn/lesson-button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/learn/lesson-button.tsx -------------------------------------------------------------------------------- /app/(main)/learn/loading.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/learn/loading.tsx -------------------------------------------------------------------------------- /app/(main)/learn/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/learn/page.tsx -------------------------------------------------------------------------------- /app/(main)/learn/unit-banner.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/learn/unit-banner.tsx -------------------------------------------------------------------------------- /app/(main)/learn/unit.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/learn/unit.tsx -------------------------------------------------------------------------------- /app/(main)/quests/loading.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/quests/loading.tsx -------------------------------------------------------------------------------- /app/(main)/quests/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/quests/page.tsx -------------------------------------------------------------------------------- /app/(main)/shop/items.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/shop/items.tsx -------------------------------------------------------------------------------- /app/(main)/shop/loading.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/shop/loading.tsx -------------------------------------------------------------------------------- /app/(main)/shop/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(main)/shop/page.tsx -------------------------------------------------------------------------------- /app/(marketing)/footer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(marketing)/footer.tsx -------------------------------------------------------------------------------- /app/(marketing)/header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(marketing)/header.tsx -------------------------------------------------------------------------------- /app/(marketing)/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(marketing)/layout.tsx -------------------------------------------------------------------------------- /app/(marketing)/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/(marketing)/page.tsx -------------------------------------------------------------------------------- /app/admin/app.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/app.tsx -------------------------------------------------------------------------------- /app/admin/challenge/create.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/challenge/create.tsx -------------------------------------------------------------------------------- /app/admin/challenge/edit.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/challenge/edit.tsx -------------------------------------------------------------------------------- /app/admin/challenge/list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/challenge/list.tsx -------------------------------------------------------------------------------- /app/admin/challengeOption/create.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/challengeOption/create.tsx -------------------------------------------------------------------------------- /app/admin/challengeOption/edit.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/challengeOption/edit.tsx -------------------------------------------------------------------------------- /app/admin/challengeOption/list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/challengeOption/list.tsx -------------------------------------------------------------------------------- /app/admin/course/create.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/course/create.tsx -------------------------------------------------------------------------------- /app/admin/course/edit.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/course/edit.tsx -------------------------------------------------------------------------------- /app/admin/course/list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/course/list.tsx -------------------------------------------------------------------------------- /app/admin/lesson/create.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/lesson/create.tsx -------------------------------------------------------------------------------- /app/admin/lesson/edit.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/lesson/edit.tsx -------------------------------------------------------------------------------- /app/admin/lesson/list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/lesson/list.tsx -------------------------------------------------------------------------------- /app/admin/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/page.tsx -------------------------------------------------------------------------------- /app/admin/unit/create.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/unit/create.tsx -------------------------------------------------------------------------------- /app/admin/unit/edit.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/unit/edit.tsx -------------------------------------------------------------------------------- /app/admin/unit/list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/admin/unit/list.tsx -------------------------------------------------------------------------------- /app/api/challengeOptions/[challengeOptionId]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/challengeOptions/[challengeOptionId]/route.ts -------------------------------------------------------------------------------- /app/api/challengeOptions/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/challengeOptions/route.ts -------------------------------------------------------------------------------- /app/api/challenges/[challengeId]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/challenges/[challengeId]/route.ts -------------------------------------------------------------------------------- /app/api/challenges/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/challenges/route.ts -------------------------------------------------------------------------------- /app/api/courses/[courseId]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/courses/[courseId]/route.ts -------------------------------------------------------------------------------- /app/api/courses/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/courses/route.ts -------------------------------------------------------------------------------- /app/api/lessons/[lessonId]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/lessons/[lessonId]/route.ts -------------------------------------------------------------------------------- /app/api/lessons/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/lessons/route.ts -------------------------------------------------------------------------------- /app/api/units/[unitId]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/units/[unitId]/route.ts -------------------------------------------------------------------------------- /app/api/units/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/units/route.ts -------------------------------------------------------------------------------- /app/api/webhooks/stripe/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/api/webhooks/stripe/route.ts -------------------------------------------------------------------------------- /app/buttons/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/buttons/page.tsx -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/globals.css -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/layout.tsx -------------------------------------------------------------------------------- /app/lesson/[lessonId]/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/[lessonId]/page.tsx -------------------------------------------------------------------------------- /app/lesson/card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/card.tsx -------------------------------------------------------------------------------- /app/lesson/challenge.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/challenge.tsx -------------------------------------------------------------------------------- /app/lesson/footer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/footer.tsx -------------------------------------------------------------------------------- /app/lesson/header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/header.tsx -------------------------------------------------------------------------------- /app/lesson/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/layout.tsx -------------------------------------------------------------------------------- /app/lesson/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/page.tsx -------------------------------------------------------------------------------- /app/lesson/question-bubble.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/question-bubble.tsx -------------------------------------------------------------------------------- /app/lesson/quiz.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/quiz.tsx -------------------------------------------------------------------------------- /app/lesson/result-card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/app/lesson/result-card.tsx -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components.json -------------------------------------------------------------------------------- /components/feed-wrapper.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/feed-wrapper.tsx -------------------------------------------------------------------------------- /components/mobile-header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/mobile-header.tsx -------------------------------------------------------------------------------- /components/mobile-sidebar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/mobile-sidebar.tsx -------------------------------------------------------------------------------- /components/modals/exit-modal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/modals/exit-modal.tsx -------------------------------------------------------------------------------- /components/modals/hearts-modal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/modals/hearts-modal.tsx -------------------------------------------------------------------------------- /components/modals/practice-modal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/modals/practice-modal.tsx -------------------------------------------------------------------------------- /components/promo.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/promo.tsx -------------------------------------------------------------------------------- /components/quests.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/quests.tsx -------------------------------------------------------------------------------- /components/sidebar-item.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/sidebar-item.tsx -------------------------------------------------------------------------------- /components/sidebar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/sidebar.tsx -------------------------------------------------------------------------------- /components/sticky-wrapper.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/sticky-wrapper.tsx -------------------------------------------------------------------------------- /components/ui/avatar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/ui/avatar.tsx -------------------------------------------------------------------------------- /components/ui/button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/ui/button.tsx -------------------------------------------------------------------------------- /components/ui/dialog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/ui/dialog.tsx -------------------------------------------------------------------------------- /components/ui/progress.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/ui/progress.tsx -------------------------------------------------------------------------------- /components/ui/separator.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/ui/separator.tsx -------------------------------------------------------------------------------- /components/ui/sheet.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/ui/sheet.tsx -------------------------------------------------------------------------------- /components/ui/sonner.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/ui/sonner.tsx -------------------------------------------------------------------------------- /components/user-progress.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/components/user-progress.tsx -------------------------------------------------------------------------------- /constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/constants.ts -------------------------------------------------------------------------------- /db/drizzle.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/db/drizzle.ts -------------------------------------------------------------------------------- /db/queries.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/db/queries.ts -------------------------------------------------------------------------------- /db/schema.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/db/schema.ts -------------------------------------------------------------------------------- /drizzle.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/drizzle.config.ts -------------------------------------------------------------------------------- /lib/admin.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/lib/admin.ts -------------------------------------------------------------------------------- /lib/stripe.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/lib/stripe.ts -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/lib/utils.ts -------------------------------------------------------------------------------- /middleware.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/middleware.ts -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/next.config.mjs -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/package.json -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/postcss.config.js -------------------------------------------------------------------------------- /public/boy.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/boy.svg -------------------------------------------------------------------------------- /public/correct.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/correct.wav -------------------------------------------------------------------------------- /public/es.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/es.svg -------------------------------------------------------------------------------- /public/es_boy.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/es_boy.mp3 -------------------------------------------------------------------------------- /public/es_girl.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/es_girl.mp3 -------------------------------------------------------------------------------- /public/es_man.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/es_man.mp3 -------------------------------------------------------------------------------- /public/es_robot.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/es_robot.mp3 -------------------------------------------------------------------------------- /public/es_woman.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/es_woman.mp3 -------------------------------------------------------------------------------- /public/es_zombie.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/es_zombie.mp3 -------------------------------------------------------------------------------- /public/finish.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/finish.mp3 -------------------------------------------------------------------------------- /public/finish.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/finish.svg -------------------------------------------------------------------------------- /public/fr.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/fr.svg -------------------------------------------------------------------------------- /public/girl.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/girl.svg -------------------------------------------------------------------------------- /public/heart.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/heart.svg -------------------------------------------------------------------------------- /public/hero.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/hero.svg -------------------------------------------------------------------------------- /public/hr.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/hr.svg -------------------------------------------------------------------------------- /public/incorrect.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/incorrect.wav -------------------------------------------------------------------------------- /public/it.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/it.svg -------------------------------------------------------------------------------- /public/jp.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/jp.svg -------------------------------------------------------------------------------- /public/leaderboard.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/leaderboard.svg -------------------------------------------------------------------------------- /public/learn.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/learn.svg -------------------------------------------------------------------------------- /public/man.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/man.svg -------------------------------------------------------------------------------- /public/mascot.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/mascot.svg -------------------------------------------------------------------------------- /public/mascot_bad.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/mascot_bad.svg -------------------------------------------------------------------------------- /public/mascot_sad.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/mascot_sad.svg -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/next.svg -------------------------------------------------------------------------------- /public/points.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/points.svg -------------------------------------------------------------------------------- /public/quests.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/quests.svg -------------------------------------------------------------------------------- /public/robot.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/robot.svg -------------------------------------------------------------------------------- /public/shop.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/shop.svg -------------------------------------------------------------------------------- /public/unlimited.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/unlimited.svg -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/vercel.svg -------------------------------------------------------------------------------- /public/woman.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/woman.svg -------------------------------------------------------------------------------- /public/zombie.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/public/zombie.svg -------------------------------------------------------------------------------- /scripts/prod.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/scripts/prod.ts -------------------------------------------------------------------------------- /scripts/reset.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/scripts/reset.ts -------------------------------------------------------------------------------- /scripts/seed.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/scripts/seed.ts -------------------------------------------------------------------------------- /store/use-exit-modal.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/store/use-exit-modal.ts -------------------------------------------------------------------------------- /store/use-hearts-modal.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/store/use-hearts-modal.ts -------------------------------------------------------------------------------- /store/use-practice-modal.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/store/use-practice-modal.ts -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/tailwind.config.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pleopardi/next14-duolingo-clone/HEAD/tsconfig.json --------------------------------------------------------------------------------