Giter Club home page Giter Club logo

acquire_a_hire's Introduction

Acquire A Hire

Acquire A Hire is a Rails-based web application that allows users to post jobs and hire professionals, and allows professionals to bid on jobs.

Installation

Acquire A Hire uses Ruby 2.3.0 and Rails 5.0.0.1. Run the command bundle install to install necessary gems.
NOTE: Do not run bundle update, as this will update to a version of Capistrano that is incompatible with our server.

Deployment

To deploy Acquire A Hire, run the command bundle exec cap production deploy.

Database

To create the database, run the command rake db:{create,migrate}. Seed data for requesters, professionals, jobs, and reviews is also included in the project. To import this data into your database, run rake db:seed.

Testing

First, update the test databases with the command rake db:test:prepare. Following this, use the command rspec to run the test suite.

API

OAuth 2.0 Handshake

Acquire A Hire uses the OAuth 2.0 protocol to receive a token for API requests.

  • First, register your application on Acquire A Hire. You will receive an API key and secret.
  • To authorize a user, have them make a GET request to '/api/oauth/authorize' with the parameters:
    • api_key (The key you received in step 1)
    • redirect_url (The url that you would like OAuth authorizations to redirect to)
  • The user will then be directed to a page where they can fill in an email and password that are associated with Acquire A Hire.
  • If they successfully login, they will be able to click a button to authorize your application to access their Acquire A Hire account.
  • Following this, the user will be directed to the redirect path you specified earlier, with their OAuth access code as a parameter.
  • Once a user has gone through these steps to be authorized, you may make a GET request to 'api/v1/oauth/token' with the parameters:
    • api_key (the API key for your application)
    • secret (the secret for your application)
    • code (the code that was given to a user upon authorizing the app)
    • redirect_url (the URL to redirect to)
  • If successful, this request will return a 201 response with an access token. Otherwise, it will return a 403 response.

API Endpoints

  • To send a message, make a POST request to /api/v1/jobs/:job_id/message.json with the parameters:
    • body
    • subject
    • token
    • recipient_id
  • To see all messages for a user, make a GET request to /api/v1/jobs/:job_id/messages.json with the parameter:
    • token
  • If this is successful, you will receive a response with a status of 200 and an array of all messages for that user regarding that job.

Authors

Brendan Dillon
Susi Irwin
Jean Joeris
Ryan Workman

acquire_a_hire's People

Contributors

jeanjoeris avatar rdavid1099 avatar rvna avatar susiirwin avatar

Watchers

 avatar  avatar  avatar  avatar

acquire_a_hire's Issues

professional sees their messages

As a logged in professional
When I visit my dashboard
and I click "my messages"
I expect to see a list of messages with requesters

CSS

walk through user experience, adding basic styling and bug fixes as you go

API creation of message

Given a job exists
I send the message data to '/api/v1/job/:job_id/new_message'
And receive a status code 200 if it successfully sent

Post listings or content either publicly or privately.

As a Registered Requestor,
I can click Start a Project
and fill out the name of my project
and fill select checkboxes next to the skills needed
and fill in dates of project
and budget
so that I can enter a proposal to get a contractor.

Professional sees jobs

As a logged in Professional I should be able to see all work I have applied for grouped by Outstanding Bids and Accepted Jobs/Clients

Logged in requester reviews professional

As a Logged in requester
when I visit a job assigned to me
and I click a "review professional" button
and I put in my review
and I select a rating
and I click submit
I expect the review text and the rating

Admin dashboard

As a Platform Admin, i log in to the site
I see a dashboard with all users of the site listed in 2 groups: users and professionals
in alphabetical order by last name

Professional sends message

As a professional,
When I view a job that is available to me,
I can click "Send a message"
And I enter a message body
And click "Send"
Then I will see a conversation that I have started with the requester of that job

api key

As a user
when I visit "/api/api_key"
I expect to see my api key

User Messaging

As a Logged in professional,
I visit a job and click send a message
I can send a message to the requester to discuss the project

show job details

As a user
when I visit a job's page
I expect to see the jobs title
and "Skill: #{job skill}"
and "Price: $#{min_price} - $#{max_price}"
and the job's description
and a button to "send message" (don't worry about functionality of button)

Manage my account information.

As a Registered Requestor,
I can click on Edit my Profile
and see page /user/#/edit
and update my name
and update my email
and update my phone number
and update my password

Professional Message

As a Logged in Professional
I can send a message to a User
and add and estimate

User sees Requests

as a logged in user, I should be able to see all projects I have listed

Project status change

Once a project is assigned to a professional, it should no longer be listed publicly.

User creates account

As a guest user
When I visit "/signup"
And I fill in Email with "[email protected]"
And I fill in Password with "password"
And I fill in Password Confirmation with "password"
And I fill in Phone Number with ""
And I click Submit

Then my account should be created but inactive
And I should be redirected to "/confirmation"
And I should see instructions to enter my confirmation code
And I should have received a text message with a confirmation code

When I enter the confirmation code
And I click "Submit"
Then I should be redirected to "/dashboard"
And my account should be active

requester creates a job

As a requester
when I log in
and I click "New Project" on my dashboard
and I fill in the project details
I expect to see it under my open job listing

GET /api/v1/:job_id/messages

Given a job exists
And my API key is connected to my user
And my user has permission to comment on this job
And the job has 3 messages (2 from the contractor, 1 from requester)
When I send a GET request to '/api/v1/jobs/:job_id/messages/' with data "{api_key: SOME_KEY}"
Then I should receive a status code 200
And I should see a JSON response with an array of JavaScript objects
And each object should have a poster_id, body, and created_at

Wireframe Start a New Project

As a Registered when i click Start a New project
I see a form for a new project.
When I select a relevant skill for the project
And I enter a description of the project
And I click a submit button
I am taken to a list of projects I have created.

User Dashboard for Registered User

As a Registered User
I login
I see a User Dashboard with my account information laid out on the screen.
I will see Start a New Project in my Nav Bar.

requester sees their jobs

As a requester
when I log in
I expect to see my in progress jobs
and I expect to see my open jobs

Logged in professional reviews requester

As a Logged in Professional
when I visit a job assigned to me
and I click a "review requester" button
and I put in my review
and I select a rating
and I click submit
I expect the review text and the rating

Requester sends message

As a requester,
When I view a conversation,
I can click "Send a message"
And enter the message I would like to send
And I see the conversation with my message in it.

Manage my profile / content.

As a Registered user I can
click on Manage my Profile and
update my project names
and update project dates
and update project budgets
and delete a project

Wireframes - Professional Logged In

As a Professional User after I log in
I see a link in the Navbar to "Add Skill"
I click that link and I see a form to add a skill to my profile.
i can choose a category from a dropdown (single select).
I can click Save Skill Button.

seed data

use faker to create seed data -
1000 total registered users (1/2-1/2 requester-pro)
5 - 10 postings per user

user sees message chain

As a logged in user
when I visit my dashboard
and I click " my messages"
and I click on one of the message chains
I expect to see the message chain sorted be decreasing created_at

requester sees their messages

As a logged in requester
When I visit my dashboard
and I click "my messages"
I expect to see a list of messages with professionals

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.