Skip to content

lerkasan/boanerges

Repository files navigation

Please visit the deployed project at http://lerkasan.net

The project is an interactive system that helps job seekers to practice answering technical interview questions.

The project embraces cutting-edge AI technologies and is built with the following technologies: ChatGPT API, AWS Polly and AWS Transcribe. Deepgram Stream API.

Generally speaking the project implements the "Talk to ChatGPT" feature.

In particular, users can select several topics that will be covered during the mock interview. Based on chosen topics, my application requests technical questions from ChatGPT. Afterward, AWS Polly service is used to synthesize speech based on text provided by ChatGPT. Next, the user starts answering the question. The user's speech is recorded and sent to Deepgram Stream API and AWS Transcribe services. Deepgram transcribes the realtime stream of user's speech and sends the text to my application to be displayed to the job seeker. Finally, the text of the transcribed user's answer is sent back to ChatGPT to be evaluated. ChatGPT returns a feedback to the job seeker and my application stores all information in a database.

In order to run the backend part of the project locally, you will need to have AWS account with permissions to access AWS Polly, AWS Transcribe, AWS S3, as well as OPEN AI account, and Deepgram account. Additionally, you would need to set up the following environment variables:

  • AWS_REGION
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_STS_ROLE_ARN
  • OPENAI_API_KEY
  • DEEPGRAM_API_KEY
  • DEEPGRAM_PROJECT_ID
  • MYSQL_ROOT_PASSWORD
  • DB_HOST
  • DB_NAME
  • DB_USERNAME
  • DB_PASSWORD
  • SMTP_USERNAME
  • SMTP_PASSWORD

How to build and run the project locally:

Backend: should be running on 9090 port

mvn clean package

java -jar target/boanerges-0.0.1-SNAPSHOT.jar

Frontend: should be running on 8080 port

npm ci

npm run build

npm run serve

Alternately, you can run the project using Docker Compose:

docker compose -f compose-dev.yml up

To stop the project, press Ctrl + C and run the following command: docker compose -f compose-dev.yml down

The project was built using the following technologies:

  • Java
  • Spring Boot
  • various AWS cloud services (AWS Polly, AWS Transcribe, S3, EC2, RDS, IAM, CodeDeploy)
  • Deepgram streaming speech recognition API
  • ChatGPT API
  • MySQL
  • Vue.js
  • Javascript
  • HTML
  • Docker
  • GitHub Actions
  • Terraform

text2speech.jpg

speech2text.jpg

Project infrastructure: infrastructure _final.jpg

Here is a database schema of the project: database_schema.png

In order to run the project locally in Docker, you need to have the following dependencies installed:

  • Docker
  • Docker Compose
  1. Set up environment variables:
  • AWS_REGION
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_STS_ROLE_ARN
  • OPENAI_API_KEY
  • DEEPGRAM_API_KEY
  • DEEPGRAM_PROJECT_ID
  • MYSQL_ROOT_PASSWORD
  • DB_HOST
  • DB_NAME
  • DB_USERNAME
  • DB_PASSWORD
  • SMTP_USERNAME
  • SMTP_PASSWORD

Example: export MYSQL_ROOT_PASSWORD=myextremelysecurepassword

  1. Clone source code from this repository

  2. Open directory with the source code: cd boanerges

  3. Run the project: docker compose -f compose-dev.yml up

  4. Open http://localhost URL in your browser.

  5. To stop the project, press Ctrl + C and run the following command: docker compose -f compose-dev.yml down