LinkedIn/AngelList type of clone.
- The backend should be a RESTful API using JSON.
- The server must be Node.js and Express.js, and the database must be PostgreSQL.
- The API must be built to spec according to the documentation on Apiary.
- The server must implement authentication using JWT and encrypt passwords in the database.
- The server must have automated endpoint tests, written with Jest/SuperTest, for each endpoint.
- (BONUS) The server must be deployed to Heroku.
- 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.
- The server should issue
409 - Conflict
responses when trying to create ausername
or companyhandle
that already exists. - Users cannot edit or delete users other than themselves.
- Companies cannot edit or delete companies other than themselves.
- Users can create, view, or delete job applications
/jobs/:id/applications
. Companies can only view or delete job applications. - Companies cannot edit or delete job listings by other companies.
- Deleting a company should delete all of the jobs that the company posted.
- Deleting a company should make users who work at that company have
null
for theircurrent_company
fields. - Hashed passwords should not be visible on any of the responses.
- (BONUS) For the following three endpoints:
GET /users
,GET /companies
,GET /jobs
implementoffset
andlimit
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. - (BONUS) For the following three endpoints:
GET /users
,GET /companies
,GET /jobs
implementsearch
queries, for instance/users?search=Matt+Lane
should issue a search forMatt Lane
in the database.
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.
Check out these mocks!
- The frontend should be a single page application that utilizes React and Redux.
- (BONUS) The frontend should be mobile-optimized.
- As a user, I should be able to sign up, which directs me to my feed.
- As a user, I should be able to log in, which directs me to my feed.
- As a user, I should have a feed which consists of the latest job listings.
- As a user, I should be able to have a resume which serves as my profile page.
- As a user, I should be able to visit a company's profile page.
- As a user, I should be able to visit another user's profile page.
- As a user, I should be able to apply to a job.
- As a user, I should be able to search for companies.
- As a user, I should be able to search for other users.
- (Bonus) As a user, I should be able to connect or disconnect with another user by clicking on a button on their profile page.
- (Bonus) As a user, I should have a feed of all of my connections.
- (Bonus) As a user, I should be able to upload a profile picture.
- (Bonus) As a user, I should be able to send a message to another user.
- (Bonus) As a user, I should be able to respond to a message.
- (Bonus) As a user, I should have a list of all of my messages from other users.
- As a company, I should be able to sign up, which directs me to my job listings.
- As a company, I should be able to log in, which directs me to my job listings.
- As a company, I should have a feed which consists of all of my job listings.
- As a company, I should be able to visit my profile page when logging in.
- As a company, I should be able to add a job listing.
- As a company, I should be able to update a job listing.
- As a company, I should be able to remove a job listing.
- As a company, I should have a list of all of the users who applied to my job listings.
- As a company, I should be able to search for users.
- (Bonus) As a company, I should be able to upload a company logo.
- (Bonus) As a company, I should be able to respond to applicants.