Bifrost

Code Interview Management System


TypeScript GoLang Redis Docker PostgreSQL Kubernetes Helm gRPC React Vite Personal Pinned
Interviewer Page
Interviewer Page
Interviewee Page
Interviewee Page

This project was carried out in personal time to effectively manage the increasing demand for code interviews in the workplace. Bifrost includes two SPAs for both the interviewer and interviewee. It also includes a mailing system to notify the interview's progress. Interviewers can submit their code and check the results in real-time.

flowchart LR
User--http---Envoy

subgraph Control ["API Server"]
rest_api["REST API"] & grpc_api["gRPC API"] --- Controller
end
Envoy---rest_api & grpc_api

Controller---DB[(PostgreSQL)] & Redis

DB---Agent
Redis---Agent

subgraph Docker
Worker
end
Agent-- Named Pipe ---Worker
System Overview

The server is divided into a API server and a processing server, with an independent message queue service in between for scalability. Duplicate tasks are prevented by utilizing atomic operations in the database during task requests. The processing server builds and runs the code inside a container to protect the host from the submitted code. Redis was used as a buffer to deliver real-time logs of the execution results of submitted code.