andrewjulian / phase-4-project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Project: Readit

Description

This single-page-application (SPA) uses a REACT front-end and a RAILS back-end with a PostgreSQL database to create a forum style application that allows users to signup/login in order to create questions associated with a course. Once questions are created users can add comments to either their own questions or questions created by others.

Additional features for users include the ability to HIDE their question from the "open questions" page, where others can see questions that are open for comments. In addition, only users can delete or hide questions that they created. These permissions are not afforded to other users.

Stack and Requirements

  • React
  • Ruby 2.7.4
  • NodeJS (v16), and npm
  • Postgresql
  • BCrypt

Setup

Install NodeJS

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

Install NodeJS

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

Install Postgresql

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.

PostgreSQL Installation for WSL

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.

Postgresql Installation for OSX

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

Troubleshooting

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 uninstall postgresql by running brew 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 run rails 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.

Using the Product

Once you have the repository stored locally, you can launch the application by running a rails server and starting the client in a local environment.

From there, creating a username and login will give you access to the application from a user perspective. In order to test the full functionality of the application, having two accounts is idea so that you can make sure permissions are set properly and that the user-only features are not provided to other non-users.

This application is NOT deployed, as there are other features such as search and filter options would ideally be included in a more complete version.

About

License:Other


Languages

Language:Ruby 57.9%Language:JavaScript 34.8%Language:CSS 4.2%Language:HTML 3.1%Language:Procfile 0.1%