This project is under development
This is an application that allows collect, share and get answers to Java interview questions. This bot is developed to help with interview preparation. Telegram Bot application is developed with Spring Boot framework and PostgreSQL database. Buttons and commands are presented as Controller endpoints, and logic is implemented in Service classes with JPA Repository injection.
Introduction
Technologies stack
Short classes and repositories structure overview
Functionality description
Database structure
Conclusion
Spring boot
PostgreSQL
JUnit
Telegram Bot API
Amazon AWS
There is a simple for code review structure that divides files according to their purpose and functionality:
bot repository where all the classes and interfaces related to the Bot entity are placed, including session, messages sender implementation, model and configuration file.
controller repository contains classes that allows to handle requests from UI as well as web controller class with endpoints for database administration.
domain repository contains classes of POJO entities that is related to database development.
repository contains interfaces that extend JpaRepository interface and may include custom SQL requests to database.
service repository contains interfaces with methods related to the logic of the application. There are also classes with realisations of methods in service interfaces. Methods are related to requests from UI logic and also entities CRUD methods.
The list of commands allowed in this bot:
/start
Allows begin working with the bot in telegram application
/reset
Allows return to the main menu and reset all the requests before
/help
Sends message with the functionality and main commands description
The list of possible actions that this bot can handle
Read Java questions and answers
All questions divided into categories and levels.
Send request for adding new question
Each user can be an author of questions by sending request for verification.
Pass an interview
User can try to pass an interview and answer several questions from each topic according to user's level of knowledge.
This project helps me to fill out my gaps before interviews and make my knowledge base stronger. Moreover, I practiced with Spring boot framework and tried to create clear and scalable application.