/phoenix

Phoenix is a job hunting application for mid-career professionals to track where they are in their job-pipeline. (Final Group Project)

Primary LanguageJavaScript

Phoenix - Job Hunting Application

Phoenix is a desktop web application which helps job seekers approach their job search as they would their daily work. With a focus on mid-career professionals, Phoenix allows registered users to identify goals and daily tasks while tracking their progress through the application and interview process. The simple interface displays upcoming tasks, job related contacts, and career goals in one place so users can stay organized and motivated.

This version uses React, Redux, Express, Passport, and PostgreSQL (a full list of dependencies can be found in package.json).

We STRONGLY recommend following these instructions carefully. It's a lot, and will take some time to set up, but your life will be much easier this way in the long run.

Built With

This version uses React, Redux, Express, Passport, and PostgreSQL. Additional Technologies listed below (see "Additional Technologies Used"), and a full list of dependencies can be found in package.json.

Getting Started

Prerequisites

Before you get started, make sure you have the following software installed on your computer:

Create database and table

Create a new database called phoenix and create tables using the SQL commands located in the database.sql file

If you would like to name your database something else, you will need to change phoenix to the name of your new database name in server/modules/pool.js

Installation Instructions

  • Run npm install
  • Create a .env file at the root of the project and paste this line into the file:
    SERVER_SESSION_SECRET=superDuperSecret
    
    While you're in your new .env file, take the time to replace superDuperSecret with some long random string like 25POUbVtx6RKVNWszd9ERB9Bb6 to keep your application secure. Here's a site that can help you: https://passwordsgenerator.net/. If you don't do this step, create a secret with less than eight characters, or leave it as superDuperSecret, you will get a warning.
  • Start postgres if not running already by using brew services start postgresql
  • Run npm run server
  • Run npm run client
  • Navigate to localhost:3000

Debugging

To debug, you will need to run the client-side separately from the server. Start the client by running the command npm run client. Start the debugging server by selecting the Debug button.

VSCode Toolbar

Then make sure Launch Program is selected from the dropdown, then click the green play arrow.

VSCode Debug Bar

Testing Routes with Postman

To use Postman with this repo, you will need to set up requests in Postman to register a user and login a user at a minimum.

Keep in mind that once you using the login route, Postman will manage your session cookie for you just like a browser, ensuring it is sent with each subsequent request. If you delete the localhost cookie in Postman, it will effectively log you out.

  1. Start the server - npm run server
  2. Import the sample routes JSON file by clicking Import in Passport. Select the file.
  3. Click Collections and Send the following three calls in order:
    1. POST /api/user/register registers a new user, see body to change email/password
    2. POST /api/user/login will login a user, see body to change email/password
    3. GET /api/user will get user information, by default it's not very much

After running the login route above, you can try any other route you've created that requires a logged in user!

Screen Shots

Dashboard View

Dashboard

Tasks View

Tasks

Job Pipeline View

Job Pipeline

Add New Job Opportunity View

Job Opportunity

Contact Book

Contacts

Profile & Important Job Attributes

Profile

Production Build

Before pushing to Heroku, run npm run build in terminal. This will create a build folder that contains the code Heroku will be pointed at. You can test this build by typing npm start. Keep in mind that npm start will let you preview the production build but will not auto update.

  • Start postgres if not running already by using brew services start postgresql
  • Run npm start
  • Navigate to localhost:5000

Lay of the Land

  • src/ contains the React application
  • public/ contains static assets for the client-side
  • build/ after you build the project, contains the transpiled code from src/ and public/ that will be viewed on the production site
  • server/ contains the Express App

This code is also heavily commented. We recommend reading through the comments, getting a lay of the land, and becoming comfortable with how the code works before you start making too many changes. If you're wondering where to start, consider reading through component file comments in the following order:

  • src/components
    • App/App
    • Footer/Footer
    • Nav/Nav
    • AboutPage/AboutPage
    • InfoPage/InfoPage
    • UserPage/UserPage
    • LoginPage/LoginPage
    • RegisterPage/RegisterPage
    • LogOutButton/LogOutButton
    • ProtectedRoute/ProtectedRoute

Deployment

  1. Create a new Heroku project
  2. Link the Heroku project to the project GitHub Repo
  3. Create an Heroku Postgres database
  4. Connect to the Heroku Postgres database from Postico
  5. Create the necessary tables
  6. Add an environment variable for SERVER_SESSION_SECRET with a nice random string for security
  7. In the deploy section, select manual deploy

Authors

Viji Mano Meyer H. Meyer Pete St. Martin Johnnie Walters

Acknowledgements

Dane Smith Dev Jana Ally Boyd Chris Black Luke Schlangen Kris Szafranski Mary Mosman Baconian Cohort