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
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
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
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
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
Deploy Canina / deploy (push) Has been cancelled
2026-07-29 16:40:42 +03:30
parsa aghaei
a767e9a6b8
merge: sync develop fixes into main
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
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
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
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
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
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)
...
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
...
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
...
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
...
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
...
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
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
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
parsa aghaei
67d6f71d7a
fix: resolve product images falling back to logo by mapping real URLs in database seed, correct 2x price discrepancy to match PDF catalog exactly, and set local cover for third video
2026-07-15 11:51:10 +03:30
parsa aghaei
cf705ea121
style: improve health advisor UX, fix broken thumbnails, add Persian equivalents to product names for SEO, and refine card title alignments
2026-07-15 11:40:39 +03:30
parsa aghaei
4d14885feb
feat: complete currency, font, new pages, footer logo, dynamic PDP layout and custom dosage titles
2026-07-14 20:03:25 +03:30
devops
2c47e35153
fix: IngredientWiki fallback to scientificTerms from API with keywords as benefits
Deploy Canina / deploy (push) Successful in 1m8s
2026-07-14 12:27:43 +00:00
devops
f71b22a664
fix: wiki sortBy, wiki detail page endpoint, blog SSR URL, and upload volume
Deploy Canina / deploy (push) Successful in 1m34s
2026-07-14 12:19:40 +00:00
devops
10849233de
trigger ci rebuild
Deploy Canina / deploy (push) Successful in 49s
2026-07-14 11:59:00 +00:00
DevOps
3c8f7729c2
ci: use sh shell instead of bash for ci-runner (Alpine based)
Deploy Canina / deploy (push) Failing after 1m45s
2026-07-14 03:32:53 +00:00
DevOps
a5b1b31ef8
ci: trigger deploy after SSH config fix
Deploy Canina / deploy (push) Failing after 1s
2026-07-13 13:13:52 +00:00
DevOps
1b2040c880
fix: production URLs for admin panel, seed __dirname, nginx.conf
Deploy Canina / deploy (push) Failing after 8m3s
2026-07-13 11:20:43 +00:00
parsa aghaei
60939f14ea
chore: remove committed build artifacts (node_modules, dist, .next)
...
- Remove node_modules, dist, .next from git tracking
- Add .next and *.tsbuildinfo to .gitignore
- Remove Iranian mirrors from Dockerfiles (arvancloud.ir)
- Add npm ci step for dependency installation
- Ready for VPN-based internet access workflow
2026-07-12 13:24:33 +03:30
parsa aghaei
e236190aaa
nodemodules added to repo
2026-07-11 20:56:16 +03:30
parsa aghaei
b0d639996b
dockerfile changes
2026-07-11 20:15:19 +03:30
parsa aghaei
40d750ad4b
fix: hero image configurable via uiText + seed no longer overwrites admin values
...
- Hero.tsx reads hero_image_url from uiText store first, falls back to banners then default
- Seed script now only creates keys that don't exist (no overwrite)
- Added hero_image_url key to seed + admin panel UI texts groups
- Reverted DEFAULT_TEXTS initialization (caused hydration mismatch)
- settingsStore back to empty init, fetchSettings populates from API
2026-07-11 18:25:59 +03:30
parsa aghaei
1a0c98a34e
feat: dynamic UI texts system + admin panel editor + Vazirmatn local font + bug fixes
...
- Add getText() system for all homepage sections (Header, Hero, FeaturedProducts, SmartAdvisor, VetGallery, Footer)
- Add UITexts admin page in frontend/admin-panel with search, group collapse, per-key save
- Add seed-ui-texts.ts with 102 texts in 9 groups
- Add local VazirmatnVariable.woff2 font, remove CDN + Inter references
- Fix hero image path, productService return type { data, meta }
- Fix ArchivePage pagination + CATEGORIES list + breadcrumbs
- Fix BlogPage/Wiki page links + brightness-0 invert removal
- Fix IngredientWiki search + product links + placeholder
- Fix all getProducts() callers for { data } destructuring
- Fix sitemap.ts, CartDrawer, B2BPortal, CheckoutPage type issues
- Add .gitignore for /fonts/ and /backend/uploads/
2026-07-11 17:19:55 +03:30
parsa aghaei
ab7ed279c8
fix: await params Promise in blog and wiki [slug] pages for Next.js 16
...
- blog/[slug]/page.tsx: fix params type to Promise and await it
- wiki/[slug]/page.tsx: fix params type to Promise and await it + Fix API port from 4000 to 4001
- blog/page.tsx: fix fallback API URL from port 4000 to 4001
2026-07-11 15:51:29 +03:30
parsa aghaei
7615aa0e51
fix: resolve seed encoding, search param, and wiki data source issues
...
- Fix seed-products.ts TS error (implicit any) and BOM handling
- Re-run full seed to restore correct Persian encoding in DB
- Fix productService query→search param mismatch
- Fix IngredientWiki hardcoded port 4000→use settingsStore
- Restore seed-products-data.json from git after accidental corruption
2026-07-11 15:40:49 +03:30
parsa aghaei
cd17a532d9
fix: resolve backend TS compilation errors, startup order, and add clipboard paste upload
...
- Fix products.service.ts: ingredients -> ingredientList (Prisma relation name)
- Fix seed-blogs.ts: template literal refactor (array join) to avoid esbuild parse error
- Fix seed-custom.ts: category string -> connectOrCreate relation
- Add start-dev.js: sequential startup (backend first, then frontends)
- Add Ctrl+V paste upload to admin MediaSelector component
- Create missing images/vets/ and images/slider/ directories
2026-07-11 13:51:12 +03:30
parsa aghaei
0ea6c6d271
feat: enrich all site content with Canina pharma research data
...
- Add 20 new products to frontend products.ts (total 29 products)
- Enrich existing 9 product descriptions with biochemical/clinical details
- Add new blog articles with real content from research document
- Update UI texts with Canina brand history (1984 founding, IFS/HACCP)
- Add 9 new scientific terms (Ca:P, D3, BARF, biotin, taurine, etc.)
- Expand INGREDIENTS_WIKI with collagens, biotin, taurine entries
- Add new medical options (heart disease, parasites) to SmartAdvisor
2026-07-11 13:34:22 +03:30
parsa aghaei
140872c888
fix: resolve Hero image CORS, button contrast, floating labels, footer border + refactor product seeder with full catalog data from JSON + add barcode/buyPrice/productGroup fields to Product model
2026-07-11 13:21:30 +03:30
parsa aghaei
3dedc89ee1
تغییرات کلی در backend و frontend
2026-07-11 12:30:17 +03:30
71f5ac2fa6
fix: resolve unique constraint bug in prisma seeders and run products/home seeders successfully
2026-07-10 18:20:05 +03:30
f69537a688
feat: rename brand from canina to canino across codebase
2026-07-10 16:32:31 +03:30
2851ef8a25
feat: complete backend swagger annotations, admin pages pagination, and frontend application fixes
2026-07-10 16:13:52 +03:30
24137beb32
docs: complete swagger annotations for auth, home, blogs and wiki endpoints
2026-06-12 23:30:22 +03:30
dcfc4acae4
fix: restore wiki to dictionary, create dynamic blog pages and backend wiki CRUD
2026-06-12 23:14:21 +03:30
945c007a79
feat: complete app democking, fix types, add blogs api
2026-06-12 22:53:57 +03:30
6027e635db
feat: implement backend auth and fix pet profile payload
2026-06-12 22:37:35 +03:30
82ab454647
Fix Admin panel categories modal, add error handling, enforce cursor-pointer globally
2026-06-12 21:57:09 +03:30
69502fc380
feat: implement advanced reports, pagination for all tables, global settings, and discounts modules
2026-06-12 16:28:06 +03:30
a7ebb8d792
feat: complete admin panel major functionalities including responsive layout, recharts, custom modals, inline editing, and loading states
2026-06-12 16:19:57 +03:30
ee041d4e52
fix: resolve Hyper-V reserved port collisions and Tailwind v4 CSS
2026-06-12 14:18:55 +03:30
29ab7f4141
fix: change frontend and backend ports to resolve EACCES 3000
2026-06-12 14:05:50 +03:30
0fa65c0802
feat: backend database changes for advanced SEO fields
2026-06-12 01:25:08 +03:30
eff6c00a9c
feat: complete phase 2 mock removal and db seed
2026-06-12 00:58:10 +03:30
4b69932409
chore: save initial uncommitted changes
2026-06-12 00:21:03 +03:30
40ff169dc2
feat: complete testing, security, dynamic content, and devops overhaul
2026-05-27 02:00:14 +03:30
467532713c
feat: connect UI texts, address CRUD, OTP autofocus and profile to backend
2026-05-26 21:39:14 +03:30