As part of the application process, you’ve been requested to complete the following challenge. If you have any questions please respond to the last email you received from our team.
Requirements
Create a Laravel Application with Postgresql as your database (feel free to utilize a Laravel starter app or other pre-built components like Breeze, Jetstream or Fortify);
- Add standard authentication features such as login, registration, password reset, email verification, and password confirmation;
- Using our GET accessible endpoint https://caseproof.s3.amazonaws.com/dev-challenge/table.json (there are no parameters to/from required), create a new endpoint in Laravel that:
- Can be used only when logged in;
- Calls the above endpoint to get the data to return;
- Which when called always returns the data, but regardless of when/how many times it is called should never request the data from our server more than 1 time per hour;
- Once logged in the user should see a single-page js app that shows a styled table-like display containing information fetched from your local endpoint;
- Add a button below the table which, when clicked will force a refresh of the data in the table;
- Create an Artisan command that can be used to force the refresh of this data the next time the Laravel endpoint is called;
- Organize the code so it can be deployed on a free Heroku Dyno and the free tier of the Heroku Postgres Add-On
- Ensure to properly escape, sanitize and validate data in each step as appropriate.
Your code MUST be deployable to Heroku using this sequence of commands:
unzip {dev challenge zip file}
cd {dev challenge app root directory}
git init
heroku apps:create {app name}
heroku git:remote {app name}
heroku addons:create heroku-postgresql:hobby-dev -r heroku
git add .
git commit -m "Initial Commit"
git push heroku master
heroku config:set DB_CONNECTION=pgsql APP_DEBUG=true APP_KEY={base64 key}
heroku run php artisan migrate
heroku run php artisan db:seed
heroku open
Package the code as a Zip file and upload it to the form below: