A React listing tool that allows me to add races into a Firebase database
simcalendar
A listing tool that allows me to add races into a Firebase database, and then lets users filter by their favourite simracing game.
This project was bootstrapped with Create React App.
Getting started
In order to run this listing with your own projects you'll need an account with Firebase, and create a Realtime Database. Then create .env
file on your root with the following information, just replace the XXXXXXXX with your keys:
REACT_APP_API_KEY=XXXXXXXX
REACT_APP_AUTHDOMAIN=XXXXXXXX
REACT_APP_DATABASEURL=XXXXXXXX
REACT_APP_PROJECTID=XXXXXXXX
REACT_APP_STORAGEBUCKET=XXXXXXXX
REACT_APP_MESSAGINGSENDERID=XXXXXXXX
REACT_APP_APPID=XXXXXXXX
REACT_APP_MEASUREMENTID=XXXXXXXX
Create an admin user and set up rules
In order to add new races, you'll need to create an user on Firebase. This user will be also allowed to manage and create new races, so copy its UID, go to your Realtime Database and check the Rules
.
You'll need the following, just change youruid
:
{
"rules": {
"races": {
".read": true,
".write": "auth !== null && auth.uid === 'youruid'"
}
}
}
Adding new content
Once you've created a Firebase user and set up the database rules, visit /race-control/ to log in with the user you have just created, you'll see all your added races (at this point none) and be able to create new ones.
Scripts
In the project directory, you can run:
yarn start
- to run the page in development modeyarn build
- to create a build distribution ready to be pushed to whatever you're using to serve it
Contributing
There's a big piece missing in order to make this project successful, and that's a way for league managers to easily add their own races, instead of me having to manually add them to the system.
This could be an API they can call to publish their races, or more likely a league admin area were people can sign up and add their own content. That content will need to be reviewed before getting public in order to avoid spammers.
If you'd like to contribute just get in touch!