A modern, responsive web application to explore and filter LeetCode problems categorized by companies, topics, and difficulty levels.
- π Smart Search: Find problems by title or description with real-time filtering
- π’ Company Filtering: Filter problems by specific companies (Google, Microsoft, Amazon, etc.)
- π Topic-based Filtering: Browse problems by algorithms and data structures topics
- π Difficulty Levels: Easy, Medium, and Hard problem categorization
- π± Responsive Design: Beautiful UI that works on desktop, tablet, and mobile
- β‘ Performance Optimized: Built with Next.js 15 and React 19 for blazing-fast performance
- π¨ Modern UI: Crafted with shadcn/ui components and Tailwind CSS
- π Virtualized Tables: Efficient rendering for large datasets with TanStack Table
- π URL State Management: Shareable URLs with Nuqs for search parameters
- Framework: Next.js 15 with App Router
- Styling: Tailwind CSS v4
- Components: shadcn/ui with Radix UI primitives
- Data Fetching: TanStack Query (React Query)
- Table Management: TanStack Table with virtualization
- State Management: Nuqs for URL state
- Icons: Lucide React, React Icons
- Database: Neon PostgreSQL
- ORM: Drizzle ORM
- Runtime: Bun (development)
- Language: TypeScript
- Bundler: Turbopack (Next.js)
- Package Manager: Bun
Make sure you have the following installed:
- Bun (recommended) or Node.js 18+
- Git
-
Clone the repository
git clone https://github.com/BioHazard786/Leetcode-Companywise-Questions.git cd Leetcode-Companywise-Questions
-
Install dependencies
bun install # or with npm npm install
-
Set up environment variables
cp .env.example .env.local # Edit .env.local with your database credentials
-
Run the development server
bun dev # or with npm npm run dev
-
Open your browser Navigate to http://localhost:3000 to see the application.
This project uses Neon PostgreSQL. To set up your database:
-
Create a Neon account
-
Create a new database project
-
Add your connection string to
.env.local
:DATABASE_URL="your-neon-connection-string"
src/
βββ app/ # Next.js App Router
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
β βββ search-params.ts # Search params configuration
βββ components/ # React components
β βββ problems/ # Problem-related components
β β βββ columns.tsx # Table column definitions
β β βββ data-table.tsx # Main data table component
β β βββ filters.tsx # Filter components
β β βββ more-info.tsx # Problem details modal
β βββ providers/ # Context providers
β βββ ui/ # shadcn/ui components
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions and configuration
β βββ constants.ts # App constants
β βββ db.ts # Database configuration
β βββ schema.ts # Database schema
β βββ types.ts # TypeScript type definitions
β βββ utils.ts # Utility functions
βββ server/ # Server-side code
βββ action.ts # Server actions
This project uses shadcn/ui for consistent, accessible, and beautiful UI components:
- Data Display: Tables, Cards, Badges
- Navigation: Sidebar, Dropdown menus
- Forms: Input fields, Select dropdowns, Multi-select
- Feedback: Loading spinners, Tooltips, Dialogs
- Layout: Sheets, Separators, Scroll areas
# Development
bun dev # Start development server with Turbopack
bun build # Build for production
bun start # Start production server
bun lint # Run ESLint
This project is optimized for deployment on Vercel with seamless integration:
-
Deploy to Vercel:
- Visit vercel.com
- Sign in with your GitHub account
- Click "New Project" and import your repository
- Vercel will automatically detect Next.js and configure build settings
-
Environment Variables:
-
In your Vercel dashboard, go to Project Settings β Environment Variables
-
Add the following variables:
DATABASE_URL=your-neon-database-connection-string NEXT_PUBLIC_APP_URL=https://your-app.vercel.app
-
-
Deploy: Vercel will automatically build and deploy your site on every push to the main branch
-
Install Vercel CLI:
npm i -g vercel
-
Deploy:
vercel
-
Production deployment:
vercel --prod
- Real-time Search: Type to instantly filter problems by title
- Multi-select Filters: Choose multiple companies, topics, or difficulty levels
- URL Persistence: Filters are saved in the URL for easy sharing
- Infinite Scrolling: Load problems progressively for better performance
- Virtual Scrolling: Efficiently render large lists with TanStack Virtual
- Server-side Rendering: Fast initial page loads with Next.js SSR
- Optimistic Updates: Instant UI feedback with TanStack Query
- Mobile-first: Designed to work perfectly on all screen sizes
- Touch-friendly: Optimized for touch interactions on mobile devices
- Keyboard Navigation: Full keyboard accessibility support
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Liquidslr for providing the problem data
- shadcn/ui for the beautiful UI components
- TanStack for excellent data management tools
- Next.js team for the amazing framework
If you have any questions or need help, please open an issue on GitHub or reach out to the maintainers.
Made with β€οΈ for the coding community