Contents:
- Spec
- User Stories
- Feature List
- Models
- Technologies
- Why These
- Installation
- Usage Examples
- Development Setup
- Release History
- TODO
- Meta
- Contributing
This idea had come out of our company ClickCleanit losing a valuable client due to miscommunication between our company and sub-contractors regarding job details. I felt we needed more of our communications recorded and sent digitally.
I then realised this is something that is faced by a lot of other companies in this industry so I decided to develop a demo product that provides a solution to this problem.
I spoke to the other co-founders to find out what their needs was in a system like this and I developed a spec based on this.
Our users can buy a monthly account (or use a demo account in this instance) so that they can hold all their contractor details and assign jobs via the JobSlink system.
Users can assign them manually or decide that they can let JobSlink assign them automatically, according to job acceptance rate and how close that contractor is to the job.
The aim is to automate job allocation in order to free up time for business owners and staff management to focus on more important tasks.
Job assignments are sent via SMS and all a contractor has to do is reply 'OK' to accept a job.
When the job is finished, the contractor replies 'DONE' & the job will be marked as complete on the system.
This can potentially save businesses a lot of time especially when it comes to routine tasks that do not need a certain level of Owner-Contractor communication.
As a User,
So that I can have contractors details on standby,
I want to be able to save their details to a contact list.
As a User,
So that I can manage my contact book,
I want to be able to add, remove and edit contacts at will.
As a User,
So that my contractors can get job details,
I want to be able to assign jobs to workers on the contact list.
As a User,
So that I can know which contractor done a certain job last week,
I want to be able to view a contractors jobs history.
As a User,
So I can check if there are any outstanding jobs,
I want to able to check complete and incomplete jobs.
As a User,
So I can assign a job to the closest contractor,
I want to be able to view contractors by area.
As a Contractor,
So I can know where to go to complete a job,
I want to receive a text with the time and location details of a job.
As a Contractor,
So I can let the employer know I have accepted the job,
I can reply 'OK' to a job text to mark it as accepted.
As a Contractor,
So I can let the employer know I have finished their job,
I can reply 'DONE' to a job text to mark it as complete.
Users can
- CRUD Contractors
- CRUD Jobs
- Assign Jobs to contractors
- Send Contractors Job details
Users can:
- Check contractors by location
- Check contractors by acceptance rate
- auto-allocate job to nearest contractor
- auto-allocate job by acceptance rate.
Contractors can:
- Reply OK to SMS to accept jobs
- reply DONE to indicate job finished
- find out if job allocated has already been accepted by the time they reply OK
React Native APP
1st Proposal Class Diagram
2nd Proposal Class Diagram
- Javascript
- Node.JS
- Prism
- GraphQL
- React
- ESLint (Linting)
- Jest (Testing)
- Enzyme (Testing)
- Nightmare JS (Integration/ BDD Testing)
- CodeClimate(Coverage)
- TravisCI (CI/CD)
- AWS
I wanted to develop my Javascript development skills while at the same time using brand new tech that I've not used before so that it provides me with enough technical challenge to make this a great learning experience.
I've been reading a lot about GraphQL as I really like how easy queries are to write compared to things like SQL. GraphQL makes it super easy to expand and manipulate info from your API. I feel like this would be a great project to test this out and keep things interesting.
After researching testing technologies for React, I decided to go with Jest, Enzyme & NightmareJS. I had been recommended these two by various Makers Academy alumni who test and develop React web apps in production.
Using TravisCI and AWS will allow me to develop my devops skills. Being able to deploy features as part of a dev team means this is an important part I need to master.
I also get to use a new style of git workflow which is more developer/contributor friendly than I previously have done on solo projects.
All in all this is a good project to test my technical ability and so I can assess my internal thought processes when it comes to software development.
Describe how to install all development dependencies and how to run an automated test-suite of some kind. Potentially do this for multiple platforms.
make install
npm test
Alfie Darko – me@alfiedarko.co.uk
Distributed under the MIT license. See LICENSE
for more information.
https://github.com/AlfieDarko/job-slink
- Fork it (https://github.com/AlfieDarko/job-slink/fork)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request