DEV Community

Cover image for Interview Quest : an AI Interviewer
Anupam Thakur
Anupam Thakur

Posted on

Interview Quest : an AI Interviewer

GitHub Copilot CLI Challenge Submission

This is a submission for the GitHub Copilot CLI Challenge

๐ŸŽฎ InterviewQuest: Level Up Your Interview Skills in the Terminal

Ever wished you could practice coding interviews without leaving your terminal? Meet InterviewQuest - a gamified, terminal-based interview simulator that makes practicing technical interviews actually fun!

๐ŸŒŸ What is InterviewQuest?

InterviewQuest is a production-quality CLI application that helps developers practice technical interview questions in a gamified environment. Think of it as a terminal game meets interview prep - with lives, streaks, and adaptive difficulty!

โœจ Key Features

  • ๐ŸŽฏ Guess the Output Mode - Analyze code snippets and predict their output
  • ๐Ÿ’ Lives System - Start with 3 hearts, lose one on wrong answers
  • ๐Ÿ”ฅ Streak Bonuses - Get 3 correct in a row to level up difficulty
  • ๐Ÿ“Š Score Tracking - Track your progress and accuracy
  • ๐Ÿง  Adaptive Difficulty - Automatically adjusts based on your performance
  • ๐ŸŽจ Beautiful UI - Centered, colorful terminal interface with animations
  • โšก Zero Dependencies - Minimal, fast, and reliable
  • ๐Ÿค– AI Integration - Optional GitHub Copilot support for evaluation

๐ŸŽฌ Demo

๐Ÿ“‹ Prerequisites

Before you start, make sure you have:

  • Node.js >= 18
  • Git
  • Terminal with minimum size 60x20

๐Ÿš€ Installation & Setup

Since the app isn't published on npm yet, you can run it directly from the GitHub repository:

Method 1: Clone and Run (Recommended)

# Clone the repository
git clone https://github.com/anupamthakur-dev/interview-quest.git

# Navigate to the directory
cd interview-quest

# Install dependencies
npm install

# Build the project
npm run build

# Run the game (default mode - no AI)
npm start

# Or run with AI features enabled
npm run start:ai

# Alternative: direct command with AI
node dist/bin/interviewquest.js --ai
Enter fullscreen mode Exit fullscreen mode

Note: In local development, AI is disabled by default. Use npm run start:ai or add the --ai flag to enable GitHub Copilot features.

Method 2: Install Globally (Local Development)

(not yet published on npm)

# Clone and navigate
git clone https://github.com/anupamthakur-dev/interview-quest.git
cd interview-quest

# Install dependencies and build
npm install
npm run build

# Link globally
npm link

# Now you can run it from anywhere!
interviewquest

# Or with AI features
interviewquest --ai
Enter fullscreen mode Exit fullscreen mode

To unlink later:

npm unlink -g interviewquest
Enter fullscreen mode Exit fullscreen mode

Tip: When installed globally via npm (after publishing), AI features will be enabled by default. In local development, use the --ai flag to enable them.

๐ŸŽฎ How to Play

Starting the Game

npm start
Enter fullscreen mode Exit fullscreen mode

Game Modes

1. Guess the Output ๐ŸŽฏ

The main game mode where you:

  1. View a code snippet
  2. Predict what it will output
  3. Submit your guess (multi-line supported!)
  4. Get instant feedback

Lives System:

  • Start with 3 hearts โค๏ธ โค๏ธ โค๏ธ
  • Lose one on wrong answer
  • Game over when you run out!

Streak Bonuses:

  • Get 3 correct in a row ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ
  • Difficulty automatically increases
  • Earn bonus points!

Difficulty Levels:

  • ๐ŸŸข Easy - Basic concepts
  • ๐ŸŸก Medium - Practical applications
  • ๐Ÿ”ด Hard - Advanced concepts

2. Interview Mode ๐ŸŽค (Coming Soon)

  • Realistic interview simulation
  • Timed challenges
  • AI evaluation with detailed feedback

3. Practice Grounds ๐Ÿ“š (Coming Soon)

  • Unlimited practice
  • No time pressure
  • Learn at your own pace

โŒจ๏ธ Controls

In-Game Controls

Guess the Output:

  • Type your answer
  • Press Enter for new line
  • Press Ctrl+S to submit
  • Use arrow keys to navigate

Menus:

  • Use โ†‘ โ†“ arrow keys to navigate
  • Press Enter to select
  • Press Esc or Ctrl+C to exit

๐Ÿ› ๏ธ Tech Stack

Built with modern, minimal dependencies:

  • TypeScript - Type-safe development
  • Node.js - Runtime environment
  • Chalk - Terminal styling
  • Figlet - ASCII art headers
  • Custom Terminal Wrapper - Responsive, centered UI

Architecture:

  • Modular, scalable structure
  • Custom animations (no heavy libraries!)
  • Native readline for input
  • Clean separation of concerns

๐Ÿ“ Project Structure

interview-quest/
โ”œโ”€โ”€ bin/
โ”‚   โ””โ”€โ”€ interviewquest.ts        # Entry point
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/                     # App initialization
โ”‚   โ”œโ”€โ”€ ui/                      # Terminal UI components
โ”‚   โ”œโ”€โ”€ game/                    # Game logic & modes
โ”‚   โ”œโ”€โ”€ questions/               # Question bank
โ”‚   โ”œโ”€โ”€ evaluation/              # Answer evaluation
โ”‚   โ””โ”€โ”€ utils/                   # Utilities
โ””โ”€โ”€ dist/                        # Compiled output
Enter fullscreen mode Exit fullscreen mode

