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
Here is a database schema of the project:
In order to run the project locally in Docker, you need to have the following dependencies installed:
- Docker
- Docker Compose
- 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
-
Clone source code from this repository
-
Open directory with the source code:
cd boanerges
-
Run the project:
docker compose -f compose-dev.yml up
-
Open http://localhost URL in your browser.
-
To stop the project, press
Ctrl + C
and run the following command:docker compose -f compose-dev.yml down