A professional, multi-framework interview preparation application built with React, TypeScript, and Tailwind CSS. Practice with 500+ curated questions across Angular, React, Next.js, Redux, and Random topics.
- Multi-Framework Support: Practice questions for Angular (227), React (80), Next.js (50), Redux (100), and Random topics (52)
- Interactive Quiz System: Dynamic quiz interface with multiple question types (multiple choice, fill-in-blank, true/false, multiple checkbox)
- Enhanced Question Cards: Rich markdown rendering with syntax highlighting and comparison tables
- Study Features: Bookmarks, notes, progress tracking, and study timer
- Study Analytics: Comprehensive performance tracking and analytics dashboard
- Offline Support: Progressive Web App with offline capabilities
- Responsive Design: Optimized for desktop and mobile devices
- Dark Mode: Toggle between light and dark themes
- PWA Support: Install as a Progressive Web App
- Keyboard Shortcuts: Navigate efficiently with keyboard controls
- Code Quality: Comprehensive pre-push validation system
- Architecture: Clean separation of concerns with custom hooks and services
- Path Aliases: Modern import organization with TypeScript path mapping
- Frontend: React 19, TypeScript, Tailwind CSS
- Build Tool: Vite
- Testing: Vitest, Testing Library
- Code Quality: ESLint, Prettier, Husky, Pre-push validation
- Architecture: Custom hooks, services, context API
- Deployment: Vercel, Netlify ready
src/
βββ components/ # Reusable UI components
β βββ common/ # Shared components (LazyLoader, MarkdownRenderer, etc.)
β βββ features/ # Feature-specific components (StudyAnalytics, StatsPanel)
β βββ forms/ # Form components (SearchBar, FilterPanel, QuestionRating)
β βββ interactive-quiz/ # Interactive quiz system components
β βββ layout/ # Layout components (Sidebar, etc.)
β βββ navigation/ # Navigation components (FrameworkSelector, etc.)
β βββ quiz/ # Quiz components (QuizTimer, QuizProgress, etc.)
β βββ study/ # Study mode components
β βββ tables/ # Table components (ComparisonTable, RegularTable)
βββ pages/ # Main application pages
β βββ ModeSelection.tsx
β βββ FrameworkSelection.tsx
β βββ InterviewPage.tsx
β βββ InteractiveQuizPage.tsx
β βββ QuizSelection.tsx
βββ data/ # Question data and framework definitions
β βββ angular-enhanced.ts # 227 Angular questions
β βββ react-enhanced.ts # 80 React questions
β βββ nextjs-enhanced.ts # 50 Next.js questions
β βββ random-enhanced.ts # 52 Random topic questions
β βββ redux.ts # 100 Redux questions
β βββ interactive-quiz.ts # Interactive quiz data
βββ services/ # Business logic services
β βββ InteractiveQuizService.ts
β βββ QuestionService.ts
β βββ QuizService.ts
β βββ PerformanceService.ts
βββ hooks/ # Custom React hooks
β βββ useFrameworkManager.ts
β βββ useStudyAnalytics.ts
β βββ useKeyboardShortcuts.ts
βββ contexts/ # React context providers
β βββ ThemeContext.tsx
β βββ SidebarContext.tsx
βββ types/ # TypeScript type definitions
β βββ interactive-quiz.ts
β βββ quiz-results.ts
β βββ study-components.ts
β βββ ui.ts
βββ core/ # Core functionality
β βββ components/ # Core components (ErrorBoundary, etc.)
βββ shared/ # Shared utilities and components
βββ utils/ # Utility functions
βββ styles/ # Global styles and animations
docs/ # Documentation
βββ guides/ # Setup and usage guides
βββ management/ # Project management docs
βββ status/ # Project status and completion docs
scripts/ # Development and deployment scripts
βββ pre-push-validation.js # Comprehensive validation script
βββ README.md # Scripts documentation
-
Install dependencies:
pnpm install
-
Start development server:
pnpm dev
-
Build for production:
pnpm build
- Select Framework: Choose from Angular (227), React (80), Next.js (50), Redux (100), or Random topics (52)
- Practice Questions: Navigate through questions with keyboard shortcuts
- Track Progress: Bookmark questions and add personal notes
- Study Modes: Sequential, random, or bookmarked-only practice
- Choose Quiz Type: Select framework and difficulty level
- Multiple Question Types:
- Multiple Choice (single answer)
- Multiple Checkbox (multiple answers)
- Fill in the Blank
- True/False
- Real-time Feedback: Immediate scoring and progress tracking
- Performance Analytics: Detailed breakdown of performance by question type
- Study Recommendations: Personalized suggestions for improvement
- Core concepts, components, services, routing
- Forms (template-driven and reactive)
- Component communication and lifecycle hooks
- Authentication & authorization with JWT
- Angular 16-19 features (Signals, Control Flow, SSR improvements)
- Performance optimization and testing
- Hooks, state management, and lifecycle
- Server Components and Concurrent Features
- Error boundaries and context API
- Performance optimization and testing
- Advanced patterns and best practices
- App Router vs Pages Router
- SSG, SSR, ISR, and CSR strategies
- Image optimization and performance
- API routes and middleware
- Deployment and production optimization
- State management patterns
- Redux Toolkit and modern practices
- Middleware and async operations
- Testing and debugging
- Git workflows and advanced commands
- CSS units, Grid, Flexbox, and animations
- SASS features and best practices
- TypeScript advanced features
- Web APIs and modern JavaScript
- Build tools (Webpack, Vite, ESBuild)
- Docker and containerization
β
β
Navigate between questionsA
Toggle answer visibilityB
Bookmark/unbookmark question
# Run tests
pnpm test
# Run tests with UI
pnpm test:ui
# Run tests with coverage
pnpm test:coverage
This project includes a comprehensive pre-push validation system that ensures code quality before changes reach the repository.
# Run comprehensive validation (automatically runs on git push)
pnpm pre-push
# Individual validation checks
pnpm check:any # Find any types in source code
pnpm check:unused # Find unused variables
pnpm check:console # Find console.log statements
# Lint code
pnpm lint
# Lint with strict rules (zero warnings)
pnpm lint:strict
# Fix linting issues
pnpm lint:fix
# Format code
pnpm format
# Type check
pnpm type-check
# Validate everything
pnpm validate
The validation system automatically checks:
- β TypeScript Compilation: Ensures no type errors
- β ESLint Quality: Enforces coding standards
- β Prettier Formatting: Consistent code formatting
- β Production Build: Verifies build success
- β Test Suite: Runs all tests
- β
Any Type Detection: Finds
any
types (excluding example code) - β Unused Variables: Identifies unused variables and imports
- β
Console Statements: Detects
console.log
usage
The codebase has been refactored with modern React best practices:
- Path Aliases: Clean imports using
@components
,@services
,@types
, etc. - Custom Hooks:
useFrameworkManager
,useQuestionNavigation
,useProgressManager
,useStudyAnalytics
- Services:
FrameworkService
,QuestionService
,InteractiveQuizService
for business logic - Context API:
SidebarContext
,ThemeContext
for state management - Type Safety: Comprehensive TypeScript types and interfaces
- Component Composition: Reusable table components and utilities
- Performance: Lazy loading, code splitting, and optimized bundles
- Offline Support: Service worker integration for offline functionality
- π Complete Documentation - Comprehensive documentation index
- Architecture - System design and architecture
- Features - Detailed feature documentation
- Deployment - Deployment guides
- Project Structure - Detailed project organization
- β Path Aliases: Modern import organization with TypeScript path mapping
- β Console Log Cleanup: Removed all console.log statements from production code
- β Interactive Quiz System: Complete quiz interface with multiple question types
- β Study Analytics: Comprehensive performance tracking and analytics dashboard
- β Offline Support: Progressive Web App with service worker integration
- β Component Organization: Clean folder structure with feature-based organization
- β Type Safety: Enhanced TypeScript types and interfaces
- β Performance: Lazy loading and code splitting optimizations
- β Comprehensive validation: Pre-push hooks with TypeScript, ESLint, Prettier checks
- β
Code quality enforcement: Automatic detection of
any
types and unused variables - β Architecture refactoring: Custom hooks, services, and context API
- β Enhanced question content: 500+ questions across all frameworks
- β Table components: Beautiful comparison tables for difference questions
- β Type safety: Comprehensive TypeScript types and interfaces
- Angular: Added 67 new questions (Forms, Component Communication, Auth, Angular 16-19)
- React: Added 53 new questions (Advanced hooks, Server Components, Concurrent Features)
- Next.js: Added 40 new questions (App Router, Performance, Deployment)
- Random: Added 52 new questions (Git, CSS, SASS, TypeScript, Web APIs, Build Tools)
- Fork the repository
- Create a feature branch
- Make your changes
- Run pre-push validation:
pnpm pre-push
- Ensure all checks pass
- Submit a pull request
# Before making changes
git checkout -b feature/your-feature
# Make your changes, then validate
pnpm pre-push
# Commit and push (validation runs automatically)
git add .
git commit -m "feat: your changes"
git push
- π‘οΈ Quality Assurance: Prevents bad code from reaching the repository
- β‘ Faster Development: Automated checks instead of manual code review
- π Consistency: Ensures all team members follow the same standards
- π Early Bug Detection: Catches issues before they become problems
- π Learning: Developers learn best practices through validation feedback
- π Production Ready: Ensures code is always deployable
- Total Questions: 500+ across 5 categories
- Code Quality: 95/100 production readiness score
- Test Coverage: Comprehensive test suite
- Type Safety: 100% TypeScript coverage
- Performance: Optimized for fast loading and smooth UX
MIT License - see LICENSE for details.
Hussein Tirawi - GitHub
Built with β€οΈ for the frontend developer community.
Last updated: January 2025 - Pre-Push Validation System v2.0