๐ŸŽจ Screenshots

Intro page

Main Menu

Gameplay

Results

โš™๏ธ Configuration

Default Mode (No Setup Required)

The app runs in default mode with built-in questions:

  • โœ… Works immediately after installation
  • โœ… No external dependencies required
  • โœ… Perfect for getting started!

Just run and play:

npm start
# or if linked globally
interviewquest
Enter fullscreen mode Exit fullscreen mode

Enable AI Features (Optional)

Want AI-powered code generation and evaluation? Use the --ai flag:

Prerequisites:

  1. GitHub CLI installed: gh --version
  2. Copilot extension: gh extension install github/gh-copilot
  3. Authenticated: gh auth login
  4. GitHub Copilot subscription

Local Development:

# Using npm scripts
npm run start:ai
npm run dev:ai

# Or with flag
interviewquest --ai
node dist/bin/interviewquest.js --ai
Enter fullscreen mode Exit fullscreen mode

After Publishing (Production):

# AI enabled by default!
npm install -g interviewquest
interviewquest  # AI already enabled

# Disable if needed
interviewquest --no-ai
Enter fullscreen mode Exit fullscreen mode

Available Flags:

interviewquest --help        # Show help
interviewquest --version     # Show version
interviewquest --ai          # Enable AI features
interviewquest --copilot     # Same as --ai
interviewquest -c            # Short form
interviewquest --no-ai       # Disable AI (production)
Enter fullscreen mode Exit fullscreen mode

What you get with AI:

  • ๐Ÿค– AI-generated code challenges
  • ๐Ÿ’ก Smarter answer evaluation
  • ๐Ÿ“ Detailed feedback and explanations
  • ๐ŸŽฏ More varied question types

Environment Behavior:

  • ๐Ÿ  Local Development: AI disabled by default (use --ai to enable)
  • ๐Ÿš€ Production: AI enabled by default (use --no-ai to disable)

๐Ÿค Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch
   git checkout -b feature/amazing-feature
Enter fullscreen mode Exit fullscreen mode
  1. Make your changes
  2. Commit with clear messages
   git commit -m "Add amazing feature"
Enter fullscreen mode Exit fullscreen mode
  1. Push to your fork
   git push origin feature/amazing-feature
Enter fullscreen mode Exit fullscreen mode
  1. Open a Pull Request

Development Setup

# Clone your fork
git clone https://github.com/YOUR_USERNAME/interview-quest.git
cd interview-quest

# Install dependencies
npm install

# Start development mode
npm run dev
Enter fullscreen mode Exit fullscreen mode

๐Ÿ—บ๏ธ Roadmap

Current Features โœ…

  • [x] Guess the Output mode
  • [x] Lives system
  • [x] Streak bonuses
  • [x] Adaptive difficulty
  • [x] Score tracking
  • [x] Multi-line input support
  • [x] Beautiful terminal UI

Coming Soon ๐Ÿš€

  • [ ] Interview Mode with AI evaluation
  • [ ] Practice Grounds (unlimited practice)
  • [ ] More question categories
  • [ ] Session persistence
  • [ ] Leaderboard system
  • [ ] Custom themes
  • [ ] Question of the day
  • [ ] Multiplayer mode (?)

๐Ÿ“Š Stats

  • Package Size: ~70 KB
  • Dependencies: 3 (minimal!)
  • Lines of Code: ~5,000+
  • Supported Languages: JavaScript, TypeScript, DSA, System Design
  • Question Bank: Growing weekly!

๐Ÿ› Known Issues

  • Terminal must be at least 60x20 for best experience
  • Some emojis may not render correctly on older terminals
  • Windows CMD has limited color support (use PowerShell or Windows Terminal)

๐Ÿ’ก Tips for Best Experience

  1. Use a modern terminal:

    • Windows: Windows Terminal or PowerShell
    • Mac: iTerm2 or default Terminal
    • Linux: gnome-terminal, konsole, or similar
  2. Recommended terminal size: 80x24 or larger

  3. Enable cursor blinking for better input visibility

  4. Use dark theme for optimal color contrast

๐Ÿ™ Acknowledgments

  • Built with love for the developer community
  • Inspired by the need for better interview practice tools
  • Thanks to all contributors and testers!

๐Ÿ“ฌ Contact & Support


๐ŸŽฏ Quick Start Summary

# 1. Clone the repo
git clone https://github.com/anupamthakur-dev/interview-quest.git

# 2. Install & build
cd interview-quest
npm install
npm run build

# 3. Start playing!
npm start              # Default mode (no AI)
npm run start:ai       # With AI features

# 4. Optional: Install globally
npm link
interviewquest         # Run from anywhere
interviewquest --ai    # With AI features

# When published via npm (coming soon!)
npm install -g interviewquest
interviewquest         # AI enabled by default
interviewquest --no-ai # Disable AI if needed
Enter fullscreen mode Exit fullscreen mode

Quick Commands:

  • interviewquest - Run the game
  • interviewquest --ai - Enable AI features (local dev)
  • interviewquest --no-ai - Disable AI (production)
  • interviewquest --help - Show all options
  • interviewquest --version - Show version

Works immediately with built-in questions! No setup required.

Want AI features? Add --ai flag in local dev, or AI is enabled by default in production.


Star the repo โญ if you find it helpful!

Happy coding, and may your interviews be ever in your favor! ๐Ÿš€


Have questions or suggestions? Drop them in the comments below! ๐Ÿ‘‡

Top comments (0)