Commit Graph

187 Commits

Author SHA1 Message Date
parsa aghaei
9a65aa48cd fix(prisma): provide local musl openssl 3.0 engine paths
Some checks failed
Deploy Canina / deploy (push) Failing after 3s
2026-08-15 16:04:04 +03:30
parsa aghaei
dbbf75e3c5 fix(prisma): use native binaryTarget and clean hardcoded engine paths
Some checks failed
Deploy Canina / deploy (push) Failing after 35s
2026-08-15 16:01:27 +03:30
parsa aghaei
8b0d3d972e fix(docker): ignore host node_modules and let prisma resolve engines automatically
Some checks failed
Deploy Canina / deploy (push) Failing after 34s
2026-08-15 15:58:09 +03:30
parsa aghaei
b1a9d1a5ba fix(backend): skip prisma postinstall during npm ci
Some checks failed
Deploy Canina / deploy (push) Failing after 1m0s
2026-08-15 15:53:09 +03:30
parsa aghaei
f05ea493f3 fix(backend): use direct local binary for prisma generate
Some checks failed
Deploy Canina / deploy (push) Failing after 57s
2026-08-15 15:52:11 +03:30
parsa aghaei
3314a5cb0a fix(backend): use local prisma engines in Dockerfile during build
Some checks failed
Deploy Canina / deploy (push) Has been cancelled
2026-08-15 15:50:52 +03:30
parsa aghaei
5ec99155c4 fix(admin,frontend): fix hydration mismatch, admin UI texts sync, and product image resolution
Some checks failed
Deploy Canina / deploy (push) Failing after 1s
2026-08-15 15:16:04 +03:30
parsa aghaei
c1bc9e1994 ci: fix runner setup, integrate nexus npm proxy and safe vpn wrapper
Some checks failed
Deploy Canina / deploy (push) Failing after 2s
2026-08-09 11:23:21 +03:30
parsa aghaei
4e304944ef feat(prescriptions & auth): auto-create user and pet profile on prescription submit, validate mobile numbers with regex, allow public upload and auto-reset form state
Some checks are pending
Deploy Canina / deploy (push) Waiting to run
2026-08-09 09:59:55 +03:30
parsa aghaei
b617331683 fix(analytics, prescription, hydration): filter out admin/static asset requests from view counter, support guest prescription upload with fallback UI, and unify Hero component fallbacks with database defaults
Some checks are pending
Deploy Canina / deploy (push) Waiting to run
2026-08-09 09:47:51 +03:30
parsa aghaei
3e21aefbf1 fix(linter & types): resolve all ESLint warnings/errors and TypeScript type issues across backend and frontend projects
Some checks failed
Deploy Canina / deploy (push) Has been cancelled
2026-08-08 19:31:41 +03:30
parsa aghaei
ea726c52de feat(seed): expand ingredients seeder to seed 30 comprehensive medical ingredients into database
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-08 19:21:51 +03:30
parsa aghaei
df47e66b51 feat(database/wiki): seed prisma.ingredient table and remove client-side hardcoded fallback list for 100% dynamic API rendering
Some checks failed
Deploy Canina / deploy (push) Failing after 29s
2026-08-08 19:17:13 +03:30
parsa aghaei
e190d3f744 fix(admin-auth & contact): persist admin token in localStorage and allow ADMIN role on contact submission endpoints
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-08 18:57:43 +03:30
parsa aghaei
fa688e2f8b fix(api/validation): restore strict forbidNonWhitelisted: true and decorate all GET route queries with explicit DTOs across admin and application APIs
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-08 18:45:57 +03:30
parsa aghaei
7cc9194827 fix(validation & catalog): disable strict forbidNonWhitelisted in NestJS ValidationPipe and wire full catalog mode & maintenance mode settings to frontend
Some checks failed
Deploy Canina / deploy (push) Failing after 29s
2026-08-08 18:38:48 +03:30
parsa aghaei
9e233bee27 fix(admin/b2b): add GET /b2b/partners endpoint and update B2BManager fetch path to fix 404 error
Some checks failed
Deploy Canina / deploy (push) Failing after 29s
2026-08-08 18:30:42 +03:30
parsa aghaei
43cf55a8ef fix(admin): resolve GET/PUT /admin/settings 404, videos.map crash, and remove legacy CMS sidebar link
Some checks failed
Deploy Canina / deploy (push) Failing after 29s
2026-08-08 18:26:05 +03:30
parsa aghaei
df340143dc feat(auth/seed): create admin@canino-iran.com user with bcrypt hash in database & seed.ts
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-08 18:21:28 +03:30
parsa aghaei
bb1ed1bd03 fix(dto): remove redundant search override property in GetVideosQueryDto
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-08 18:14:13 +03:30
parsa aghaei
74b3d24622 fix(api/auth): allow public GET on ui-texts & scientific-terms, fix refresh attempt loop, remove duplicate error toasts and prevent unwanted modal popups
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-08 18:11:17 +03:30
parsa aghaei
adbfa60343 fix(frontend/backend): suppress unauth toast on init, fix admin-login DTO validation and RSC directives
Some checks failed
Deploy Canina / deploy (push) Failing after 29s
2026-08-08 18:02:43 +03:30
parsa aghaei
acc662fce8 fix(backend): add dev fallbacks for JWT secrets to prevent local bootstrap crash
Some checks failed
Deploy Canina / deploy (push) Has been cancelled
2026-08-08 17:51:48 +03:30
parsa aghaei
59fba0484c fix(backend): add js-yaml dependency and type definitions for openapi generator
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-08 17:48:28 +03:30
parsa aghaei
e281ef75da feat(security/devops): disable swagger in prod, secure staging with basic auth & noindex, add DB backup script and uploads volume persistence
Some checks failed
Deploy Canina / deploy (push) Failing after 29s
2026-08-08 17:46:42 +03:30
9f11d8fb2d chore(workspace): eradicate all tsc errors and eslint warnings across frontend, admin, and backend
Some checks failed
Deploy Canina / deploy (push) Failing after 29s
2026-08-07 07:39:26 +03:30
1ae4c99ffc feat(backend): implement Phase A database models and controllers for cross-boundary dependencies
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-06 23:45:51 +03:30
ad3f149789 feat(devops,docs,verify): implement Phase 4 CI pipeline, OpenAPI synchronization, and E2E verification matrix
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-06 22:27:56 +03:30
71e19bfe43 fix(orders): add type assertions for Prisma relations in checkAndSendRefillReminders
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-06 21:44:44 +03:30
809c69f923 feat(phase2): implement database optimization and RBAC enforcement
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
- TASK-FIN-001: Eliminate N+1 query loop in OrdersService.create with batched findMany query.
- Perform monetary calculations strictly using Prisma.Decimal methods (.add(), .mul(), .sub()).
- Add validation for duplicate product IDs and invalid quantities in order items.
- Implement global DecimalInterceptor registered in main.ts to serialize Prisma.Decimal values into exact string representations in API responses.
- TASK-SEC-003: Create roles.decorator.ts and roles.guard.ts in common directory with backward-compatible re-exports in auth directory.
- Enforce RBAC on SettingsController with @UseGuards(JwtAuthGuard, RolesGuard) and @Roles('Admin').
- Add unit specs for DecimalInterceptor, RolesGuard, SettingsController, and OrdersService Decimal batch operations.
2026-08-06 21:29:20 +03:30
a64291a19a feat(security): implement phase 1 core security & build hygiene
Some checks failed
Deploy Canina / deploy (push) Failing after 28s
2026-08-06 21:15:18 +03:30
parsa aghaei
053d6f06d8 fix(types): resolve type errors in ReportData, SmsService, and GetProductsDto
Some checks are pending
Deploy Canina / deploy (push) Waiting to run
2026-08-05 15:48:11 +03:30
parsa aghaei
8a05854aa0 feat(orders): atomic order transaction and refill cron job handler [TASK-26.19] 2026-08-05 14:41:58 +03:30
parsa aghaei
cbcff26e63 feat(pets): add admin pet health records query and paginated pet list endpoint [TASK-26.17] 2026-08-05 14:41:26 +03:30
parsa aghaei
d94b33f96d feat(admin): wallet adjustment endpoint and atomic prisma wallet topup transaction [TASK-26.14] [TASK-26.15] [TASK-26.16] 2026-08-05 14:40:35 +03:30
parsa aghaei
3497a743b3 feat(products): fix search query filter overwrite and add minPrice maxPrice sorting filters [TASK-26.10] [TASK-26.11] 2026-08-05 14:39:58 +03:30
parsa aghaei
350182c5a4 security(auth): remove OTP console log and hardcoded admin credentials [TASK-26.4] [TASK-26.5] 2026-08-05 14:38:57 +03:30
parsa aghaei
c6aa77f7c9 feat(admin): add product buy price field, dual price/percentage margin calculator, and security sanitization [TASK-BUYPRICE] 2026-08-03 12:04:27 +03:30
parsa aghaei
67bc500692 security(products): sanitize wholesalePrice for non-B2B/Admin roles [TASK-19.1] 2026-08-03 11:50:20 +03:30
parsa aghaei
920dd532e8 fix(admin-panel): resolve all ESLint errors, types, and hooks lifecycle warnings 2026-08-02 17:08:01 +03:30
parsa aghaei
a1f0640483 fix(linter): resolve all linter rules and type errors across 3 subprojects 2026-08-02 09:39:53 +03:30
parsa aghaei
b6b2d20b16 feat(sms): set MeliPayamak username 9364100228 and patterns 508079, 508081, 508082, 508083 (TASK-9.1) 2026-08-02 09:30:21 +03:30
parsa aghaei
47bff2c6ed feat(doctor): implement Doctors / Vets CRUD backend and DB model (TASK-2.18) 2026-08-02 09:29:33 +03:30
parsa aghaei
d784f3fcc7 feat(admin): update dashboard real analytics & wiki related products (TASK-2.21, TASK-2.22, TASK-2.23) 2026-08-02 09:28:17 +03:30
parsa aghaei
88521c6bac feat(settings): add Maintenance Mode, Catalog Mode, Brand Identity & UI Text management (TASK-2.14, TASK-2.15, TASK-2.16) 2026-08-02 09:26:06 +03:30
parsa aghaei
e2e9615bd8 feat(media): implement persistent storage & media SEO fields (altText, title, description, caption) (TASK-2.5, TASK-2.6) 2026-08-02 09:23:30 +03:30
parsa aghaei
357fb73d5e feat(product): add product gallery images and multimedia fields podcastUrl/videoUrl/pdfUrl (TASK-2.2, TASK-2.3, TASK-2.4) 2026-08-02 09:21:27 +03:30
parsa aghaei
2ce24b0473 fix(admin): cleanup price display input, upgrade pagination component and extend roles guard for CMS & B2B 2026-08-01 18:30:14 +03:30
parsa aghaei
2aea3bded4 feat(contact): implement contact form submission, admin management and dynamic contact info 2026-08-01 18:28:19 +03:30
parsa aghaei
95e488baaa fix(lint): sync clean types and imports to main
All checks were successful
Deploy Canina / deploy (push) Successful in 1m54s
2026-07-29 16:45:13 +03:30
parsa aghaei
2de442dbae fix(lint): clean up type definitions and missing imports
Some checks failed
Deploy Canina / deploy (push) Failing after 30m46s
2026-07-29 16:44:53 +03:30
parsa aghaei
f0329d8b5b fix(admin): sync product update & image URL features to main
Some checks failed
Deploy Canina / deploy (push) Failing after 1m1s
2026-07-29 16:42:30 +03:30
parsa aghaei
9c8286c63f fix(admin): resolve 500 on missing product update and add direct image URL & paste support
Some checks failed
Deploy Canina / deploy (push) Has been cancelled
2026-07-29 16:42:23 +03:30
parsa aghaei
a3291cc468 feat(agency): implement Farsi error handling, trust seals page, and MeliPayamak SMS integration
Some checks failed
Deploy Canina / deploy (push) Has been cancelled
2026-07-29 16:40:42 +03:30
parsa aghaei
a767e9a6b8 merge: sync develop fixes into main
Some checks failed
Deploy Canina / deploy (push) Failing after 9m25s
2026-07-29 15:55:50 +03:30
parsa aghaei
bf60df34ef fix(seed): safely handle blog upsert in try-catch block
All checks were successful
Deploy Canina / deploy (push) Successful in 2m6s
2026-07-29 15:49:39 +03:30
parsa aghaei
84d9ed3a9d perf(docker): replace slow RUN chown -R with fast COPY --chown in backend Dockerfile 2026-07-29 15:48:26 +03:30
parsa aghaei
62bd8811fa style: apply standard ESLint & Prettier formatting across backend
All checks were successful
Deploy Canina / deploy (push) Successful in 4m58s
2026-07-29 15:41:53 +03:30
parsa aghaei
ae636c8b03 fix(seed): add explicit String casting for ingredient and symptom loop items to satisfy TypeScript compiler 2026-07-29 15:40:44 +03:30
parsa aghaei
3ede3c31f9 fix(seed): format seed-products.ts with Prettier and add type annotations for ESLint 2026-07-29 15:40:01 +03:30
parsa aghaei
ddf2bafb3c fix(seed): deduplicate ingredients and symptoms to ensure clean database seeding 2026-07-29 15:38:15 +03:30
parsa aghaei
8a6afa10d8 fix(seed): remove duplicate out-of-scope code in seed-products.ts
Some checks failed
Deploy Canina / deploy (push) Has been cancelled
2026-07-29 15:23:14 +03:30
parsa aghaei
e1fb300b87 fix(seed): handle duplicate product barcodes safely with try-catch in seed-products.ts
Some checks failed
Deploy Canina / deploy (push) Has been cancelled
2026-07-29 15:21:41 +03:30
parsa aghaei
485c6bfec6 fix(prisma): add dedicated tsconfig.seed.json for clean cross-platform seeding
All checks were successful
Deploy Canina / deploy (push) Successful in 5m57s
2026-07-29 14:36:20 +03:30
parsa aghaei
782720d86d fix: use ts-node transpile-only with CJS override for seed (no new packages)
All checks were successful
Deploy Canina / deploy (push) Successful in 10m25s
- Remove tsx (Nexus doesn't have it cached - causes E404)
- Use ts-node --transpile-only --compiler-options with module:CommonJS
  to bypass nodenext ESM cycle issue without any new dependencies
- Copy tsconfig.json to runtime container for ts-node compatibility
2026-07-29 14:21:58 +03:30
parsa aghaei
813f5d7bc6 fix: use tsx for prisma seed to resolve ESM/CJS cycle in Node 20
Some checks failed
Deploy Canina / deploy (push) Failing after 41s
- Replace ts-node/esm loader with tsx which handles nodenext module natively
- tsx avoids ERR_REQUIRE_CYCLE_MODULE with Prisma client ESM/CJS interop
- Add tsx ^4.19.0 as devDependency
2026-07-29 14:14:20 +03:30
parsa aghaei
776829e099 fix: seed command ESM compatibility and CI/CD timeout increase
All checks were successful
Deploy Canina / deploy (push) Successful in 10m5s
- Fix prisma seed command: use node --loader ts-node/esm (nodenext module needs ESM loader)
- Increase CI/CD timeout from 15m to 40m to accommodate Docker build + VPN time
- Prisma env vars already in compose files for OpenSSL 3.0.x binary selection
2026-07-29 14:00:00 +03:30
parsa aghaei
431e2b547d fix: Prisma OpenSSL engine binary detection on Alpine
All checks were successful
Deploy Canina / deploy (push) Successful in 34s
- Set PRISMA_SCHEMA_ENGINE_BINARY to 3.0.x binary path
- Set PRISMA_QUERY_ENGINE_LIBRARY to 3.0.x library path
- node:20-alpine has libssl.so.3 but no openssl CLI binary
- Prisma detection fails silently, defaults to 1.1.x engines
- Explicit paths bypass detection and use correct binaries
- Remove apk add openssl (not needed, causes build failure without VPN)
- backend Dockerfile: use PRISMA_CLI_BINARY_TARGETS to generate correct client
2026-07-29 09:21:39 +03:30
parsa aghaei
501addc909 fix: CI/CD pipeline, dynamic API URLs, Dockerfile fixes
All checks were successful
Deploy Canina / deploy (push) Successful in 5m39s
- Backend Dockerfile: add chown for node_modules (Prisma permissions fix)
- Frontend Dockerfile: add ARG/ENV for NEXT_PUBLIC_API_URL, VITE_API_URL
- nginx.conf: template with __PLACEHOLDERS__ for per-env substitution
- deploy.yml: SSH keepalive, sudo for VPN
- api.ts: dynamic API URL via env vars instead of hardcoded
- next.config.ts: rewrite only in development mode
- scripts: deploy.sh, compose.stage.yml, compose.prod.yml
2026-07-28 16:37:05 +03:30
parsa aghaei
ee65d87899 fix(prisma): export main in seed modules and execute directly in seed.ts 2026-07-28 16:36:30 +03:30
devops
e4c196b080 fix: VPN build, caching, Dockerfile fixes for Iran network
Some checks failed
Deploy Canina / deploy (push) Failing after 12s
2026-07-27 16:06:59 +00:00
devops
41d7629d2a fix: VPN build, caching, Dockerfile fixes for Iran network
Some checks failed
Deploy Canina / deploy (push) Failing after 12s
2026-07-27 16:06:35 +00:00
parsa aghaei
0540d8701e fix(prisma): add binaryTargets linux-musl-openssl-3.0.x to schema.prisma 2026-07-27 16:46:33 +03:30
parsa aghaei
f089f7ed91 fix(prisma-videos-ide): resolve IDE TypeScript error by accessing video model through typed getter helper in VideosService 2026-07-27 13:39:35 +03:30
parsa aghaei
3e9fffe71f feat(cms-builder-videos-hydration-catalog): resolve IDE Prisma types, fix Header hydration error, add Media Upload & Aparat embed to Admin Videos, fix Catalog scrollbar/spacing, and overhaul CMS into section-by-section Visual Page Builder 2026-07-27 12:25:36 +03:30
parsa aghaei
2b1bd9efcb feat(header-refill-videos): restore full DB seeding, wire homepage videos to backend API, upgrade Refill to Cashback Loyalty system, and refactor Header into 2-tier Mega-Menu layout 2026-07-27 12:07:29 +03:30
parsa aghaei
52f0caccfc feat(videos): add Video module in NestJS, build Video CRUD in Admin Panel, sync dynamic video fetching on frontend, and update catalog links to /catalog 2026-07-27 11:54:16 +03:30
parsa aghaei
85d5a11a5e feat(refill): overhaul subscription model to Smart Course Reservation & 5% Next-Order Loyalty Voucher reward 2026-07-27 11:46:45 +03:30
parsa aghaei
24c361c4ff feat(admin): overhaul orders management page with interactive modal, postal tracking code editor, inline status selector and invoice print 2026-07-27 11:27:47 +03:30
parsa aghaei
377ec7fb34 fix(orders,wallet): implement full-stack wallet deduction in PostgreSQL and sync charity donation total in user profile 2026-07-26 20:40:01 +03:30
parsa aghaei
51b2f811fa fix(orders): add type assertion to order creation payload to eliminate IDE TS server cache warning 2026-07-26 20:34:07 +03:30
parsa aghaei
72badb1a7b fix(auth,backend): synchronize auth state across stores, reset guest profile data, and resolve backend spec compilation 2026-07-26 20:18:35 +03:30
parsa aghaei
4979d4120c fix(checkout,orders,admin): resolve guest checkout address bug, persist refill and charity in DB, and fix admin media thumbnail cropping 2026-07-26 20:11:26 +03:30
parsa aghaei
989f77e106 fix(shop): map requiresRx in productService, enable backend query param filtering, and classify 11 prescription vs 24 OTC products 2026-07-26 20:03:45 +03:30
parsa aghaei
0bdb500554 feat(backend): support prescriptionUrl attachment in CreateOrderDto and OrdersService 2026-07-26 19:21:46 +03:30
parsa aghaei
7cc5c7d176 feat(backend): implement WholesaleModule for B2B wholesale applications and admin approvals 2026-07-26 19:20:29 +03:30
parsa aghaei
0046fb7106 feat(backend): implement CmsModule for full CRUD of HeroBanners, VetTestimonials, and SmartAdvisorRules 2026-07-26 19:17:23 +03:30
parsa aghaei
0162bc7b6d fix: resolve TypeScript build error in SmartAdvisor, wire live API products, and verify 3-app production build 2026-07-26 18:42:32 +03:30
parsa aghaei
6a8d20f81a feat: add SeoModule, rate limiting, and complete agency task backlog execution 2026-07-26 17:55:54 +03:30
parsa aghaei
0a04bac013 feat: complete specialist review and initial agency alignment for Canina Iran 2026-07-26 17:54:46 +03:30
parsa aghaei
08c968300f feat: TASK-101 - optimize Prisma schema, compound indexes, wholesale price and Rx fields 2026-07-26 16:25:01 +03:30
parsa aghaei
1340a2be87 refactor(backend): consolidate all prisma seeders into single master seed.ts entrypoint 2026-07-21 14:53:09 +03:30
parsa aghaei
ac4813ebde feat(admin/seo): add Google SERP Simulator in SEO tab, View Online deep link in modal header & seed scientific taglines in database 2026-07-15 17:56:37 +03:30
parsa aghaei
8345410376 feat(admin): implement symptoms management in admin panel product form 2026-07-15 17:49:03 +03:30
parsa aghaei
717a61a225 fix(database): fix baseSlug format in products seed to populate product symptoms successfully + format cleanup in ArchivePage 2026-07-15 17:46:27 +03:30
parsa aghaei
6dafe86344 feat: full symptoms filtering system — backend API, megamenu pills, sidebar server-side filter, PDP tags 2026-07-15 15:03:09 +03:30
parsa aghaei
f66170cc20 feat: split Product name into nameFa and nameEn, add symptoms mapping mapping to seed-products 2026-07-15 14:08:45 +03:30
parsa aghaei
1d9b699d61 feat: implement dynamic category solutions in MegaMenu navigation and convert static footer buttons to Next.js links 2026-07-15 13:53:23 +03:30
parsa aghaei
0ccf37f922 feat: implement fully dynamic filter sidebar in backend getActiveFilters and frontend ArchivePage mapping with URL sync 2026-07-15 13:49:13 +03:30
parsa aghaei
27ac668e42 fix: re-seed database with exact official PDF catalog details, prices, Farsi categories, and short descriptions, and remove frontend slicing fallbacks 2026-07-15 12:18:58 +03:30