Skip to content

Prism Interview is a real-time collaborative coding platform for technical interviews. It allows interviewers and candidates to sync code, manage interview time, take private notes, and select programming languages with syntax highlighting—all in a seamless, interactive environment.

License

Notifications You must be signed in to change notification settings

wtf-keaton/prism-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prism Interview

Prism Interview is a real-time collaborative coding platform designed for conducting technical interviews. It allows both interviewers and candidates to write and edit code simultaneously in a shared room, with live synchronization. The platform supports private notes for interviewers, time management for interviews, and a seamless coding experience with syntax highlighting for different programming languages.

Features

  • Real-time code synchronization: Both the interviewer and the candidate can see each other's code in real-time.
  • Private notes: Interviewers can add private notes that are not visible to the candidate.
  • Room management: Interviewers can create rooms and send invites to candidates.
  • Time management: Interviewers can set a time limit for the interview session.
  • Programming language selection: Candidates can choose their preferred programming language for syntax highlighting (e.g., Go, JavaScript, Python).
  • Post-interview notes: After the interview, interviewers can save their private notes for future reference.

Tech Stack

  • Backend:

    • Golang: For the main backend logic and API handling.
    • Kafka: For real-time messaging and data synchronization.
    • PostgreSQL: For storing user data, room information, tasks, and interview notes.
    • WebSocket: For real-time code synchronization between interviewers and candidates.
  • Frontend:

    • Nuxt.js: A framework for building server-rendered Vue.js applications.
    • Nuxt UI: A UI component library for building a beautiful, responsive interface.
    • CodeMirror: For syntax highlighting and code editing.

Project Structure

Backend

/backend 
├── cmd/                 # Main entry point (main.go)
│ ├── migrator/          # Database migration entry point
│ ├── server/            # Main service entry point
├── internal/            # Business logic and services
│ ├── room/              # Room management logic
│ ├── user/              # User management logic
│ ├── note/              # Interviewer notes logic
│ ├── storage/           # Database connection
│ ├── sync/              # Code synchronization logic
│ └── websocket/         # WebSocket server for real-time communication
├── pkg/                 # Utility functions and libraries
│ ├── logger/            # Logger utility
│ ├── config/            # Configuration management
│ ├── passwordHash/      # Configuration management
│ ├── utils/             # Utilities
│ └── middleware/        # Middleware (authentication, error handling)

Frontend

/frontend
├── assets/        # Static files (images, fonts, styles)
├── components/    # Reusable UI components
├── pages/         # Pages (index, room, interview)
├── store/         # Vuex store for application state
├── plugins/       # Nuxt.js plugins (WebSocket, Axios)
├── nuxt.config.ts # Nuxt.js configuration

Installation

To get started with Prism Interview, follow the installation steps below.

Backend Setup

  1. Clone the repository:
    git clone https://github.com/wtf-keaton/prism-interview.git
    cd prism-interview/backend
    
  2. Install Go dependencies:
    go mod tidy
  3. Create a .env file with the necessary environment variables (database URL, Kafka settings, etc.).
  4. Run the server:
    go run cmd/server/main.go

Frontend Setup

  1. Clone the repository:
    git clone https://github.com/wtf-keaton/prism-interview.git
    cd prism-interview/frontend
  2. Install dependencies:
    npm install
  3. Run the development server:
    npm run dev
  4. Open the app in your browser: http://localhost:3000

Usage

  1. Create an Interview Room: The interviewer creates a new room and sets up a coding task.
  2. Invite a Candidate: The interviewer sends an invite link to the candidate.
  3. Solve the Task: The candidate selects a programming language and starts solving the task.
  4. Real-time Collaboration: Both the interviewer and the candidate see code changes in real-time.
  5. Private Notes: The interviewer can take private notes during the interview.
  6. End the Interview: When the interview time is up, or the task is completed, the interviewer can finish the session and save the notes.

Contributing

Contributions are welcome! Please fork the repository, make your changes, and submit a pull request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Prism Interview is a real-time collaborative coding platform for technical interviews. It allows interviewers and candidates to sync code, manage interview time, take private notes, and select programming languages with syntax highlighting—all in a seamless, interactive environment.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published