https://github.com/pavelisik/adbox
Доска объявлений
https://github.com/pavelisik/adbox
angular javascript scss typescript
Last synced: about 2 months ago
JSON representation
Доска объявлений
- Host: GitHub
- URL: https://github.com/pavelisik/adbox
- Owner: pavelisik
- Created: 2025-08-30T07:46:14.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-10-23T14:07:37.000Z (8 months ago)
- Last Synced: 2025-10-23T16:10:45.292Z (8 months ago)
- Topics: angular, javascript, scss, typescript
- Language: TypeScript
- Homepage:
- Size: 1.56 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ADBOX - доска объявлений
Веб-приложение на Angular для просмотра и размещения объявлений. Реализована возможность авторизации и регистрации пользователей, изменения настроек пользователей.
## Установка и запуск проекта
1. Клонируйте репозиторий:
```bash
git clone https://github.com/pavelisik/adbox.git
```
2. Перейдите в директорию проекта:
```bash
cd adbox
```
3. Установите зависимости:
```bash
npm install
```
4. Запустите проект в режиме разработки:
```bash
npm start
```
5. Откройте приложение в браузере по адресу:
```
http://localhost:4200
```
## Структура проекта
Директория **core** - низкоуровневые сущности, необходимые для работы всего приложения:
- `auth` - необходимые для авторизации сервисы и интерфейсы доменов:
- `auth.state.service` - сервис для хранения состояния авторизации и токена;
- `auth.service` - общий api сервис для авторизации, разлогинивания и подтверждения пароля;
- `auth.facade` - фасад для работы с данными по авторизации, синхронизация с cookie, редирект на закрытые страницы;
- `local-user.state.service` - сервис для хранения локальных данных пользователя;
- `local-user.service` - сервис для локальных данных пользователя, синхронизация с cookie;
- `user.state.service` - сервис для хранения серверных данных пользователя;
- `user.service` - общий api сервис для пользователей;
- `user.facade` - фасад для работы с общими серверными и локальными данными пользователя, работа с избранными объявлениями.
- `confirmation`
- `confirmation.service` - сервис, формирующий confirm-сообщения;
- `password-confirmation.service` - сервис для работы логики подтверждения пароля.
- `dialog`
- `dialog.service` - сервис для работы с диалоговыми окнами.
- `notification`
- `notification.service` - сервис, формирующий toast-сообщения.
- `title`
- `title-strategy.service` - сервис, формирующий заголовки title.
- `guards` - защитники навигации:
- `auth.guard` - защитник для авторизованных и неавторизованных пользователей;
- `redirect-my-user.guard` - защитник для редиректа на страницу с объявлениями текущего пользователя.
- `interceptors` - перехватчики запросов:
- `constants`
- `error-messages` - словарь ошибок сервера в соответствии с проектом;
- `error-titles.enum` - стандартные заголовки ошибок в зависимости от статуса запроса.
- `utils`
- `format-error-response.util` - форматирование информации серверной ошибки для вывода.
- `auth.interceptor` - перехватчик запросов для авторизованных пользователей с добавлением токена авторизации;
- `errors.interceptor` - перехватчик запросов для вывода toast-сообщений об ошибках;
- `images-cache.interceptor` - перехватчик GET-запросов для кэширования полученных Blob-изображений.
Директория **infrastructure** - сервисы для работы с API, интерфейсы DTO и адаптеры преобразования интерфейсов из DTO в бизнес-домены:
- `advert` - объявления;
- `authorization` - авторизация;
- `categories` - категории;
- `comment` - комментарии;
- `images` - изображения для объявлений;
- `users` - пользователи;
- `dadata` - данные с сервиса dadata.
Директория **pages** - компоненты отдельных страниц с интерфейсами бизнес-доменов:
- `advert` - страница отображения объявления по его id;
- `advert-add` - страница с формой добавления нового объявления;
- `advert-edit` - страница с формой редактирования объявления;
- `adverts-list` - универсальная страница со списком объявлений (условно отображает содержимое в зависимости от типа страницы в роутах):
- `adverts-block` - для отображения небольших списков объявления на главной странице (по избранной категории, избранные объявления, мои объявления и последние объявления);
- `adverts-page` - для отображения отдельных страниц со списками объявлений (отфильтрованные объявления, мои объявления, избранные и объявления конкретного пользователя).
- `not-found` - страница для неопознанных адресов;
- `settings` - страница с настройками пользователя и удалением пользователя:
- `settings-form` - страница с формой изменения основных данных пользователя;
- `password-form` - страница с формой изменения пароля.
Директория **shared** - универсальные компоненты бизнес-логики, диалоговые окна, layout-компоненты, директивы, пайпы, универсальные сервисы бизнес-логики:
- `components` - все универсальные компоненты:
- `ad-grid` - универсальный компонент для вывода сетки объявлений;
- `ad-grid-item` - компонент для вывода карточки одного объявления в сетке;
- `image` - компонент для вывода превью изображения для карточки одного объявления;
- `image-buttons` - компонент для вывода кнопок управления объявлением.
- `ad-sidebar-filters` - компонент для вывода сайдбара с фильтрами на странице с результатами поиска;
- `ad-title` - компонент для вывода заголовка страницы с объявлениями;
- `ad-top-filters` - компонент для вывода верхней панели фильтров на странице с результатами поиска;
- `picked-filters` - компонент для вывода всех выбранных фильтров с возможностью их удаления;
- `breadcrumbs` - компонент для вывода хлебных крошек;
- `comments` - компонент для вывода комментариев;
- `comments-form` - универсальная форма ввода нового комментария, ответа на комментарий или редактирования;
- `comments-list` - вывод списка с комментариями;
- `comment` - вывод отдельно каждого комментария;
- `forms` - папка с компонентами, необходимых для форм:
- `address-block` - блок для ввода адреса с синхронизацией с локальными данными;
- `address-input` - ввод адреса с использованием автокомплита;
- `control-error` - компонент для вывода ошибок для FormControls;
- `password-input` - компонент, формирующий текстовое поле для ввода пароля;
- `form-message` - компонент для вывода сообщений об ошибках формы и сообщений об удачных запросах формы;
- `images-upload` - компонент для загрузки и предварительного просмотра изображений для объявления.
- `image-gallery` - компонент для вывода галереи изображений на странице объявления;
- `search-bar` - компонент для вывода верхней панели с формой поиска объявлений и фильтром категорий;
- `category-menu` - компонент для вывода меню с фильтром категорий;
- `skeletons` - директория со всеми скелетонами для загрузки:
- `ad-grid-skeleton` - скелетон для сетки с объявлениями;
- `ad-grid-item-skeleton` - скелетон для одного объявления в сетке;
- `advert-skeleton` - скелетон для вывода в объявлении;
- `category-filter-skeleton` - скелетон для списка категорий в фильтре;
- `comments-skeleton` - скелетон для комментариев;
- `image-gallery-skeleton` - скелетон для галлереи с изображениями;
- `image-skeleton` - скелетон каждого изображения объявления в сетке;
- `spinner` - универсальный компонент для отображения спиннера с различными параметрами во время загрузки.
- `svg-icon` - компонент-обертка для svg-иконок.
- `top-bar` - компонент для вывода верхней панели с пользовательским меню.
- `data` - статические данные для приложения
- `cat-with-adverts` - ассоциации всех категорий и объявлений размещенных в них;
- `cities` - список городов для хлебных крошек.
- `dialogs` - компоненты диалоговых окон:
- `address-on-map` - компонент для вывода карты с адресом;
- `dialog-container` - контейнер-компонент для всех диалоговых окон;
- `info-dialog` - компонент для вывода простого диалогового окна с информацией;
- `login-dialog` - компонент для вывода диалогового окна авторизации пользователя;
- `password-dialog` - компонент для подтверждения пароля пользователя;
- `register-dialog` - компонент для вывода диалогового окна регистрации нового пользователя;
- `terms-of-service` - компонент с информацией о правилах пользования приложением.
- `directives` - директивы:
- `dnd.directive` - директива для drag and drop зоны в загрузчике изображений.
- `layouts` - переиспользуемые layout-компоненты:
- `header` - компонент для вывода шапки;
- `main-layout` - основной компонент для всех страниц.
- `pipes` - вспомогательные пайпы:
- `adverts-count.pipe` - пайп для вывода числа объявлений с правильным склонением;
- `date-format.pipe` - пайп для форматирования даты объявления;
- `image-from-id.pipe` - асинхронный пайп для получения Blob-изображения по переданному id изображения;
- `images-from-ids.pipe` - асинхронный пайп для получения массива Blob-изображений по переданному массиву id изображений (для галереи);
- `phone-format.pipe` - пайп для форматирования телефонного номера;
- `price-format.pipe` - пайп для форматирования цены.
- `services` - все сервисы, необходимые для работы страниц, компонентов, диалоговых окон:
- `advert-draft.state.service` - сервис для работы с состоянием черновика объявления;
- `advert.state.service` - сервис для хранения состояния данных текущего объявления;
- `advert.service` - сервис для api-взаимодействий с объявлениями;
- `advert.facade` - фасад для работы с данными объявления;
- `adverts-list.state.service` - сервис для хранения состояния данных списка объявлений;
- `advert-list.service` - сервис для api-взаимодействий со списком объявлений;
- `advert-list.facade` - фасад для работы со списком объявлений;
- `breadcrumbs.state.service` - сервис для хранения состояния хлебных крошек для каждой страницы;
- `breadcrumbs.service` - сервис для формирования хлебных крошек;
- `category.state.service` - сервис для хранения всех категорий;
- `category.service` - сервис для api-взаимодействий с категориями;
- `category.facade` - фасад для для работы с категориями;
- `comments.state.service` - сервис для хранения состояния выводимых комментариев;
- `comments.service` - сервис для api-взаимодействий с комментариями;
- `comments.facade` - фасад для работы с комментариями;
- `dadata.service` - сервис для запросов к службе dadata;
- `image.service` - сервис для api-взаимодействий с изображениями.
- `utils` - утилитарные вспомогательные функции:
- `categories-transform.util` - преобразует массив категорий в дерево с вложенными childs;
- `category-name-from-id.util` - возвращаем имя категории по значению ее id;
- `comments-transform.util` - преобразует массив комментариев в дерево с вложенными children;
- `data-url-to-file.util` - преобразует строку Data URL в объект File;
- `find-category-from-id.util` - поиск категории по id в модифицированном древовидном массиве;
- `sort-adverts-by-date.util` - cортировка объявлений по дате создания.
- `validators` - кастомные валидаторы:
- `passwordsMatch.validator` - валидирует совпадение двух паролей.
Директория **styles** - файлы с общими scss-стилями:
- `_primeng.scss` - стили для компонентов библиотеки PrimeNg (переназначенные css-переменные и селекторы классов);
- `_reset.scss` - общий сброс для стилей;
- `_typography.scss` - стили для шрифтов, утилитарные селекторы классов для шрифтов;
- `_utilities.scss` - утилитарные селекторы классов для отступов;
- `_variables.scss` - css-переменные с предустановленными цветами;
- `styles.scss` - основной общий файл со стилями.