Skip to content

jlbousing/skill-assessment-kanye-west

Repository files navigation

Kanye West Quotes

Skill Assessment

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.

The API we want you to connect to is https://kanye.rest/

The application should have the following features:

  • User authentication and profile update page
  • A page that shows 5 random Kayne West 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://kanye.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 Kayne West 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

Developer

Name: Jorge Luis Bou-saad
Email: jbousing@gmail.com

Instructions (Docker required)

DO NOT START A NEW LARAVEL APP, USE THIS BOILERPLATE INSTEAD !!

Cloning the repository

  1. 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-kanye-west.git
  2. Create a new repository on GitHub.

  3. 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-kanye-west.git
    git push --mirror https://github.com/<username>/<repository>.git
  4. Delete the bare clone created in step 1.

    cd ..
    rm -rf skill-assessment-kanye-west.git
  5. 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

Getting Started

  1. Create a copy of the .env.example file as .env

    cp .env.example .env
  2. Install dependencies:

    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
  3. Start the container (Sail):

    ./vendor/bin/sail up -d
  4. Run Vite server to display Vue files:

    ./vendor/bin/sail npm run dev
  5. Generate a new secret key:

    ./vendor/bin/sail artisan key:generate
  6. (IMPORTANT) Edit the README.md file and add your name and email.

    - Name: `<your name>` <br/>
    - Email: `<your email>` <br/>
    + Name: Jhon Doe <br/>
    + Email: jhondoe@exmaple.com <br/>
  7. (IMPORTANT) 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

Executing Commands

PHP Commands

./vendor/bin/sail php --version
 
./vendor/bin/sail php script.php

Composer Commands

./vendor/bin/sail composer require laravel/sanctum

Artisan Commands

./vendor/bin/sail artisan queue:work

Node / NPM Commands

./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

Running Tests

./vendor/bin/sail test

./vendor/bin/sail test --group orders

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages