Skip to content
/ mentor Public

Mentor is an open-source web application for learning, practicing and mastering programming languages and craft interview questions. The goal of this project is to improve the developer community.

License

Notifications You must be signed in to change notification settings

Kei-K23/mentor

Repository files navigation

Mentor

Overview

Mentor is an open-source web application for learning, practicing and mastering programming languages and craft interview questions. The goal of this project is to improve the developer community.

Features

Key Features:

  • Next server actions
  • Auth using Clerk
  • Dark mode support
  • Sound effects
  • Hearts system
  • Points / XP system
  • Exit confirmation popup
  • Practice old lessons to regain hearts
  • Leaderboard
  • Quests milestones and gain rewards
  • Shop system to exchange points with hearts
  • Landing page
  • Real-time comments section with Firebase
  • Informative user profile
  • Mobile responsiveness

Tech Stack

  • Next.js 14
  • Postgresql (Neon cloud)
  • Firebase
  • Prisma
  • Clerk (Auth)
  • TypeScript
  • Tailwind / ShadcnUI

Getting Started

Prerequisites

  • Node.js and npm installed on your machine.
  • Postgresql database for storing application data.
  • Firebase account.

Installation

  1. Setup Clerk web hooks for user create, update and delete.
  2. Install dependencies: npm install
  3. Build database schema: npm run db:push
  4. Generate prisma schema types: npx prisma generate
  5. Run seeding script: npm run db:seed
  6. Start the application locally: npm run dev

Configuration

Make sure to set the following environment variables:

  • NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=<NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY>
  • CLERK_SECRET_KEY=<CLERK_SECRET_KEY>
  • NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
  • NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
  • NEXT_PUBLIC_CLERK_SIGN_UP_FORCE_REDIRECT_URL=/learn
  • NEXT_PUBLIC_CLERK_SIGN_IN_FORCE_REDIRECT_URL=/learn
  • NEXT_PUBLIC_CLERK_WEBHOOK_SECRET_KEY=<NEXT_PUBLIC_CLERK_WEBHOOK_SECRET_KEY>
  • DATABASE_URL=<DATABASE_URL>
  • NEXT_PUBLIC_FIREBASE_API_KEY=<NEXT_PUBLIC_FIREBASE_API_KEY>
  • NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=<NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN>
  • NEXT_PUBLIC_FIREBASE_PROJECT_ID=<NEXT_PUBLIC_FIREBASE_PROJECT_ID>
  • NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=<NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET>
  • NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=<NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID>
  • NEXT_PUBLIC_FIREBASE_APP_ID=<NEXT_PUBLIC_FIREBASE_APP_ID>
  • NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=<NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID>

Contributing

We welcome contributions from the community! If you find a bug or have an idea for an improvement, please open an issue or submit a pull request. CONTRIBUTION-GUIDE.md

TODO

This is the todo list to complete for version 1.

  • Add errors management
  • Add skeleton and waiting loading animation or style when fetching data
  • Update UI design
  • Add features private profile and profile view count
  • Apply pagination and limiting fetching for comments from Firebase
  • Add blogs system
  • Add point gift system to send points from one account to another

License

This project is licensed under the MIT License.

About

Mentor is an open-source web application for learning, practicing and mastering programming languages and craft interview questions. The goal of this project is to improve the developer community.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages