An invisible desktop application that will help you pass your technical interviews.
https://www.interviewcoder.co (explains all the features)
hero.mp4
For image -> text translation, I went with gpt-4o. For answer generation, I've used claude 3.7 sonnet becauses it's the best. Both of these is easily changeable, and you can modify our own prompts too at backend/src/controllers
- Bun installed (https://bun.sh/docs/installation)
- OpenAI API key
- Anthropic API key
- Supabase account (for auth and database). We need
SUPABASE_URL
andSUPABASE_ANON_KEY
. Also supabase CLI installed - Docker (optional, for hosting backend)
- Clone the repository
git clone https://github.com/woaitsAryan/interview-coder-self-host
cd interview-coder-self-host
bun install
- Create
.env
files and populate with the appropriate credentials
cp .env.sample .env
cp .env.local.sample .env.local
- Login with your supabase CLI and do migrations
supabase login
supabase db push
- Build the app for your platform
For this step, remember that whatever BACKEND_URL is in .env will be used as the backend url for the app. If you want to self-host it in a server, you'll have to change the URL and re-build this
bun run build
- Run the backend
Either run it directly with bun:
bun run backend:dev
Or run it with docker:
bun run compose:build && bun run compose:up
- Install the app
Go to releases/ folder and then find your .exe or .dmg or whatever and install it.
On install, you'll see a sign in page, click on the sign-up button, I'd recommend to just disable email otp, so you can directly sign up with email. After sign-up, it will just work
That's it? yay! Do as you plesae!
- If you are running the app in dev using
bun run dev
so it'll open the developer console too by default so make sure to close that if you don't need it. - I don't know how to close this app lol, I just go to process manager and kill it
The application is invisible to:
- Zoom versions below 6.1.6 (inclusive)
- All browser-based screen recording software
- All versions of Discord
- Mac OS screenshot functionality (Command + Shift + 3/4)
Note: The application is NOT invisible to:
- Zoom versions 6.1.6 and above
- https://zoom.en.uptodown.com/mac/versions (link to downgrade Zoom if needed)
- Mac OS native screen recording (Command + Shift + 5)
- 🎯 99% Invisibility: Undetectable window that bypasses most screen capture methods
- 📸 Smart Screenshot Capture: Capture both question text and code separately for better analysis
- 🤖 AI-Powered Analysis: Automatically extracts and analyzes coding problems
- 💡 Solution Generation: Get detailed explanations and solutions
- 🔧 Real-time Debugging: Debug your code with AI assistance
- 🎨 Window Management: Freely move and position the window anywhere on screen
The application uses unidentifiable global keyboard shortcuts that won't be detected by browsers or other applications:
- Toggle Window Visibility: [Control or Cmd + b]
- Move Window: [Control or Cmd + arrows]
- Take Screenshot: [Control or Cmd + H]
- Process Screenshots: [Control or Cmd + Enter]
- Reset View: [Control or Cmd + R]
- Quit: [Control or Cmd + Q]
-
Initial Setup
- Launch the invisible window
- Login and subscribe
-
Capturing Problem
- Use global shortcut [Control or Cmd + H] to take screenshots
- Screenshots are automatically added to the queue of up to 5.
-
Processing
- AI analyzes the screenshots to extract:
- Problem requirements
- Code context
- System generates optimal solution strategy
- AI analyzes the screenshots to extract:
-
Solution & Debugging
- View generated solutions
- Use debugging feature to:
- Test different approaches
- Fix errors in your code
- Get line-by-line explanations
- Toggle between solutions and queue views
-
Window Management
- Move window freely using global shortcut
- Toggle visibility as needed
- Window remains invisible to specified applications
- Reset view using Command + R
- Node.js (v16 or higher)
- npm or bun package manager
- Subscription on https://www.interviewcoder.co/settings (not needed for self-hosting)
- Screen Recording Permission for Terminal/IDE
- On macOS:
- Go to System Preferences > Security & Privacy > Privacy > Screen Recording
- Ensure that Interview Coder has screen recording permission enabled
- Restart Interview Coder after enabling permissions
- On Windows:
- No additional permissions needed
- On Linux:
- May require
xhost
access depending on your distribution
- May require
- On macOS:
- Electron
- React
- TypeScript
- Vite
- Tailwind CSS
- Radix UI Components
- OpenAI API
Contributions are welcome! Please feel free to submit a Pull Request.