This is an app to connect users to translators to help navigate difficult communication situations in foreign languages. You can see a live version by clicking the link below.
Clone the repository locally and create a .env file in the root of the project with the following environment variables defined
REACT_APP_API_KEY, REACT_APP_AUTH_DOMAIN, REACT_APP_PROJECT_ID, REACT_APP_STORAGE_BUCKET, REACT_APP_MESSAGING_SENDER_ID, REACT_APP_APP_ID
These are associated with your Firebase account and can be found in the bottom of "Project Settings" -> "General" of your associated Firebase project
This is the url of your PostgreSQL database in the following format: postgres://<username>:<password>@<url>:<password>/<database name>
Set this to true if running locally unless you modify the server to accept SSL connections (certain hosting services like Heroku support SSL by default so this isn't necessary if deploying to there)
This can be found on your project dashboard on your Twilio account
These can be found when you generate new API keys. Please follow the instructions at https://www.twilio.com/docs/glossary/what-is-an-api-key
- From a new terminal instance, navigate to the project's root directory and run "npm run knex apply:migrations"
- Start the server using the command "npm run dev:server"
- Start the client using the command "npm run dev:client" and access the app from localhost:3000
- From a new terminal instance, navigate to the project's root directory and run "npm run knex apply:migrations"
- Build the front-end using the command "npm run build:client"
- Start the server with the command "npm start" and access the appfrom localhost:5000
Database migrations can be run using the following commands
This will create a new migration file in the migrations directory
This will run any migration files that have yet to be run on the database
This will roll back to the previous migration
The following are the API endpoints used on the server
Takes in the room ID (:room) and username (:identity) and returns a Twilio access token
Returns data for all reservations in database
Returns data for all customers in database
Returns data for all translators in database
Returns data for resevation with matching id (:id)
Returns data for customer with matching id (:id)
Returns data for translator with matching id (:id)
Returns data for customer with matching google id (:id)
Returns data for translator with matching google id (:id)
Creates a new reservation
Creates a new customer
Creates a new translator
Modifies reservation with matching id (:id)
Modifies customer with matching id (:id)
Modifies translator with matching id (:id)
Deletes reservation with matching id (:id)
This was used to write the back-end for this app
This was used to write the server as well as create and handle the API endpoints
PostgreSQL was used as a database to store all the user and reservation information
Knex.js was used to architect and interact with the PostgreSQL database
React was used for creating the front-end for this app
Firebase was used to handle user login and authentication
Twilio was used on the back-end and front-end to allow users access to real-time video communicaiton