Fern Herm is a mobile-focused web service connecting users to the perfect pet and/or plant sitter.
The name of our app Fern Herm is a play on words from the iconic 1980's Film E.T. the Extra-Terrestrial and the character's "Phone Home" line. Our app allows users to find potential sitters for their pet or plant or, conversely, allows potential sitters to find a job looking after someone is while they are away from home. Users can post job listings, setup a profile for themselves, their pets, and their plants, view others' profiles, communicate with each other using our live chat feature, find interesting local events, use our built-in map and calendar features to keep organized, and even look up information regarding plant or animal species/breeds with which they might be unfamiliar.
NOTE: This app was built using a Mac OS and WSL (Windows Subsystem for Linux) environment, Node.js v14, Git, and PostgreSQL v12 and can be considered prerequisites for the installation of the app.
- Node - Runtime Environment
- Git - Version Control System
- TypeScript - JavaScript superset
- Express - Back-End Web Framework
- React - Front-End JavaScript Library
- Redux - State Management Framework
- PostgreSQL - Relational Database Management System
- Sequelize - Object–relational mapping tool
- Bootstrap - CSS Framework
- AWS Elastic Compute Cloud (EC2) - Cloud Computing Platform for Hosting Web Server
- AWS Relational Database Service (RDS) - Relational Database Service
- Nginx - Web Server Platform
- pm2 - Process Management System
- socket.io - Web Socket Library
- Passport - Authentication Framework
- Axios - HTTP Client Library
- Mapbox - Geocoding and Reverse Geocoding Library
- Cloudinary - Image Library
- Eslint - Code Analyzer
- Webpack - Bundler
- Babel - Transpiler
# install dependencies
$ npm install
# WSL users
# start postgresql service
$ sudo service postgresql start
# connect to postgres shell
$ sudo -u postgres psql
# MAC users
# start postgresql service
$ postgres -D /usr/local/var/postgres
# connect to postgres shell
$ psql postgres
# ALTER USER postgres CREATEDB
/* check permissions */
# \du
/* change password if needed */
# \password new_password
/* create database */
# CREATE DATABASE db_name;
/* check that database was created */
# \l
/* quit shell if desired */
# \q
# create .env file
$ touch .env
# .env file contents
# Client
PORT=
CLIENT_URL=
# Database
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE=
DB_HOST=
DB_DIALECT=
DB_PORT=
# Google OAuth
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
SESSION_SECRET=
#Mapbox
MAPBOX_TOKEN=
#Cloudinary
CLOUDINARY_NAME=
CLOUDINARY_PRESET=
# Build the app
$ npm run build
# Run the app
$ npm run start