Это програмный продукт, который с помощью предопределенных провайдоров данных осуществлять бронирование/запись на услуги любой организации
- Авторизация
- Выбор филиала
- Выбор услуги
- Выбор даты и время записи
- Выбор специалиста
- Подверждение записи
- Сбросить свои персональные данные
Обязательное условие создать свой .env файл и прописать свои значения
$ cp /app/.env.example /app/.env
Для локального развертывания необходимо установить Node >v18.18
$ cd ./app
$ npm istall
$ npm run dev
Или иметь установленный Docker >v26.0.0
$ docker-compose up -d --build
Для развертывания на prod необходимо собрать образ, если есть необходимость:
$ docker build -f ./deploy/docker/node.prod.Dockerfile -t Заменить_на_название_образа:Заменить_на_тег_образа .
$ docker push Заменить_на_название_образа:Заменить_на_тег_образа
Для стабильной и надежной работы приложения были использованы актуальные и проверенные продукты
- Используется NodeJS v18.18 для работы кода
- Для защиты типов данных JS и стабильной работы приложения TypeScript
- Используемая база данных SQLite
- Для осуществления взаимодействия с Telegram API telegraf
- Валидация входных данных zod
- ORM для взаимодействия с базой данных Prisma
- Для dev и prod развертывания используется Docker
В проекте активно используется YCLIENTS REST API
Для работы бота требуется создать в системе YCLIENTS компанию и ввести свой токен авторизации, а так же требуется зависти кабинет разработчика для получения Bearer токена
Примечание:
- ? - файлы/папки те, что не грузятся на Git
- * - лишние файлы/папки те, что не используятся
.
├── .github // CI/CD приложения
| ├── workflows // содержит action для GitHub
| | └── deploy-prod.yml // конфиг развертывания приложения на сервере
├── app // папка приложения
| ├── build? // собранный проект для продакшена
| ├── node_modules? // зависимости/пакеты приложения
| ├── prisma // папка для работы ORM Prisma
| | ├── migrations // все изменения БД для миграции проекта
| | └── schema.prisma // описание БД, а так же моделей БД
| ├── src // исходных код
| | ├── handlers // реализация обработчиков tgbot/telegraf
| | ├── middlewares // перехватчики авторизации tgbot/telegraf
| | ├── models // описание данных в виде структуры
| | ├── providers // виды реализаций хранения/получения данных
| | ├── scenes* // определенные сцены работы tgbot/telegraf
| | ├── servises // логика системы и работа с моделями
| | ├── views // представления данных для пользователя tgbot/telegraf
| | ├── context.ts // кастомный контекст сообщения для tgbot/telegraf
| | ├── db.ts // подключение базы данных
| | ├── env.ts // валидация evn параметров
| | ├── handler.ts // регистрация обработчиков
| | ├── index.ts // точка входа в приложение
| | ├── middleware.ts // регистрация перехватчиков работы
| | └── provider.ts // регистрация провайдоров
| ├── .env? // параметры запуска приложения (описаны в src/env.ts)
| ├── .env.example // пример .env.example
| ├── nodemon.json // настройка nodemon для автоматической перегрузки приложения
| ├── package.json // описание проекта/сторонних пакетов/зависимостей
| ├── package-lock.json // локальное описание проекта/сторонних пакетов/зависимостей
| └── tsconfig.json // настройка TypeScript
├── deploy // файлы деплоя на prod/dev
| ├── docker // конфиги Dockerfile
| | ├── node.dev.Dockerfile // для локальной разработки
| | └── node.prod.Dockerfile // для разветывания на сервер
| └──scripts // скрипты использующиеся при деплое
| └── startup.sh // скрипт запуска приложения (миграция + старт приложения)
├── volumes? // содержит все данные, которые сохраняются
| └── sqlite-volume // данные базы данных
├── .gitignore // описание файлов, которые не попадают в git
├── docker-compose.yml // конфиг docker-compose для dev
├── docker-compose-prod.yml // конфиг docker-compose для prod
└── README.md