The main task of the system is to notify users about upcoming cultural events (concerts, theatrical performances, etc.) taking into account their interests, chosen location and preferred method of communication. This application serves as an advertising platform for various events, which organizers are interested in attracting the target audience.
The base of contact data for notification is created based on visitor surveys held on the days of events. Visitors who want to keep updated later can leave their data to the volunteers (the city in which they would like to know about the events, events of interest, topics and musical genres, as well as a convenient way of communication for notification: SMS, e-mail, Viber, Telegram).
After collecting information, the volunteer enters the user into the general database. After that, depending on the selected criteria, the contact is included into a specific group. It provides additional flexibility when sending notifications. Visitors interested in a particular event are selected based on the tags and event location. For example, the contact person mentioned in the questionnaire that he or she lives in New York city, listens to rock music and is a frequent theatre-goer. When an event that matches his or her interests and location is registered in the system, the contact person is included into a group that the organizer can choose as a target one. So, the system makes it possible to notify only interested users about the event.
The system has a user-friendly web interface and functionality for several roles: volunteers, organizers and the administrator:
The possibility to notify users via e-mail and SMS was implemented. For the purposes of horizontal scaling and expandability of communication methods, each notification channel is implemented as a separate, independent module. So, over time, additional modules for notification can be developed, while in the process of their creation and testing other modules will continue to work stably. All modules interact using RabbitMQ queues. They can run on the same or on different servers (which may be needed to distribute the load in case of a large number of users).
The potential of the service is not limited by anything: you can create any events, inform users in any existing way. There is a promising opportunity to integrate the largest ticket sales platforms or build your own payment system.
The Keep Them All project has a frontend part, which is implemented on the popular ReactJs framework, and a backend part built on the basis of Java REST API services (Spring MVC). The project also uses JavaMail API, RabbitMQ, Jenkins, Docker. Java developers used JUnit + Mockito to write tests.
Stack: Java, JavaMail API, Spring, Apache Maven, Apache Tomcat.
Frontend: JavaScript, ReactJS.
Infrastructure: Jenkins, Docker, Git/Gerrit, IntelliJ IDEA, Jira.
Message broker: RabbitMQ.
Test Automation libraries: JUnit + Mockito.
DB: MySQL.