mirror of
https://github.com/robonen/metr.git
synced 2026-03-20 02:44:42 +00:00
Init commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.idea/
|
||||
133
README.md
Normal file
133
README.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# Metr Frontend
|
||||
|
||||
<p align="center">
|
||||
<a href="">
|
||||
<img alt="Logo" src="public/logo.svg" width="300" title="Logo">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/chemodan-tours/landing/actions">
|
||||
<img src="https://github.com/chemodan-tours/landing/actions/workflows/release.yml/badge.svg" title="Release status">
|
||||
</a>
|
||||
<a href="https://github.com/chemodan-tours/landing/actions">
|
||||
<img src="https://github.com/chemodan-tours/landing/actions/workflows/test.yml/badge.svg" title="Lint status">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Git Flow ⚠
|
||||
|
||||
Продакшен ветка - `master`
|
||||
|
||||
Ветка для разработки - `dev-x.x.x`
|
||||
|
||||
### Порядок работы с репозиторием
|
||||
- Создать ветку с версией dev-x.x.x
|
||||
- После окончания работы над версией и успешным прохождением тестов выполнить слияние с master веткой
|
||||
- Для создания нового релиза перейти в раздел Releases, заполнить описание версии и добавить тег
|
||||
- После успешного релиза нужно проверить корректность
|
||||
|
||||
## Установка проекта
|
||||
|
||||
```bash
|
||||
git clone https://github.com/robonen/metr-frontend.git
|
||||
cd frontend
|
||||
npm install
|
||||
```
|
||||
|
||||
### Запуск в режиме разработки
|
||||
|
||||
```bash
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Компиляция продакшен сборки
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Правила структурирования проекта
|
||||
|
||||
### Компоненты (`src/components`)
|
||||
|
||||
```
|
||||
AppButton.vue
|
||||
AppPopup.vue
|
||||
AppToastNotification.vue
|
||||
BaseButton.vue
|
||||
BasePopup.vue
|
||||
ClientForm.vue
|
||||
ClientList.vue
|
||||
SearchWidget.vue
|
||||
SearchWidgetInput.vue
|
||||
SearchWidgetList.vue
|
||||
```
|
||||
|
||||
1. Каждый компонент должен быть определен в отдельном файле
|
||||
2. Имена файлов компонентов должны быть в PascalCase
|
||||
3. Все базовые компоненты должны начинаться с одного префикса
|
||||
4. Имена компонентов всегда должны быть многословными, чтобы не конфликтовать с существующими или будущими элементами HTML
|
||||
5. Сильно связанные дочерние компоненты должны иметь префикс с именем их родительского компонента
|
||||
|
||||
### Страницы (`src/views`)
|
||||
|
||||
```
|
||||
UsersIndex.vue
|
||||
UsersCreate.vue
|
||||
UsersShow.vue
|
||||
UsersEdit.vue
|
||||
SignIn.vue
|
||||
Settings.vue
|
||||
```
|
||||
|
||||
1. Каждая страница должна быть определена в отдельном файле
|
||||
2. Имена файлов компонентов должны быть в PascalCase
|
||||
3. Все страницы, относящиеся к одной сущности должны начинаться с одного префикса
|
||||
4. Страницы, на сколько это возможно, строятся из компонентов, чтобы избежать дублирование кода
|
||||
|
||||
### Стили
|
||||
|
||||
1. Глобальные переменные, модули, миксины выносятся в папку `/assets/scss` и подключаются в `vue.config.js`
|
||||
|
||||
```javascript
|
||||
// vue.config.js
|
||||
|
||||
module.exports = {
|
||||
css: {
|
||||
loaderOptions: {
|
||||
scss: {
|
||||
prependData: `@import "~@/assets/scss/variables.scss";`,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
```html
|
||||
<template>
|
||||
<router-view />
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
.some-class {
|
||||
background-color: $main-color;
|
||||
}
|
||||
</style>
|
||||
```
|
||||
|
||||
2. Стили модуля задаются в файле модуля
|
||||
|
||||
```html
|
||||
<template>
|
||||
<div class="hello">
|
||||
<h1>Hello, World!</h1>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
.hello {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
</style>
|
||||
```
|
||||
7
public/logo.svg
Normal file
7
public/logo.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg width="631" height="341" viewBox="0 0 631 341" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="630.85" height="341" fill="black"/>
|
||||
<path d="M167.226 190.278L148.267 170.5V206.646H126.17V138.446H144.448L167.226 164.226L190.005 138.446H208.283V206.646H186.186V170.5L167.226 190.278Z" fill="white"/>
|
||||
<path d="M304.129 167.363V175.547H254.343V175.82C254.434 181.366 255.616 185.322 257.89 187.686C260.254 190.051 263.8 191.233 268.529 191.233C276.349 191.233 280.578 188.186 281.214 182.094H304.129C303.493 191.824 300.31 198.689 294.581 202.69C288.853 206.691 280.168 208.692 268.529 208.692C255.616 208.692 246.205 206.055 240.294 200.781C234.383 195.416 231.428 186.14 231.428 172.955C231.428 159.406 234.338 149.949 240.158 144.584C246.068 139.128 255.48 136.4 268.393 136.4C280.396 136.4 289.353 138.81 295.263 143.629C301.174 148.449 304.129 156.36 304.129 167.363ZM254.343 167.363V168.454H281.078C281.078 163.18 279.986 159.452 277.804 157.269C275.713 154.996 272.53 153.859 268.256 153.859C263.891 153.859 260.527 154.905 258.163 156.996C255.798 158.997 254.525 162.452 254.343 167.363Z" fill="white"/>
|
||||
<path d="M321.59 138.446H388.153V155.905H366.329V206.646H343.414V155.905H321.59V138.446Z" fill="white"/>
|
||||
<path d="M455.515 208.692C443.603 208.692 436.283 203.327 433.555 192.597H431.236V231.198H408.321V138.446H431.236V152.495H433.555C434.828 147.403 437.329 143.447 441.057 140.628C444.876 137.809 449.695 136.4 455.515 136.4C464.79 136.4 471.61 139.082 475.975 144.448C480.34 149.813 482.522 159.27 482.522 172.819C482.522 186.277 480.34 195.643 475.975 200.917C471.61 206.1 464.79 208.692 455.515 208.692ZM444.876 153.859C436.055 153.859 431.509 157.951 431.236 166.135V178.275C431.236 186.913 435.783 191.233 444.876 191.233C450.605 191.233 454.515 190.051 456.606 187.686C458.698 185.231 459.744 180.275 459.744 172.819C459.744 165.18 458.652 160.134 456.47 157.678C454.379 155.132 450.514 153.859 444.876 153.859Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
Reference in New Issue
Block a user