├── apps
├── admin
│ ├── public
│ │ ├── robots.txt
│ │ └── fonts
│ │ │ ├── 400.woff2
│ │ │ └── 700.woff2
│ ├── .gitignore
│ ├── prettier.config.js
│ ├── stylelint.config.js
│ ├── src
│ │ ├── modules
│ │ │ ├── customer
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── CustomerPage.spec.ts.snap
│ │ │ │ │ │ └── CustomerListPage.spec.ts.snap
│ │ │ │ │ └── CustomerPage.vue
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ │ └── components
│ │ │ │ │ └── __snapshots__
│ │ │ │ │ └── CustomerList.spec.ts.snap
│ │ │ ├── auth
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── LoginPage.spec.ts.snap
│ │ │ │ │ │ └── SetupPage.spec.ts.snap
│ │ │ │ │ ├── LoginPage.vue
│ │ │ │ │ ├── SetupPage.vue
│ │ │ │ │ ├── LoginPage.spec.ts
│ │ │ │ │ └── SetupPage.spec.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ └── __snapshots__
│ │ │ │ │ │ ├── LoginForm.spec.ts.snap
│ │ │ │ │ │ └── SetupForm.spec.ts.snap
│ │ │ │ └── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ ├── banner
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── BannerCreatePage.spec.ts.snap
│ │ │ │ │ │ ├── BannerEditPage.spec.ts.snap
│ │ │ │ │ │ └── BannerListPage.spec.ts.snap
│ │ │ │ │ ├── BannerCreatePage.spec.ts
│ │ │ │ │ ├── BannerCreatePage.vue
│ │ │ │ │ └── BannerEditPage.vue
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ └── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ ├── manager
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── ManagerCreatePage.spec.ts.snap
│ │ │ │ │ │ ├── ManagerEditPage.spec.ts.snap
│ │ │ │ │ │ └── ManagerListPage.spec.ts.snap
│ │ │ │ │ ├── ManagerCreatePage.spec.ts
│ │ │ │ │ └── ManagerCreatePage.vue
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ └── __snapshots__
│ │ │ │ │ │ ├── ManagerForm.spec.ts.snap
│ │ │ │ │ │ └── ManagerList.spec.ts.snap
│ │ │ │ ├── fixtures
│ │ │ │ │ └── index.ts
│ │ │ │ └── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ ├── product
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── ProductCreatePage.spec.ts.snap
│ │ │ │ │ │ ├── ProductEditPage.spec.ts.snap
│ │ │ │ │ │ └── ProductListPage.spec.ts.snap
│ │ │ │ │ ├── ProductCreatePage.spec.ts
│ │ │ │ │ ├── ProductCreatePage.vue
│ │ │ │ │ └── ProductEditPage.vue
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ └── __snapshots__
│ │ │ │ │ │ └── ProductFieldsForm.spec.ts.snap
│ │ │ │ └── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ ├── common
│ │ │ │ ├── components
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── App.spec.ts.snap
│ │ │ │ │ │ ├── ImagePreview.spec.ts.snap
│ │ │ │ │ │ ├── FormButtons.spec.ts.snap
│ │ │ │ │ │ └── EntitiesCount.spec.ts.snap
│ │ │ │ │ └── EntitiesCount.vue
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── styles
│ │ │ │ │ └── main.scss
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── ErrorPage.spec.ts.snap
│ │ │ │ │ │ └── MainPage.spec.ts.snap
│ │ │ │ │ ├── ErrorPage.vue
│ │ │ │ │ ├── MainPage.vue
│ │ │ │ │ ├── MainPage.spec.ts
│ │ │ │ │ └── ErrorPage.spec.ts
│ │ │ │ ├── router
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── routes.ts
│ │ │ │ ├── services
│ │ │ │ │ └── index.ts
│ │ │ │ └── fixtures
│ │ │ │ │ └── index.ts
│ │ │ ├── manufacturer
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── ManufacturerCreatePage.spec.ts.snap
│ │ │ │ │ │ ├── ManufacturerEditPage.spec.ts.snap
│ │ │ │ │ │ └── ManufacturerListPage.spec.ts.snap
│ │ │ │ │ ├── ManufacturerCreatePage.spec.ts
│ │ │ │ │ ├── ManufacturerCreatePage.vue
│ │ │ │ │ └── ManufacturerEditPage.vue
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── fixtures
│ │ │ │ │ └── index.ts
│ │ │ │ └── services
│ │ │ │ │ └── index.ts
│ │ │ ├── order
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ ├── OrderPage.spec.ts.snap
│ │ │ │ │ │ └── OrderListPage.spec.ts.snap
│ │ │ │ │ └── OrderPage.vue
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ │ └── components
│ │ │ │ │ └── __snapshots__
│ │ │ │ │ └── OrderList.spec.ts.snap
│ │ │ ├── category
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ ├── CategoryCreatePage.spec.ts
│ │ │ │ │ ├── CategoryCreatePage.vue
│ │ │ │ │ ├── CategoryEditPage.vue
│ │ │ │ │ └── CategoryListPage.vue
│ │ │ │ ├── components
│ │ │ │ │ ├── __snapshots__
│ │ │ │ │ │ └── CategoryFieldForm.spec.ts.snap
│ │ │ │ │ └── CategoryList.vue
│ │ │ │ └── services
│ │ │ │ │ ├── api.ts
│ │ │ │ │ └── index.ts
│ │ │ └── layout
│ │ │ │ ├── components
│ │ │ │ ├── __snapshots__
│ │ │ │ │ ├── LayoutEmpty.spec.ts.snap
│ │ │ │ │ ├── NavItem.spec.ts.snap
│ │ │ │ │ ├── TheSearch.spec.ts.snap
│ │ │ │ │ ├── PageTitle.spec.ts.snap
│ │ │ │ │ ├── LayoutDefault.spec.ts.snap
│ │ │ │ │ ├── TheHeader.spec.ts.snap
│ │ │ │ │ └── NavList.spec.ts.snap
│ │ │ │ ├── LayoutEmpty.vue
│ │ │ │ ├── NavList.vue
│ │ │ │ ├── LayoutEmpty.spec.ts
│ │ │ │ ├── LayoutDefault.spec.ts
│ │ │ │ ├── TheSearch.vue
│ │ │ │ ├── PageTitle.vue
│ │ │ │ ├── NavList.spec.ts
│ │ │ │ ├── NavItem.vue
│ │ │ │ └── LayoutDefault.vue
│ │ │ │ ├── interface
│ │ │ │ └── index.ts
│ │ │ │ └── icons
│ │ │ │ ├── nav-manufacturer.svg
│ │ │ │ ├── nav-order.svg
│ │ │ │ ├── nav-manager.svg
│ │ │ │ ├── nav-product.svg
│ │ │ │ ├── nav-main.svg
│ │ │ │ ├── nav-banner.svg
│ │ │ │ ├── nav-category.svg
│ │ │ │ └── nav-customer.svg
│ │ ├── env.d.ts
│ │ └── main.ts
│ ├── .env.example
│ ├── tsconfig.node.json
│ ├── index.html
│ ├── vitest.setup.ts
│ ├── tsconfig.json
│ └── eslint.config.js
├── site
│ ├── .gitignore
│ ├── src
│ │ ├── modules
│ │ │ ├── cart
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── composables
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── CartItemList.vue
│ │ │ │ │ ├── CartHeaderButton.vue
│ │ │ │ │ └── CartItemCount.vue
│ │ │ │ └── pages
│ │ │ │ │ └── CartPage.vue
│ │ │ ├── category
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── CategoryPopularList.vue
│ │ │ │ │ ├── CategoryCard.vue
│ │ │ │ │ └── CategoryCatalogList.vue
│ │ │ │ ├── services
│ │ │ │ │ ├── api.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── pages
│ │ │ │ │ └── CategoryListPage.vue
│ │ │ ├── manufacturer
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── ManufacturerPopularList.vue
│ │ │ │ │ ├── ManufacturerCatalogList.vue
│ │ │ │ │ └── ManufacturerCard.vue
│ │ │ │ └── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ ├── order
│ │ │ │ ├── contants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── OrderList.vue
│ │ │ │ │ └── OrderElement.vue
│ │ │ │ └── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ ├── common
│ │ │ │ ├── images
│ │ │ │ │ └── map.jpg
│ │ │ │ ├── styles
│ │ │ │ │ └── main.scss
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ │ └── ErrorPage.vue
│ │ │ │ ├── services
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── api.ts
│ │ │ │ └── router
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── routes.ts
│ │ │ ├── product
│ │ │ │ ├── interface
│ │ │ │ │ └── index.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── ProductPopularList.vue
│ │ │ │ │ └── ProductAddToCartButton.vue
│ │ │ │ └── constants
│ │ │ │ │ └── index.ts
│ │ │ ├── banner
│ │ │ │ └── services
│ │ │ │ │ ├── api.ts
│ │ │ │ │ └── index.ts
│ │ │ ├── customer
│ │ │ │ ├── pages
│ │ │ │ │ ├── WatchedProductsPage.vue
│ │ │ │ │ ├── ProfilePage.vue
│ │ │ │ │ ├── FavouritesPage.vue
│ │ │ │ │ ├── OrderPage.vue
│ │ │ │ │ └── OrdersPage.vue
│ │ │ │ ├── components
│ │ │ │ │ ├── CustomerWatchedProducts.vue
│ │ │ │ │ └── CustomerNav.vue
│ │ │ │ └── constants
│ │ │ │ │ └── index.ts
│ │ │ ├── layout
│ │ │ │ ├── components
│ │ │ │ │ ├── LayoutEmpty.vue
│ │ │ │ │ ├── PageTitle.vue
│ │ │ │ │ ├── TheSearch.vue
│ │ │ │ │ ├── LayoutDefault.vue
│ │ │ │ │ └── FullscreenFilters.vue
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ └── icons
│ │ │ │ │ ├── search.svg
│ │ │ │ │ ├── login.svg
│ │ │ │ │ ├── logout.svg
│ │ │ │ │ ├── cart.svg
│ │ │ │ │ ├── catalog.svg
│ │ │ │ │ ├── filters.svg
│ │ │ │ │ ├── profile.svg
│ │ │ │ │ └── signup.svg
│ │ │ ├── configuration
│ │ │ │ ├── interface
│ │ │ │ │ └── index.ts
│ │ │ │ ├── routes
│ │ │ │ │ └── index.ts
│ │ │ │ ├── components
│ │ │ │ │ ├── ConfigurationElement.vue
│ │ │ │ │ ├── ConfigurationList.vue
│ │ │ │ │ └── ConfigurationAuthor.vue
│ │ │ │ ├── constants
│ │ │ │ │ └── index.ts
│ │ │ │ └── services
│ │ │ │ │ └── index.ts
│ │ │ └── auth
│ │ │ │ ├── routes
│ │ │ │ └── index.ts
│ │ │ │ ├── pages
│ │ │ │ ├── LoginPage.vue
│ │ │ │ └── SignUpPage.vue
│ │ │ │ ├── services
│ │ │ │ ├── index.ts
│ │ │ │ └── api.ts
│ │ │ │ └── constants
│ │ │ │ └── index.ts
│ │ ├── env.d.ts
│ │ └── main.ts
│ ├── prettier.config.js
│ ├── stylelint.config.js
│ ├── public
│ │ ├── pwa-180.png
│ │ ├── pwa-192.png
│ │ ├── pwa-512.png
│ │ ├── fonts
│ │ │ ├── 400.woff2
│ │ │ └── 700.woff2
│ │ └── robots.txt
│ ├── .env.example
│ ├── tsconfig.node.json
│ ├── vitest.setup.ts
│ ├── tsconfig.json
│ └── eslint.config.js
└── back
│ ├── .gitignore
│ ├── prettier.config.js
│ ├── dump
│ └── mhz
│ │ ├── banners.bson
│ │ ├── products.bson
│ │ ├── categories.bson
│ │ ├── manufacturers.bson
│ │ ├── banners.metadata.json
│ │ ├── products.metadata.json
│ │ ├── categories.metadata.json
│ │ └── manufacturers.metadata.json
│ ├── .env.example
│ ├── src
│ ├── plugins
│ │ ├── helmet.ts
│ │ ├── rate.ts
│ │ ├── multipart.ts
│ │ ├── static.ts
│ │ ├── cors.ts
│ │ └── swagger.ts
│ ├── helpers
│ │ ├── deleteFile.ts
│ │ ├── createThumb.ts
│ │ ├── decodeToken.ts
│ │ ├── resizeFile.ts
│ │ ├── index.ts
│ │ ├── addView.ts
│ │ ├── deleteFile.spec.ts
│ │ ├── addView.spec.ts
│ │ ├── decodeToken.spec.ts
│ │ ├── addProductToWatched.ts
│ │ ├── createThumb.spec.ts
│ │ └── resizeFile.spec.ts
│ ├── index.ts
│ ├── models
│ │ ├── manager.ts
│ │ ├── banner.ts
│ │ ├── manufacturer.ts
│ │ ├── order.ts
│ │ ├── product.ts
│ │ ├── category.ts
│ │ └── customer.ts
│ ├── routes
│ │ ├── stats.ts
│ │ └── search.ts
│ ├── app.ts
│ └── services
│ │ └── manager.ts
│ ├── nodemon.json
│ ├── vitest.config.ts
│ ├── tsconfig.json
│ └── eslint.config.js
├── .gitignore
├── packages
├── bank
│ ├── .gitignore
│ ├── tsconfig.node.json
│ ├── index.html
│ ├── vite.config.ts
│ ├── package.json
│ └── tsconfig.json
├── countries
│ ├── dist
│ │ └── types
│ │ │ └── index.d.ts
│ └── package.json
└── contracts
│ ├── dist
│ └── types
│ │ └── index.d.ts
│ └── package.json
├── .editorconfig
├── .changeset
└── config.json
├── turbo.json
├── .gitattributes
├── README.md
└── LICENSE
/apps/admin/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build
3 | .env
4 | .turbo
5 | .vscode
--------------------------------------------------------------------------------
/apps/admin/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /dist
3 | /coverage
4 | .env
5 | .turbo
--------------------------------------------------------------------------------
/apps/site/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /dist
3 | /coverage
4 | .env
5 | .turbo
--------------------------------------------------------------------------------
/packages/bank/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .env
4 | .idea
5 | .vscode/*
--------------------------------------------------------------------------------
/apps/site/src/modules/cart/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_CART = '/cart';
2 |
--------------------------------------------------------------------------------
/packages/countries/dist/types/index.d.ts:
--------------------------------------------------------------------------------
1 | export declare const countries: string[];
2 |
--------------------------------------------------------------------------------
/apps/admin/prettier.config.js:
--------------------------------------------------------------------------------
1 | export { prettier as default } from 'vue-linters-config';
2 |
--------------------------------------------------------------------------------
/apps/admin/stylelint.config.js:
--------------------------------------------------------------------------------
1 | export { stylelint as default } from 'vue-linters-config';
2 |
--------------------------------------------------------------------------------
/apps/back/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | .turbo
3 | node_modules
4 | build
5 | public/upload
6 | coverage
--------------------------------------------------------------------------------
/apps/back/prettier.config.js:
--------------------------------------------------------------------------------
1 | export { prettier as default } from 'vue-linters-config';
2 |
--------------------------------------------------------------------------------
/apps/site/prettier.config.js:
--------------------------------------------------------------------------------
1 | export { prettier as default } from 'vue-linters-config';
2 |
--------------------------------------------------------------------------------
/apps/site/stylelint.config.js:
--------------------------------------------------------------------------------
1 | export { stylelint as default } from 'vue-linters-config';
2 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/customer/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_CUSTOMER = '/customers';
2 |
--------------------------------------------------------------------------------
/apps/site/src/modules/category/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_CATEGORY = '/categories';
2 |
--------------------------------------------------------------------------------
/packages/contracts/dist/types/index.d.ts:
--------------------------------------------------------------------------------
1 | export * from "./constants";
2 | export * from "./types";
3 |
--------------------------------------------------------------------------------
/apps/site/public/pwa-180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/site/public/pwa-180.png
--------------------------------------------------------------------------------
/apps/site/public/pwa-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/site/public/pwa-192.png
--------------------------------------------------------------------------------
/apps/site/public/pwa-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/site/public/pwa-512.png
--------------------------------------------------------------------------------
/apps/site/src/modules/manufacturer/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_MANUFACTURER = '/manufacturers';
2 |
--------------------------------------------------------------------------------
/apps/back/dump/mhz/banners.bson:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/back/dump/mhz/banners.bson
--------------------------------------------------------------------------------
/apps/back/dump/mhz/products.bson:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/back/dump/mhz/products.bson
--------------------------------------------------------------------------------
/apps/site/public/fonts/400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/site/public/fonts/400.woff2
--------------------------------------------------------------------------------
/apps/site/public/fonts/700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/site/public/fonts/700.woff2
--------------------------------------------------------------------------------
/apps/admin/public/fonts/400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/admin/public/fonts/400.woff2
--------------------------------------------------------------------------------
/apps/admin/public/fonts/700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/admin/public/fonts/700.woff2
--------------------------------------------------------------------------------
/apps/back/dump/mhz/categories.bson:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/back/dump/mhz/categories.bson
--------------------------------------------------------------------------------
/apps/back/dump/mhz/manufacturers.bson:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/back/dump/mhz/manufacturers.bson
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*]
2 | charset=utf-8
3 | end_of_line=lf
4 | insert_final_newline=false
5 | indent_style=space
6 | tab_width=2
7 |
--------------------------------------------------------------------------------
/apps/site/src/modules/order/contants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_CHECKOUT = '/checkout';
2 | export const URL_PAYMENT = '/payment';
3 |
--------------------------------------------------------------------------------
/apps/site/src/modules/common/images/map.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dergunovs/mhz/HEAD/apps/site/src/modules/common/images/map.jpg
--------------------------------------------------------------------------------
/apps/site/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /*?page
3 | Disallow: /cart
4 | Disallow: /customer
5 | Disallow: /checkout
6 | Disallow: /payment
--------------------------------------------------------------------------------
/apps/admin/.env.example:
--------------------------------------------------------------------------------
1 | VITE_API=http://localhost:5000/api
2 | VITE_PATH_UPLOAD=http://localhost:5000/upload
3 | VITE_VERSION=${npm_package_version}
4 | VITE_CURRENCY=₽
--------------------------------------------------------------------------------
/apps/admin/src/modules/auth/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_LOGIN = '/';
2 | export const URL_SETUP = '/setup';
3 |
4 | export const TOKEN_NAME = 'mhz_token';
5 |
--------------------------------------------------------------------------------
/apps/site/.env.example:
--------------------------------------------------------------------------------
1 | VITE_API=http://localhost:5000/api
2 | VITE_PATH_UPLOAD=http://localhost:5000/upload
3 | VITE_VERSION=${npm_package_version}
4 | VITE_CURRENCY=₽
--------------------------------------------------------------------------------
/apps/site/src/modules/product/interface/index.ts:
--------------------------------------------------------------------------------
1 | export interface IProductSortOption {
2 | _id: string;
3 | title: string;
4 | value: string;
5 | isAsc: boolean;
6 | }
7 |
--------------------------------------------------------------------------------
/apps/back/.env.example:
--------------------------------------------------------------------------------
1 | DATABASE=mhz
2 | SECRET=bgnb90gu0etKNLIHbon08f9d76b89dfbyfbhrrejnregkjenb
3 | PORT=5000
4 | SITE_URL=http://localhost:8081
5 | ADMIN_URL=http://localhost:8080
6 | IS_DEV=true
--------------------------------------------------------------------------------
/apps/admin/src/modules/banner/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_BANNER = '/banners';
2 | export const URL_BANNER_CREATE = `${URL_BANNER}/create`;
3 | export const URL_BANNER_EDIT = `${URL_BANNER}/edit`;
4 |
--------------------------------------------------------------------------------
/apps/back/src/plugins/helmet.ts:
--------------------------------------------------------------------------------
1 | import fp from 'fastify-plugin';
2 | import helmet from '@fastify/helmet';
3 |
4 | export default fp(async function (fastify) {
5 | fastify.register(helmet);
6 | });
7 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/manager/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_MANAGER = '/managers';
2 | export const URL_MANAGER_CREATE = `${URL_MANAGER}/create`;
3 | export const URL_MANAGER_EDIT = `${URL_MANAGER}/edit`;
4 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/product/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_PRODUCT = '/products';
2 | export const URL_PRODUCT_CREATE = `${URL_PRODUCT}/create`;
3 | export const URL_PRODUCT_EDIT = `${URL_PRODUCT}/edit`;
4 |
--------------------------------------------------------------------------------
/apps/back/dump/mhz/banners.metadata.json:
--------------------------------------------------------------------------------
1 | {"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"d4e9623fee2c416eabb6b6e0295847a8","collectionName":"banners","type":"collection"}
--------------------------------------------------------------------------------
/apps/back/dump/mhz/products.metadata.json:
--------------------------------------------------------------------------------
1 | {"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"6a59ce48b05744d98d923386a6c5da7d","collectionName":"products","type":"collection"}
--------------------------------------------------------------------------------
/apps/back/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["src"],
3 | "ext": "ts",
4 | "exec": "esbuild `find src \\( -name '*.ts' \\)` --platform=node --outdir=build --format=esm && node build",
5 | "legacyWatch": true
6 | }
7 |
--------------------------------------------------------------------------------
/apps/back/dump/mhz/categories.metadata.json:
--------------------------------------------------------------------------------
1 | {"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"f586e0dc06ed4d1ca8a19b3e836d6bf5","collectionName":"categories","type":"collection"}
--------------------------------------------------------------------------------
/apps/back/dump/mhz/manufacturers.metadata.json:
--------------------------------------------------------------------------------
1 | {"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"1664ce20b153486381c149b9a2823f77","collectionName":"manufacturers","type":"collection"}
--------------------------------------------------------------------------------
/apps/back/src/helpers/deleteFile.ts:
--------------------------------------------------------------------------------
1 | import fs from 'node:fs';
2 | import path from 'node:path';
3 |
4 | export function deleteFile(filename?: string) {
5 | fs.unlinkSync(path.resolve(`./public/upload/${filename}`));
6 | }
7 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/common/components/__snapshots__/App.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`App > matches snapshot 1`] = `
4 | "
5 |
6 |
"
7 | `;
8 |
--------------------------------------------------------------------------------
/apps/back/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitest/config';
2 |
3 | export default defineConfig({
4 | test: {
5 | cache: false,
6 | clearMocks: true,
7 | include: ['**/*.spec.ts'],
8 | },
9 | });
10 |
--------------------------------------------------------------------------------
/apps/back/src/plugins/rate.ts:
--------------------------------------------------------------------------------
1 | import fp from 'fastify-plugin';
2 | import rateLimit from '@fastify/rate-limit';
3 |
4 | export default fp(async function (fastify) {
5 | fastify.register(rateLimit, { max: 100, timeWindow: 20000 });
6 | });
7 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/common/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_MAIN = '/main';
2 | export const URL_ERROR = '/404';
3 |
4 | export const PATH_UPLOAD = import.meta.env.VITE_PATH_UPLOAD;
5 | export const CURRENCY = import.meta.env.VITE_CURRENCY;
6 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/manufacturer/constants/index.ts:
--------------------------------------------------------------------------------
1 | export const URL_MANUFACTURER = '/manufacturers';
2 | export const URL_MANUFACTURER_CREATE = `${URL_MANUFACTURER}/create`;
3 | export const URL_MANUFACTURER_EDIT = `${URL_MANUFACTURER}/edit`;
4 |
--------------------------------------------------------------------------------
/apps/back/src/plugins/multipart.ts:
--------------------------------------------------------------------------------
1 | import fp from 'fastify-plugin';
2 | import multipart from '@fastify/multipart';
3 |
4 | export default fp(async function (fastify) {
5 | fastify.register(multipart, { limits: { fileSize: 10000000 } });
6 | });
7 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/auth/pages/__snapshots__/LoginPage.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`LoginPage > matches snapshot 1`] = `
4 | "
5 |
6 |
"
7 | `;
8 |
--------------------------------------------------------------------------------
/apps/admin/src/modules/auth/pages/__snapshots__/SetupPage.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`SetupPage > matches snapshot 1`] = `
4 | "
5 |
6 |
"
7 | `;
8 |
--------------------------------------------------------------------------------
/packages/bank/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "ES2022",
5 | "moduleResolution": "Node",
6 | "allowSyntheticDefaultImports": true
7 | },
8 | "include": ["vite.config.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/apps/admin/src/env.d.ts:
--------------------------------------------------------------------------------
1 | declare module '*.vue' {
2 | import type { DefineComponent } from 'vue';
3 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
4 | const component: DefineComponent