Introduction
Overall Description
Regterschot Racing expects us to create an API where a member of the racecrew can view the data sent by a racecar in real-time. Regterschot expects this API to be deployed in a web-application and to have a stable connection with the database. It is important that the communication provides fast and reliable data to the website. The system needs to be easily expandable, so that it may be able to add new features in the future.
User Classes and Characteristics
For this product, we'll realise two types of users. Firstly, there's the crewmembers, who are our main scope. A crewmember can view a race and retrieve all of its real-time and past data. Second, there's the viewers, who can only view the race with a restricted set of data that is updated real time. Viewers can not select what kind of data they wish to see, all data that is visible for them will be visible at all time whilst watching the race.
These users can both log in into our web-application. A crewmember can see more options when logged in, as they can view back races and watch live races, whereas a viewer can only watch live races.
Operating Environment
Our web-application's back-end will be built in Java 17 and Maven and our front-end will be built in Angular 14.0 and Bootstrap 5.0. The application will run in Wildfly 25.0.0, which allows us to run the website locally. We will use Java Database Connection (JDBC) to establish a connection between our database and our web-application. We'll also use a Broker to establish a connection between the racecar's sensors and our application, which allows us to recieve a constant stream of data.
Design and Implementation Constraints
The product owner has not given a lot of constraints for this project. There are still a few technical limitations that limit our options. The car's data is being sent to the database twenty times per second. For constant streaming of data to the application, it is required to use TCP as a communication protocol.
Product Functions
The product must present data from the sensors of the racecar. The user is able to login to the site and choose how the data is presented. The product stores all the data from the sensor for future purposes.