This is a recruitment task project for Linkhouse company.
📖 Problem description
Cel: wykonanie prostej aplikacji do przeglądania artykułów z bloga Linkhouse. Aplikacja powinna pozwolić
użytkownikowi na przeglądanie listy artykułów oraz wyświetlanie ich opisów po kliknięciu (forma bloga).
Część frontendowa: Vue.js lub Nuxt.js
- Interfejs użytkownika:
1. Formularz z polami do obsługi wyszukiwarki frontendowej
2. Lista artykułów: tytuł, data publikacji
3. Szczegóły artykułu: opis, kategorie, link
- Funkcjonalność:
1. Otwieranie nowego artykułu po kliknięciu na liście
2. Możliwość przejścia do pełnego artykułu z linku pod opisem
3. Wyszukiwarka frontendowa - po tytule oraz kategoriach
4. Możliwość powrotu do listy artykułów
Część backendowa: PHP
- Pobranie oraz parsowanie artykułów z https://linkhouse.pl/feed/
- Endpointy:
1. [GET] /articles - listowanie wszystkich artykułów
2. [GET] /article/:guid - szczegóły jednego artykułu
- Model danych:
1. ArticleList: Array[{ guid, title, pubDate, category }]
2. Article: { guid, title, link, description, category }
Instrukcje:
- Zacznij od stworzenia nowego projektu backendu - wybrany framework PHP, oraz nowego projektu frontendu - Vue lub Nuxt.
- Zaimplementuj wymienione powyżej funkcjonalności.
- Zwróć uwagę na jakość kodu, strukturę projektu oraz obsługę błędów.
Dodatkowo:
- Jeśli wystarczy Ci czasu, możesz dodatkowo zaimplementować angielską wersję językową z https://linkhouse.net/feed/
w formie przełącznika PL/EN.
Kryteria oceny:
- Poprawność działania aplikacji,
- Struktura, nazewnictwo, jakość kodu,
- Adekwatny dobór narzędzi, frameworków,
- Obsługa błędów, przygotowanie się na błędne odpowiedzi serwera.
Uwagi:
- Skup się na dostarczeniu prostego, schludnego, działającego rozwiązania,
- Jeżeli nie zdążysz zrobić wszystkiego, skup się na kluczowych funkcjonalnościach.
🛠️ Installation & Setup
XAMPP
-
First make sure u have installed latest versions of PHP, Laravel, Vue.js, Node.js, npm, XAMPP and Composer
-
I recommend use nvm for install latest supported versions of Node.js and npm,
nvm use --lts
- Clone this repository from linkhouse-blog branch.
git clone -b linkhouse-blog https://github.com/SzymCode/RecruitmentTasks.git
-
Change .env.example file to .env
-
Install modules in root directory
npm install
composer update- Run XAMPP mysql server and then create database
mysql -u root -p
create database linkhouse_blog
Docker
-
First make sure u have installed latest versions of PHP, Laravel, Vue.js, Node.js, npm, Composer and Docker
-
I recommend use nvm for install latest supported versions of Node.js and npm,
nvm use --lts
- Clone this repository from linkhouse-blog branch.
git clone -b linkhouse-blog https://github.com/SzymCode/RecruitmentTasks.git
-
Change .env.example file to .env
-
Install modules in root directory
composer update
php artisan sail:install # prepare .env file🚀 Run
Docker
Remember to shutdown all XAMPP processes!
- root directory:
sail up -d # run containers in background
docker compose exec laravel.test bash # this command open sail container's bash, then run command bellow
npm run devPossible problem:
- Sail: no such file or directory found: Solution 1, Solution 2
❓ Usage
Migrations
Run migrations (optional with seed)
php artisan migrate:fresh --seedTests
Run all backend tests:
docker compose exec laravel.test bash # this command open sail container's bash, then run command bellow
./vendor/bin/pestnpm
- Vite build:
npm run build
- Activate Husky git hooks:
npm run prepare
- Eslint fix:
npm run lint
- Run prettier:
npm run write

