- There is no time limit to this test however please note how long you have spent on the project.
- Please duplicate the project to a public GitHub repository, and invite the reviewer to the repository when you've completed the assessment. We want to see good commit hygiene.
- Please note there are many ways to implement the requirements below, well articulated communication/or documentation is key to "why" you have implemented a certain way.
You have recently been employed at Farmer Joe's Company to help develop some internal applications to manage the running of their farming business. The team have just recently completed their backlog refinement and sprint planning. They have committed to completing the following tasks for this sprint:
- As a logged in
Administrator
, I can see a list of users including bothContractor
users data and allAdministrator
users data, so that I can have visibility of all contractors and administrators across my company. - As a logged in
Administrator
, I can see a list of all theOrganisation
's in the system. - As a logged in
Administrator
, I can create a newOrganisation
. - As a logged in
Administrator
, I can create new a new user including selecting if they are aAdministrator
orContractor
and their associatedOrganisation
, so that when a new contractor or administrator starts, I have a system to record their information.
Tasks that will help achieve implement the user stories above:
- Extending
users
table to have bothADMIN
andCONTRACTOR
users. - Create seeders to create organisations and users, including admin users.
- Write tests where applicable.
- Clean and quality code
- Good code structure.
- We love comments and documentation.
- Database: MySQL
- Backend Framework: Laravel
- Frontend: React (preferred) / Vue
- Docker
- Please do not use CRUD generators and admin packages.
- No hosting needed.
- Please use a LTS version of Node, i.e. version 16 LTS
- NPM is required to be installed.
- Docker is required to run this project.
- This project can be run on Windows, Linux or MacOS.
This project has a docker-compose.yml
contains the basic stack setup to quickly spin up the local development environment.
To set up the project please follow the steps below:
- Set up the
.env
file:
cp .env.example .env
- Start up the services
docker-compose up -d
- Install the dependencies
docker-compose exec php composer install
npm install
- Create a key
docker-compose exec php php artisan key:generate
- Run migrations
docker-compose exec php php artisan migrate --seed
- Build the frontend
npm run dev
http://127.0.0.1:8000/api/documentation
You can run the application at http://127.0.0.1:8000