Skip to content

kevinqiyefa/linkedlist-backend-API

Repository files navigation

LinkedList Project

LinkedIn/AngelList type of clone.

Backend

High-Level Requirements

  1. The backend should be a RESTful API using JSON.
  2. The server must be Node.js and Express.js, and the database must be PostgreSQL.
  3. The API must be built to spec according to the documentation on Apiary.
  4. The server must implement authentication using JWT and encrypt passwords in the database.
  5. The server must have automated endpoint tests, written with Jest/SuperTest, for each endpoint.
  6. (BONUS) The server must be deployed to Heroku.

Specific Requirements

  1. The server should validate bad inputs for every POST and PATCH request and issue 400 - Bad Request responses.
    • (BONUS) The server should validate proper email formats.
    • (BONUS) The server should validate proper URI formats.
  2. The server should issue 409 - Conflict responses when trying to create a username or company handle that already exists.
  3. Users cannot edit or delete users other than themselves.
  4. Companies cannot edit or delete companies other than themselves.
  5. Users can create, view, or delete job applications /jobs/:id/applications. Companies can only view or delete job applications.
  6. Companies cannot edit or delete job listings by other companies.
  7. Deleting a company should delete all of the jobs that the company posted.
  8. Deleting a company should make users who work at that company have null for their current_company fields.
  9. Hashed passwords should not be visible on any of the responses.
  10. (BONUS) For the following three endpoints: GET /users, GET /companies, GET /jobs implement offset and limit query parameters. For instance /users?limit=10 should return the first 10 users, and /users?offset=10&limit=10 should return the next 10 users.
  11. (BONUS) For the following three endpoints: GET /users, GET /companies, GET /jobs implement search queries, for instance /users?search=Matt+Lane should issue a search for Matt Lane in the database.

Backend Solution

Here is the instructor solution for the backend. There are instructions in this folder's README for how to run the app locally so you can build the frontend.

Frontend

Check out these mocks!

Technical

  1. The frontend should be a single page application that utilizes React and Redux.
  2. (BONUS) The frontend should be mobile-optimized.

Users Epic

  1. As a user, I should be able to sign up, which directs me to my feed.
  2. As a user, I should be able to log in, which directs me to my feed.
  3. As a user, I should have a feed which consists of the latest job listings.
  4. As a user, I should be able to have a resume which serves as my profile page.
  5. As a user, I should be able to visit a company's profile page.
  6. As a user, I should be able to visit another user's profile page.
  7. As a user, I should be able to apply to a job.
  8. As a user, I should be able to search for companies.
  9. As a user, I should be able to search for other users.
  10. (Bonus) As a user, I should be able to connect or disconnect with another user by clicking on a button on their profile page.
  11. (Bonus) As a user, I should have a feed of all of my connections.
  12. (Bonus) As a user, I should be able to upload a profile picture.
  13. (Bonus) As a user, I should be able to send a message to another user.
  14. (Bonus) As a user, I should be able to respond to a message.
  15. (Bonus) As a user, I should have a list of all of my messages from other users.

Companies Epic

  1. As a company, I should be able to sign up, which directs me to my job listings.
  2. As a company, I should be able to log in, which directs me to my job listings.
  3. As a company, I should have a feed which consists of all of my job listings.
  4. As a company, I should be able to visit my profile page when logging in.
  5. As a company, I should be able to add a job listing.
  6. As a company, I should be able to update a job listing.
  7. As a company, I should be able to remove a job listing.
  8. As a company, I should have a list of all of the users who applied to my job listings.
  9. As a company, I should be able to search for users.
  10. (Bonus) As a company, I should be able to upload a company logo.
  11. (Bonus) As a company, I should be able to respond to applicants.

About

linkedlist project backend using Node, Express and PostgreSQL

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •