* 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
55 lines
1.5 KiB
JSON
55 lines
1.5 KiB
JSON
{
|
|
"name": "web",
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "dotenv -e ../../.env.local next dev --turbopack",
|
|
"build": "next build",
|
|
"start": "next start",
|
|
"lint": "next lint",
|
|
"check-types": "tsc --noEmit",
|
|
"lint-staged": "lint-staged",
|
|
"test:unit": "vitest",
|
|
"test:e2e": "playwright test"
|
|
},
|
|
"dependencies": {
|
|
"@repo/ui": "workspace:*",
|
|
"@tanstack/react-query": "^5.64.1",
|
|
"@telegram-apps/sdk-react": "^2.0.19",
|
|
"graphql": "catalog:",
|
|
"lucide-react": "catalog:",
|
|
"next": "^15.1.0",
|
|
"next-auth": "^4.24.11",
|
|
"next-intl": "^3.26.0",
|
|
"next-themes": "^0.4.4",
|
|
"radash": "^12.1.0",
|
|
"react": "catalog:",
|
|
"react-dom": "catalog:",
|
|
"use-debounce": "^10.0.4",
|
|
"zod": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.49.1",
|
|
"@repo/eslint-config": "workspace:*",
|
|
"@repo/graphql": "workspace:*",
|
|
"@repo/lint-staged-config": "workspace:*",
|
|
"@repo/typescript-config": "workspace:*",
|
|
"@testing-library/react": "^16.1.0",
|
|
"@types/node": "catalog:",
|
|
"@types/react": "catalog:",
|
|
"@types/react-dom": "catalog:",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"autoprefixer": "catalog:",
|
|
"dotenv-cli": "catalog:",
|
|
"eruda": "^3.4.1",
|
|
"jsdom": "^25.0.1",
|
|
"lint-staged": "catalog:",
|
|
"postcss": "catalog:",
|
|
"tailwindcss": "catalog:",
|
|
"typescript": "catalog:",
|
|
"vite-tsconfig-paths": "catalog:",
|
|
"vitest": "catalog:"
|
|
}
|
|
}
|