This application allows the client to create a user, login with that user's information (username and password), and do the following: browse among recipes, create a recipe, delete their own recipes, edit recipes, view reviews of those recipes, create a review, edit a review, delete reviews of recipes. The user can also edit and delete their own profile. You can find the deployed website here.
- Ruby 2.7.4
- NodeJS (v16), and npm
- Heroku CLI
- Postgresql
See Environment Setup below for instructions on installing these tools if you don't already have them.
- Fork and clone this repository.
- Install gems
bundle install
. - Install dependencies
npm install --prefix client
. - Run the backend with
rails s
- Run the frontend with
npm start --prefix client
.
- The user can create an account and login to that account.
- The user can create their own recipes and reviews, as well as edit and delete them.
- The user can only create, edit, and delete their own recipes and reviews.
- Organized code structure by separating components into folders
- Organized web page by separating components through the NavBar and the user NavBar
- Utilize inverse data flow by sending props between parent and child components
- Established authentication and authorization for each user
- Utilized controllers to bring data from the PostgreSQL database to the frontend
- Utlized serializers to show and organize data on the frontend easily
- React.js
- React Router
- Ruby on Rails
- ActiveRecord
- PostreSQL
- HTML/CSS
- Material UI
Verify which version of Ruby you're running by entering this in the terminal:
ruby -v
Make sure that the Ruby version you're running is listed in the supported runtimes by Heroku. At the time of writing, supported versions are 2.6.8, 2.7.4, or 3.0.2. Our recommendation is 2.7.4, but make sure to check the site for the latest supported versions.
If it's not, you can use rvm
to install a newer version of Ruby:
rvm install 2.7.4 --default
You should also install the latest versions of bundler
and rails
:
gem install bundler
gem install rails
Verify you are running a recent version of Node with:
node -v
If your Node version is not 16.x.x, install it and set it as the current and default version with:
nvm install 16
nvm use 16
nvm alias default 16
You can also update your npm version with:
npm i -g npm
Sign Up for a Heroku Account
You can sign up at for a free account at https://signup.heroku.com/devcenter.
Download the Heroku CLI Application
Download the Heroku CLI. For OSX users, you can use Homebrew:
brew tap heroku/brew && brew install heroku
For WSL users, run this command in the Ubuntu terminal:
curl https://cli-assets.heroku.com/install.sh | sh
If you run into issues installing, check out the Heroku CLI downloads page for more options.
After downloading, you can login via the CLI in the terminal:
heroku login
This will open a browser window to log you into your Heroku account. After
logging in, close the browser window and return to the terminal. You can run
heroku whoami
in the terminal to verify that you have logged in successfully.
Heroku requires that you use PostgreSQL for your database instead of SQLite. PostgreSQL (or just Postgres for short) is an advanced database management system with more features than SQLite. If you don't already have it installed, you'll need to set it up.
To install Postgres for WSL, run the following commands from your Ubuntu terminal:
sudo apt update
sudo apt install postgresql postgresql-contrib libpq-dev
Then confirm that Postgres was installed successfully:
psql --version
Run this command to start the Postgres service:
sudo service postgresql start
Finally, you'll also need to create a database user so that you are able to connect to the database from Rails. First, check what your operating system username is:
whoami
If your username is "ian", for example, you'd need to create a Postgres user with that same name. To do so, run this command to open the Postgres CLI:
sudo -u postgres -i
From the Postgres CLI, run this command (replacing "ian" with your username):
createuser -sr ian
Then enter control + d
or type logout
to exit.
This guide has more info on setting up Postgres on WSL if you get stuck.
To install Postgres for OSX, you can use Homebrew:
brew install postgresql
Once Postgres has been installed, run this command to start the Postgres service:
brew services start postgresql
If you ran into any errors along the way, here are some things you can try to troubleshoot:
-
If you're on a Mac and got a server connection error when you tried to run
rails db:create
, one option for solving this problem for Mac users is to install the Postgres app. To do this, first uninstallpostgresql
by runningbrew remove postgresql
. Next, download the app from the Postgres downloads page and install it. Launch the app and click "Initialize" to create a new server. You should now be able to runrails db:create
. -
If you're using WSL and got the following error running
rails db:create
:PG::ConnectionBad: FATAL: role "yourusername" does not exist
The issue is that you did not create a role in Postgres for the default user account. Check this video for one possible fix.
-
If your app failed to deploy at the build stage, make sure your local environment is set up correctly by following the steps at the beginning of this lesson. Check that you have the latest versions of Ruby and Bundler, and ensure that Postgresql was installed successfully.
-
If you deployed successfully, but you ran into issues when you visited the site, make sure you migrated and seeded the database. Also, make sure that your application works locally and try to debug any issues on your local machine before re-deploying. You can also check the logs on the server by running
heroku logs
.
For additional support, check out these guides on Heroku: