# ტექნიკური მოთხოვნები

### Back-End

* **Framework**: Laravel&#x20;
* **Linter & Formatter:**  [PHP-CS-Fixer](https://redberry.gitbook.io/resources/php-is-linteri)
* **Database:** MySQL
* [**CD pipeline** ](https://redberry.gitbook.io/resources/other/ci-cd-pipeline-is-gamartva)
* **Api protection** - [Laravel Sanctum](https://laravel.com/docs/10.x/sanctum)
* **Api Testing** - [Pest](https://pestphp.com/)
* **File uploads** - [Spatie Media Library](https://spatie.be/docs/laravel-medialibrary/v11/introduction)
* **Query Builder** -[ Laravel Query Builder](https://spatie.be/docs/laravel-query-builder/v5/introduction)

### Front-End

ბუთქემფის ნაკადის მიხედვით, დავალების ფრონტი დასაწერი იქნება **ან ნექსტზე ან ვიუზე**\
\
**Next**

* **Linter & Formatter:**  [ESLint & Prettier](https://redberry.gitbook.io/resources/eslint-and-prettier-is-gamartva-vue.js-proektshi)&#x20;
* სტილები დაწერილი უნდა იყოს [**TailwindCSS**](https://tailwindcss.com/)-ის გამოყენებით.
* **CD pipeline**
* **Typescript**
* ვალიდაციები უნდა იყოს გაკეთებული [react hook form](https://react-hook-form.com/)-ის გამოყენებით
* ვიყენებთ pages დირექტორიას, და არა app დირექტორიას როდესაც ვქმნით ნექსტის პროექტს
* tanstack query-ით უნდა იყოს შესრულებული უმეტესობა რექუსტი თუ რამე განსაკუთრებული ქეისი არ გაქვთ
* ფაილის სტრუქტურა უნდა მიყვებოდეს ამ პროექტის მაგალითს <https://github.com/RedberryInternship/nextjs-folder-structure-example/tree/main/public>&#x20;
* პროექტი უნდა შეიქმნას npx create-next-app\@latest-ის საშულებით შემდეგი კონფიგურაციით
  \*

  ```
  <figure><img src="https://3835327625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlziaGOnKpUDiaw3mdypl%2Fuploads%2Fo8LjYswD2ZlSSBoJXDAa%2Fimage.png?alt=media&#x26;token=70c54115-8139-4524-8295-b9ea9cd3c1fa" alt=""><figcaption><p>არცერთი ოფშენი არ არის განხილვის ქვეშ, ყველა ისაე უნდა იყოს როგორც სქრინშია</p></figcaption></figure>
  ```

\
**Vue**

* **Framework:** Vue3 \[Composition API]

* **Linter & Formatter:**  [ESLint & Prettier](https://redberry.gitbook.io/resources/eslint-and-prettier-is-gamartva-vue.js-proektshi)&#x20;

* სტილები დაწერილი უნდა იყოს [**TailwindCSS**](https://tailwindcss.com/)-ის გამოყენებით.

* ვალიდაციები გაკეთებული უნდა იყოს [**Vee-Validate**](https://vee-validate.logaretm.com/v4/)-ის გამოყენებით

* **Storage Management** გაკეთებული უნდა იყოს [**Pinia**](https://pinia.vuejs.org/)-ს მეშვეობით

* **CD pipeline**

* **Typescript**

* \\

* **Vue**-ს პროექტი უნდა იყოს შექმნილი Vite-ის პრესეტით.

```
npm init vue@latest project_name
```

შემდეგი კონფიგურაციით:

![](https://3835327625-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlziaGOnKpUDiaw3mdypl%2Fuploads%2FfxA5agB40ZzLu0Ityk5W%2Fimage.png?alt=media\&token=0132b3c7-59ef-4c25-89c6-f638a38d1403)

### Common

* Git-ის კომიტები უნდა იცავდეს [სემანტიკური კომიტების](https://redberry.gitbook.io/resources/git-is-semantikuri-komitebi) ფორმატს.
* უნდა იყოს დაცული Clean Code პრინციპები.
* პროექტი უნდა იყოს ატანილი სერვერზე.
* უნდა მიყვებოდეს [კოდის შეფასების კრიტერიუმებს](https://app.gitbook.com/s/rgmjFj4NNSsoaQmAk09Z/kodisa-da-proektis-shepasebis-kriteriumebi/reaktis-kodis-khariskhis-kriteriumebi) \\
