vchikalkin
7c1f79db2a
feat(ban-system): implement multi-level user ban checks across services
...
- Added a comprehensive ban checking system to prevent access for banned users at multiple levels, including database, API, and client-side.
- Introduced `bannedUntil` field in the customer model to manage temporary and permanent bans effectively.
- Enhanced `BaseService` and various service classes to include ban checks, ensuring that banned users cannot perform actions or access data.
- Updated error handling to provide consistent feedback for banned users across the application.
- Improved user experience with a dedicated ban check component and a user-friendly ban notification page.
2025-08-26 12:32:22 +03:00
vchikalkin
bad65204c4
refactor(bot): streamline bot middleware and improve key generator function
...
- Removed unused session middleware and sequentialize function from the bot's error boundary.
- Simplified the key generator function for rate limiting by condensing its implementation.
- Enhanced overall code clarity and maintainability in the bot's configuration.
2025-08-25 11:31:53 +03:00
vchikalkin
2067beb05a
feat(help): enhance help command with support information
...
- Updated the help command to include a support message in the Russian localization, providing users with a contact point for inquiries.
- Improved the command response by combining the list of available commands with the new support information, enhancing user experience.
2025-08-22 12:49:40 +03:00
vchikalkin
d985b18f25
feat(locales): update Russian localization with additional contact information
...
- Enhanced the short description in the Russian localization file to include a contact note for user inquiries, improving user support accessibility.
2025-08-22 12:39:19 +03:00
vchikalkin
412c033972
feat(bot): add unhandled command message and integrate unhandled feature
...
- Introduced a new message for unhandled commands in Russian localization to improve user feedback.
- Integrated the unhandled feature into the bot's middleware for better command handling.
2025-08-21 18:53:29 +03:00
vchikalkin
b56992a995
fix(registration): improve error handling for customer creation
...
- Updated error handling in the registration feature to return a generic error message when documentId is not present, enhancing user experience by providing clearer feedback.
2025-08-21 18:48:41 +03:00
vchikalkin
89b0f0badf
feat(bot): integrate Redis and update bot configuration
...
- Added Redis service to both docker-compose files for local development and production environments.
- Updated bot configuration to utilize the Grammy framework, replacing Telegraf.
- Implemented graceful shutdown for the bot, ensuring proper resource management.
- Refactored bot commands and removed deprecated message handling logic.
- Enhanced environment variable management for Redis connection settings.
- Updated dependencies in package.json to include new Grammy-related packages.
2025-08-21 18:24:30 +03:00
Vlad Chikalkin
1075e47904
Update message.ts
2025-07-04 10:08:05 +03:00
vchikalkin
1e4e4aa336
fix(bot): improve text clarity in messages and commands list
2025-07-03 22:03:09 +03:00
vchikalkin
1c295a4b41
refactor(bot): add comments
2025-07-03 21:36:44 +03:00
vchikalkin
d9b054df14
feat(bot): add phone number validation and error handling for contact messages
...
set active: true after full registration
2025-07-03 21:30:17 +03:00
vchikalkin
33a20b9f2e
refactor(bot): replace CustomersService with RegistrationService for customer management
2025-07-03 19:44:36 +03:00
vchikalkin
d41194f177
fix(bot): streamline customer creation logic by checking for existing customer before creating a new one
2025-07-03 19:02:25 +03:00
vchikalkin
28e88e02aa
fix(bot): remove extra newline in commands list for improved formatting
2025-07-03 18:19:44 +03:00
vchikalkin
8feb0d3c05
feat(bot): add profile editing prompt to commands list
2025-07-03 18:03:33 +03:00
Vlad Chikalkin
7bcae12d54
Fix/bugs after first release ( #26 )
...
Build & Deploy Web & Bot / Build and Push to Docker Hub (push) Has been cancelled
Build & Deploy Web & Bot / Deploy to VPS (push) Has been cancelled
* web/packages: upgrade next
* fix(api/orders): update master validation logic to handle optional masters
* fix(api/notify, api/orders): enhance notification messages and update order state handling for masters
* fix react typings
* refactor(order-buttons, action-panel): streamline button handlers and add return functionality
* fix(contacts, orders): replace empty state messages with DataNotFound component for better user feedback
* feat(bot): add share bot command and update environment configuration for BOT_URL
* fix: pnpm-lock.yaml
* feat(bot): implement add contact wizard scene and enhance contact handling logic
* feat(profile): add BookContactButton component to enhance booking functionality
* fix(order-buttons): update cancel and confirm button logic based on order state
* feat(service-select): share services list for all
enhance service card display with duration formatting and improve layout
2025-07-03 16:36:10 +03:00
vchikalkin
79c404749c
apps/bot: fix Dockerfile
Build & Deploy Web & Bot / Build and Push to Docker Hub (push) Has been cancelled
Build & Deploy Web & Bot / Deploy to VPS (push) Has been cancelled
2025-07-02 20:50:30 +03:00
vchikalkin
7a3dd4688b
fix apps/bot build
Build & Deploy Web & Bot / Build and Push to Docker Hub (push) Has been cancelled
Build & Deploy Web & Bot / Deploy to VPS (push) Has been cancelled
2025-07-02 19:55:15 +03:00
vchikalkin
ecc7b44d6d
fix build web with docker compose
Build & Deploy Web & Bot / Build and Push to Docker Hub (push) Has been cancelled
Build & Deploy Web & Bot / Deploy to VPS (push) Has been cancelled
2025-07-02 17:46:33 +03:00
vchikalkin
aa8521fec7
add docker-compose and CI/CD workflow for web and bot services
Build & Deploy Web & Bot / Build and Push to Docker Hub (push) Has been cancelled
Build & Deploy Web & Bot / Deploy to VPS (push) Has been cancelled
2025-06-27 23:12:06 +03:00
Vlad Chikalkin
c5799a7f00
Feature/orders ( #25 )
...
* add contacts scroller
* add service select
* add calendar & time picker
* context/order: add masterId
* Revert "context/order: add masterId"
This reverts commit d5d07d7b2f5b6673a621a30b00ad087c60675a3f.
* components/order-form: add back button
* disable submit button if no customer selected
* disable submit button if no service selected
* service component: comment span
* save selected date to context
* fix calendar padding
* hooks/slot: rename index -> master
* slot list: render immediately
* fix step components rendering
* add check icon for masters
* Revert "add check icon for masters"
This reverts commit cc81a9a504918ebbffcca8d035c7c4984f109957.
* prepare for split contacts grid into masters/clients grid
* create MastersGrid & master-select step
* optimize useCustomerContacts
* add ClientsGrid & 'client-select' step
* add self to masters list & border avatar
* context/order: split into files
* hooks/profile: allow pass empty args to useProfileQuery/useProfileMutation
* context/order: skip client-select in client steps
* packages: upgrade next@15.3.0
* .vscode: add launch.json
* back-button: fix steps using
* contacts: skip client step for client
* fix react types
* ServiceSelect: fix padding
* Revert "contacts: skip client step for client"
This reverts commit db9af07dab9df9428561a1952f5a2c91c5b9d88d.
* fix steps for client & master
* split datetime-select into files
* improve useSlots hook
* migrate from order context to zustand store
* pass order store via context
* fix submit button not working
* skip master select for master & client select for client
* select time feature & get final order values
* apps/web: rename actions/service -> actions/services
* create order works!
* split next-button into two buttons
* add result pages (success, error)
* packages/graphql: add eslint
* merge branch 'refactor-api' (#23 )
* refactor customer api
* refactor slots api
* hooks/customers: use invalidateQueries
* refactor services api
* optimize hooks queryKey
* refactor orders api
* typo refactor hooks
* fix telegramId type (number)
* fix bot with new api
* rename customers masters & clients query
* fix useClientsQuery & useMastersQuery query
* new line after 'use client' & 'use server' directives
* move getAvailableTimeSlots to server
* getAvailableTimeSlots: add filter by orders
* take into service duration when computing times
* fix GetSlotsOrders order
* take into existing orders when computing times
* fix build
* app/orders: fill page with content
* stores/order: split into slices
* components/orders: remove nested components dirs
* move order store -> orders\order-store
* replace ScheduleTimeContext with ScheduleStore
* fix slots queries
* context: rename contexts properly
* finally organized stores & context
* move order-card & time-range to @/components/shared
* Refactor/components folder structure (#24 )
* refactor components/navigation
* refactor components/orders
* refactor components/profile
* refactor components/schedule
* remove components/common/spinner
* add launch.json
* add horizontal calendar
* remove context/date.tsx
* optimize orders list fetching
* add numberOfDaysBefore param
* fix orders list in slot page
* graphql/api: remove throw new Error
* horizontal-calendar: switch months by arrow buttons
* SlotCard: use SlotComponentProps type
* stores/schedule: export useScheduleStore
* SlotPage: add page header title
* contacts: mark inactive contacts
* prefetchQuery customer profile pages
* fix create slot
* packages: radash -> radashi
* fix queries, using formatDate & formatTime on client
* graphql: remove rename operations files
* fix create order query
* fix show actual slot status after slot update
* order page
* slot page: replace buttons with floating panel
* fix blur & colors
* fix floating panel overflows content
* hide ClientsOrdersList for non masters
* hooks/services: rename input -> variables
* move OrderCard types close to component
* exact types for Slot components & page
* app/profile: show shared orders
* order-services: fix types
* order page: add buttons
* order-card: add colors
* add order status alert
* fix badges & alerts
* take into account cancelled and completed orders in the slot list
* action panel: hide if no handlers
* highlight days with slots in schedule calendar
* highlight days in horizontal calendar
* remove getSlotsOrders fn
* show masters avatar in orders list
* fix auth redirects
* fix orders list for client
* create useIsMaster hook to prevent duplication
* order: revert cancel button for master
* FloatingActionPanel: block buttons while pending request
* hooks: invalidate orders & slots after mutate & delete
* order: revert approve button for master
* api/orders: protect update order
* order-card: show date
* order-card: add showDate variables in props
* order: add repeat button
* disable dashboard button
* apps/bot: beautify messages
* order: notify to telegram messages
* orderUpdate: add status info
2025-06-27 13:44:17 +03:00
Vlad Chikalkin
06be87f0ec
Feature/records ( #22 )
...
* components/profile: rename components files
* components/profile: organize files & folders
* split DataCard to 2 components
* [2] components/profile: organize files & folders
* data-card: fix phone field disabled
* fix card header color
* add schedule button for master
* fix navigation & profile background
* add basic schedule page
* fix bottom navbar overflows content
* header: remove bottom margin
* replace vanilla calendar with shadcn/ui one
* add slot functional
* fix forbidden error
* add slot operations
* show slots
* filter by selected day
* add hook useSlots
fix update slots list after add slot
fix initial fetch slots
* use slots hooks
* split edit-slot-form into files
* rename /time-slots -> /components
* refactor components & folders structure
* add feature: delete slot
* hooks/slot: update query keys
* add hooks/profile
* add hook useProfileMutation
* use useProfileMutation hook for update role
* rename useProfile -> useProfileQuery
* fix useProfileQuery queryKey
* add hook useContactsQuery
* remove unused ternary operator
* header: add backdrop blur
* create slot cards
* fix elements y center
* fix getSlots filters
* ui/ux improvements
* fix date time types & names
* move profile components from sub folder
* add basic slot page
* fix add slot form padding x
* add slot buttons
* extend slot card information
* fix import type
* use Container in pages
* change orange -> yellow for dark
* use Loading spinner in slots list
* refactor \components\schedule dir structure
* add orders list
* change query & mutation keys
* change url /profile/schedule/slot/ -> /slots/
* order: show services
* remove prefetchQuery
* bring the results of queries and hooks into a single form
* react query: globally show error toast
* add font inter
* fix header: center text
* orders: add sorting
* order card: add avatar
* rename records -> orders
* reduced text size
* fix slot buttons
* fix datetime card ui
* fix header: center text (finally)
* layout/container: last:mb-4
* fix type
* slot-datetime: use ReadonlyTimeRange
* rename files & components
* remove unnecessary context using
* feature: edit slot time
* fix: selected day reset after go back to /schedule
* rename AddTimeRange -> EditableTimeRangeForm & refactor
* fix some elements on page before data loaded
* fix text size
* slot-card: remove gap
* slot-date: remove margin
* fix slots & orders layout
* toast: show error text in ui
2025-02-20 18:11:28 +03:00
vchikalkin
87d327fe9f
apps/bot: команда /becomemaster
2025-01-27 17:55:35 +03:00
Vlad Chikalkin
10b36978fe
Feature/10 contacts ( #16 )
...
* apps/bot: add feature add contact
* apps/bot: check role 'master' before add contact
* apps/bot: rename createCustomer -> createUser
* remove ';'
* app/bot: add contact define name & phone
* apps/bot: check user already exists w/o telegramId (invited)
* Чтобы добавить контакт, сначала поделитесь своим номером телефона.
* apps/bot: create or update functions
* apps/bot: remove api.ts -> move getCustomer to packages/graphql/api
* packages/graphql: add api/customer tests
* tests for createOrUpdateClient
* fix(apps/web): user is undefined
* fix(apps/web): actions getCustomer
* feat(apps/web): update user photo on app launch
* rename page 'masters' -> 'contacts'
* feat(apps/web): add basic /contacts page
* fix app layout
* refactor customer queries
* add action getProfile
* get customer contacts
* use zustand for contacts
* add loading spinner
* rename filteredContacts -> contacts
* replace zustand with @tanstack/react-query
* profile: use react-query
* refactor updateRole function
* move updateRole closer to profile-card
* beautify actions
* add page 'profile/[telegramId]'
* profile: add button "message to telegram"
* profile: add call feature
* app/bot: normalize phone before register
* do not open keyboard on page load
* contacts: loading spinner
* telegram login: customer.active=true
* update name on telegram first login
2025-01-20 18:11:33 +03:00
vchikalkin
f4377f160f
packages: cleanup catalog
2025-01-10 12:27:44 +03:00
vchikalkin
5b996fbf68
refactor packages/graphql structure
2024-12-23 19:55:58 +03:00
vchikalkin
5d8b2ffc6b
move all graphql functional to packages/graphql
2024-12-23 19:07:25 +03:00
vchikalkin
6ec85bd234
pnpx codemod pnpm/catalog
2024-12-23 18:34:01 +03:00
vchikalkin
23e29f90cd
apps/bot: add vitest
2024-12-23 18:30:55 +03:00
vchikalkin
4ecac41396
apps/bot: check user already exists
2024-12-23 15:14:18 +03:00
vchikalkin
5b14a1a75a
apps/bot: add function getClientWithToken
2024-12-23 14:34:57 +03:00
vchikalkin
1d4584bd6f
apps/bot: add create-customer functional
2024-12-22 17:24:32 +03:00
vchikalkin
ab65579ccc
pnpx codemod pnpm/catalog
2024-12-17 15:18:42 +03:00
vchikalkin
3f4f47ed8e
apps: add bot
2024-12-17 15:13:45 +03:00