This repository is part of score guessing app project containing frontend and backend implementation. Here you can find fully implemented backend an frontend implementation that is ready to be cloned and used. You can try the app here: https://guess-the-score.netlify.app/
Once reached the page you can either try the app with test user or creating your own account. Once logged in user is displayed the app with today's games, one selected game, scoreboard and laegue scoreboard.
- Node.js
- Sequelize ORM
- express.js
- Faker library for tests and init data
- React.js
- React redux
- Material UI + inline css
Data in the app is passed via API between backend and frontend. I created multiple routes that provide data for actual events, user scores, current games score, scoretable, league scoreboard and also the ones to create new leagues or guess the score. Frontend by sending multiple requests reaches that data and displays it. User can interact with the data and frontend takes care of the rest by sending PUT or POST requests.
Football data is fully provided by the Football-Data.org API. Multiple functions create requests to reach that data and save it in my own database. At the init run of the app all teams, competitions and events are fetched from external API and saved to my database. All live scores are updated every minute also by sending requests and data is updated in my DB. This assures that limit for calls to external API is never reached and multiple users can interact with the data. This solution is also much safer, if anything wrong happens with external API then it can be changed to another one without using any previous data.
For storing data this project uses database as previously mentioned. Localy using SQLite, in production server I decided to switch to MySQL. To communicate with DB from the server I decided to use Sequelize ORM which allows to write clean, SQL free code. Created tables store data such as User's data, events, competitions, scores, league tabels, scoreboard and much more. DB diagram can be seen below.

The app was based on React with some reusable components for example the ones responsible or displaying game info or scoretable. Material UI provided me with some ready to use components. Some of the components had to be created from the scratch. Styling in the app was achived by using inline css.
Since a lot of components of the app use anothers component's state I decided to take adventage of redux library which is my state manager for this project. Creating multiple slices esiecially for events, authorization, scoreboard or event handling allowed me to easily pass the data and make the flow very simple.
Clone repo
git clone https://github.com/FilipZmija/ChatApp-backend.git
Install dependencies
cd ChatApp-backend
cd backend
npm install
Start development server
node index.js
cd ChatApp-backend
cd frontend
npm install
Start development server
npm start





