CodeQuest is a comprehensive platform that aggregates the best coding interview questions from popular platforms like LeetCode, Codeforces, HackerRank, and more. It provides an intuitive coding environment, real-time discussions, and progress tracking to help developers excel in coding interviews.
- Aggregated Coding Problems from various platforms.
- Integrated Code Editor for solving problems directly on the platform.
- Real-time Discussions powered by WebSockets for interactive learning.
- Progress Tracking to help users monitor their preparation journey.
- Advanced Filtering & Search for seamless navigation.
- Authentication using NextAuth with Google and Credential Providers.
- Next.js with TypeScript
- TailwindCSS for styling
- Node.js with API routes
- PostgreSQL with Prisma ORM
- Vercel for deployment
- Prometheus, Grafana, and Loki for monitoring and scaling
- Zustand
git clone https://github.com/SATYAM-PRATIBHAN/CodeQuest.git
cd codequestyarn installCreate a .env file in the root directory and add the following:
DATABASE_URL=postgresql://USER:PASSWORD@localhost:5432/codequest
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret- Install PostgreSQL if not already installed:
sudo apt update && sudo apt install postgresql- Start PostgreSQL Service:
sudo service postgresql start- Access PostgreSQL:
sudo -u postgres psql- Create a new database:
CREATE DATABASE codequest;- Run Prisma Migrations:
npx prisma migrate dev- Generate Prisma Client:
npx prisma generate- Add Google OAuth credentials in the
.envfile. - In your
auth/[...nextauth].tsfile:
import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import CredentialsProvider from "next-auth/providers/credentials";
export const authOptions = {
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID!,
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
}),
CredentialsProvider({
name: "Credentials",
credentials: {
email: { label: "Email", type: "text" },
password: { label: "Password", type: "password" }
},
async authorize(credentials) {
const user = { id: "1", name: "Admin", email: credentials?.email };
return user || null;
}
})
],
};
export default NextAuth(authOptions);- Start the development server:
yarn dev- Open http://localhost:3000 in your browser.
We welcome contributions to improve CodeQuest! Feel free to submit issues, pull requests, or new feature suggestions.
This project is licensed under the MIT License.