Bifrost
Code Interview Management System


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
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.