Team | User stories | Getting started | How to use | Our approach | Testing | Deployment | Contributing
PetHub is an application that helps reunite lost pets with their owners, built using a Rails API and a React.js frontend.
Live site: https://pet-hub.herokuapp.com
API: https://pet-hub-api.herokuapp.com
Frontend repo (React.js): http://github.com/tomasdoh/PetHub-frontend
- Creating, showing, updating and deleting listings for lost and found pets
- Communicating with the PetHub API via JSON, persisting the data in a PostgreSQL database
- User authentication using JWT tokens In development
- Images can be uploaded for each listing, stored using Active Storage and Amazon S3.
- Integration with Google Maps Places, Geocoding and Javascript APIs for form autofill and embedded maps
- Chat room feature using Websockets and Action Cable
- Email/text message alerts In development
Read all of the user stories here
To run the application and test suites locally, clone this repo for the API and clone the front-end repo for the application's client.
To launch the API on port 3001:
cd PetHub-backend
bundle install
bin/rails server -p 3001
To launch the client on port 3000:
cd PetHub-frontend
npm install
npm start
In order to get the app to work locally, you may need to change the configuration of the URLs used for API requests. Head to PetHub-frontend/src/constants/index.js
to check that the local URLs are being used for fetch requests.
User journey and screenshots to be included here
2 day sprints and tracking our learning via a wiki
We used RSpec to test the API, Jest to test the React.js components, and Cypress to run integration tests. We have also used Travis CI as a continuous integration service throughout the development process.
To run the API tests (RSpec):
cd PetHub-backend
bundle install
rspec
To run the React.js component tests (Jest):
cd PetHub-frontend
npm install
npm test
To run the integration tests (Cypress):
cd PetHub-frontend
npm install
node_modules/.bin/cypress open
PetHub has been deployed using Heroku.
We welcome contributions to the project. Before making a change, please first discuss the contribution you wish to make via issue, email, or any other method with the project team.