The challenge will contain a few core features most applications have. That includes connecting to an API, basic MVC, exposing an API, and finally tests.
Create the frontend in the same project/repo as the backend
The API we want you to connect to is https://quotes.rest/
- User authentication and profile update page
- A page that shows 5 random quotes
- There should be a button to refresh the quotes
- There should be a button besides each quote to save it to your favorites
- A page that shows your saved favorites
- There should be a button to delete a quote from your favorites
- Implement rate limiting for API requests to
https://quotes.rest/
preventing abuse.- The API should be limited to 30 requests per minutes
- Separate admin authentication for moderating saved user quotes and banning users
- Frontend should be done with Vue.js and optionally Inertia.js
- Typescript should be used for any frontend functionality
- UI should be responsive
- An API route should be available to fetch a specified number of quotes random quotes
- An API route should be available to fetch your favorites quotes
- An API route should be available to delete a quote from your favorites
- All API route should be secured with an user token
- Above features are to be tested with Feature tests
- Use composition API and setup script for Vue components
Name: Eribert Marquez
Email: [email protected]
Github: eriker75
-
Create a bare clone of the repository. (This is temporary and will be removed so just do it wherever.)
git clone --bare https://github.com/FmTod/skill-assessment-quotes.git
-
Create a new repository on GitHub.
-
Mirror-push your bare clone to your new repository.
Replace <username> with your actual Github username in the url below.
Replace <repository> with the name of your new repository.cd skill-assessment-quotes.git git push --mirror https://github.com/<username>/<repository>.git
-
Delete the bare clone created in step 1.
cd .. rm -rf skill-assessment-quotes.git
-
You can now clone your repository, where you are going to be working, on your machine (in my case in the code folder).
cd ~/code git clone https://github.com/<username>/<repository>.git
-
Create a copy of the
.env.example
file as.env
cp .env.example .env
-
Install dependencies:
a. Docker (Recommended)
-
Install composer dependecies
docker run --rm \ -u "$(id -u):$(id -g)" \ -v $(pwd):/var/www/html \ -w /var/www/html \ laravelsail/php81-composer:latest \ composer install --ignore-platform-reqs
-
Start the container (Sail):
./vendor/bin/sail up -d
-
Generate a new secret key:
./vendor/bin/sail artisan key:generate
b. Without Docker (Not recommended)
-
Install all required dependencies
composer install
-
Generate a new secret key:
php artisan key:generate
-
Edit the README.md file and add your name and email.
- Name: `<your name>` <br/> - Email: `<your email>` <br/> + Name: Jhon Doe <br/> + Email: [email protected] <br/>
-
Submit your first commit with just the changes to the README.md file. Must be done before starting the assignment.
git add README.md git commit -m "Initial commit" git push
Docker/Sail
./vendor/bin/sail php --version
./vendor/bin/sail php script.php
./vendor/bin/sail composer require laravel/sanctum
./vendor/bin/sail artisan queue:work
./vendor/bin/sail node --version
./vendor/bin/sail npm run dev
If you wish, you may use Yarn instead of NPM:
./vendor/bin/sail yarn
./vendor/bin/sail test
./vendor/bin/sail test --group orders