A modern web application for practicing technical interviews with AI-powered feedback and expert guidance. Built with Next.js, React, TypeScript, and Firebase.
- Free Mock Interviews: Practice unlimited technical interviews in frontend, backend, and DSA
- Professional Mock Interviews: Upgrade for company-specific interviews with expert feedback
- Real-time AI Feedback: Get instant feedback on your interview performance
- Interview Analytics: Track your progress and performance over time
- User Authentication: Secure login/signup with Firebase Auth
- Responsive Design: Works seamlessly on desktop, tablet, and mobile devices
- Dark/Light Theme: Toggle between dark and light themes
- Modern UI/UX: Built with Radix UI components and Tailwind CSS
- Type Safety: Full TypeScript support for better development experience
- Performance Optimized: Next.js 14 with App Router for optimal performance
- Real-time Data: Firebase Firestore for real-time data synchronization
- Email Integration: Nodemailer for email notifications
- 3D Graphics: Three.js integration for enhanced visual experience
- Next.js 14: React framework with App Router
- React 18: Latest React features and hooks
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first CSS framework
- Radix UI: Accessible component primitives
- Lucide React: Beautiful icons
- Next Themes: Dark/light theme support
- Firebase: Authentication and Firestore database
- Firestore: NoSQL database for real-time data
- Nodemailer: Email service integration
- ESLint: Code linting
- PostCSS: CSS processing
- Autoprefixer: CSS vendor prefixing
- Node.js 18+
- npm, yarn, or pnpm
- Firebase project setup
git clone <repository-url>
cd mockdrilling-website# Using npm
npm install
# Using yarn
yarn install
# Using pnpm
pnpm installCreate a .env.local file in the root directory:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id
# Email Configuration (if using Nodemailer)
EMAIL_SERVER_HOST=your_email_host
EMAIL_SERVER_PORT=your_email_port
EMAIL_SERVER_USER=your_email_user
EMAIL_SERVER_PASSWORD=your_email_password- Create a new Firebase project at Firebase Console
- Enable Authentication (Email/Password)
- Create a Firestore database
- Update the Firestore rules with the provided
firestore.rules - Add your Firebase configuration to the environment variables
npm run dev
# or
yarn dev
# or
pnpm devThe application will be available at http://localhost:3000
# Build the application
npm run build
# Start the production server
npm start# Lint the code
npm run lint
# Type checking
npx tsc --noEmitmockdrilling-website/
βββ app/ # Next.js App Router
β βββ api/ # API routes
β βββ auth/ # Authentication pages
β βββ dashboard/ # Dashboard and interview pages
β βββ components/ # App-specific components
β βββ globals.css # Global styles
β βββ layout.jsx # Root layout
β βββ page.jsx # Home page
βββ components/ # Shared components
β βββ ui/ # UI components (Radix UI)
β βββ auth-provider.jsx # Authentication provider
β βββ debug-auth.jsx # Debug authentication
β βββ protected-route.jsx # Route protection
β βββ theme-provider.tsx # Theme provider
βββ hooks/ # Custom React hooks
βββ lib/ # Utility functions
βββ public/ # Static assets
βββ scripts/ # Build scripts
βββ styles/ # Additional styles
βββ firestore.rules # Firestore security rules
βββ next.config.mjs # Next.js configuration
βββ tailwind.config.ts # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
βββ package.json # Dependencies and scripts
The application uses Firebase Authentication with the following features:
- Email/password authentication
- Protected routes
- User session management
- Automatic redirect to dashboard for authenticated users
The application uses:
- Tailwind CSS: Utility-first CSS framework
- Radix UI: Accessible component primitives
- Custom CSS: Global styles and animations
- Theme Support: Dark and light mode toggle
The application is fully responsive and optimized for:
- Desktop (1024px+)
- Tablet (768px - 1023px)
- Mobile (320px - 767px)
- Image optimization
- Font optimization
- Performance optimizations
- Custom color palette
- Animation configurations
- Component styling
- Strict type checking
- Path aliases
- Module resolution
- Connect your GitHub repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically on push to main branch
The application can be deployed to any platform that supports Next.js:
- Netlify
- AWS Amplify
- Railway
- DigitalOcean App Platform
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Contact the development team
Stay updated with the latest changes:
MockDrilling - Practice technical interviews with confidence! π―