Antoni Nuñez Romeu
97008caf31
Añadidos settings de cookies y privacidad
Run Tests on Branches / Detect Changes (push) Successful in 17s
Run Tests on Branches / Backend Tests (push) Successful in 2m30s
Run Tests on Branches / Frontend Tests (push) Successful in 1m54s
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m49s
Run Tests on Branches / Parapharmacy API Tests (push) Successful in 1m48s
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
2026-08-26 17:14:05 +02:00
Antoni Nuñez Romeu
1f918be99d
feat(web): integrate consent flow, Faro gating, TSI gating, and privacy link
2026-08-26 15:19:24 +02:00
Antoni Nuñez Romeu
66055a5e19
feat(web): add HealthConsentModal and PrivacyView components
2026-08-26 15:15:45 +02:00
Antoni Nuñez Romeu
c116a9f525
feat(web): add CookieBanner component
2026-08-26 15:13:40 +02:00
Antoni Nuñez Romeu
a23215ad6b
feat(web): add consent sync utility
2026-08-26 15:11:15 +02:00
Antoni Nuñez Romeu
8f73fdc4f8
feat(i18n): add consent and privacy keys for web (es+ca)
2026-08-26 15:10:07 +02:00
Antoni Nuñez Romeu
d68463548f
Patentes internacionales + Forgot Pwd
Run Tests on Branches / Detect Changes (push) Successful in 19s
Run Tests on Branches / Backend Tests (push) Successful in 2m46s
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 2m24s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
2026-08-18 11:01:54 +02:00
Antoni Nuñez Romeu
87df61ab15
feat: add forgot password and username recovery flow
...
Run Tests on Branches / Detect Changes (push) Successful in 14s
Run Tests on Branches / Backend Tests (push) Successful in 2m24s
Run Tests on Branches / Frontend Tests (push) Successful in 1m57s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
- Add Mailpit SMTP container to docker-compose for dev email capture
- Add nodemailer dependency for email sending
- Add password_reset_tokens table (PG + SQLite)
- Add POST /api/auth/forgot-username endpoint
- Add POST /api/auth/forgot-password endpoint (token-based, 1h expiry)
- Add POST /api/auth/reset-password endpoint
- Create ForgotPasswordModal component (choose mode → email → sent)
- Create ResetPasswordView (token-based new password form)
- Add forgot/recovery links to LoginModal
- Add i18n translations (ES/CA) for the full flow
2026-07-27 15:57:54 +02:00
Antoni Nuñez Romeu
e3e7d2f60b
feat: pharmacy hours status and open now filter
...
Run Tests on Branches / Detect Changes (push) Successful in 17s
Run Tests on Branches / Backend Tests (push) Successful in 2m44s
Run Tests on Branches / Frontend Tests (push) Successful in 1m59s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
- Add is_open_now and is_always_open helpers in backend
- Add backend endpoint enrichment with is_open and is_24h fields
- Add client-side getOpenStatus with 24h, opens-at, opens-tomorrow support
- Add open-now filter toggle in PublicView and SearchView
- Add pharmacy no-hours fallback display
- Add sticky pharmacy controls on scroll
- Add admin hours editor with 24h toggle
- Add translations (es/ca) for all hour-related strings
- Add backend tests for hours logic and pharmacy endpoint
- Remove unused backup test files
2026-07-27 14:32:05 +02:00
Antoni Nuñez Romeu
849763896d
security: harden production configuration and routes
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Frontend Tests (push) Successful in 2m12s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Successful in 2m2s
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
Run Tests on Branches / Backend Tests (push) Successful in 2m8s
2026-07-22 17:24:54 +02:00
Antoni Nuñez Romeu
85fc1ede15
fix: resolve {{count}} interpolation and add notification bell for parapharmacy products
...
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m44s
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m51s
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
- Add interpolation support to t() function in LanguageContext (web + mobile)
- Pass medicine, currentUser, onLoginRequest props to PharmacyList in ProductView
- Remove duplicate title in ProductView (PharmacyList already renders one)
2026-07-17 15:15:18 +02:00
Antoni Nuñez Romeu
854de92be5
fix: add i18n support for parapharmacy products and notification bell
...
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m37s
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m52s
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
- Mobile: Replace hardcoded Spanish in map.tsx with t() calls
- Mobile: Add notification bell to parapharmacy product detail screen
- Mobile: Add map/product i18n keys to es.js and ca.js locales
- Web: Add useTranslation to ProductView.jsx, replace all hardcoded strings
- Web: Add 24 productView.* translation keys to es.js and ca.js locales
- Fix 'Disponible en X farmacias' to respect language setting
2026-07-17 13:04:04 +02:00
Ichitux
d12c575fcf
Merge branch 'main' into feat/i18n-bilingual-ca-es
Run Tests on Branches / Detect Changes (push) Successful in 13s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m45s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Run Tests on Branches / PIP Platform Tests (push) Has been skipped
2026-07-17 07:50:32 +00:00
Antoni Nuñez Romeu
38374341ed
feat(i18n): add bilingual support (Català / Castellano)
...
Run Tests on Branches / Detect Changes (push) Successful in 11s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m44s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Add lightweight i18n system using React Context + useTranslation hook.
No external dependencies. Language persisted in localStorage('ff-lang').
New files:
- src/i18n/locales/ca.js (~410 translation keys)
- src/i18n/locales/es.js (~410 translation keys)
- src/i18n/LanguageContext.jsx (Provider + t() function)
- src/i18n/useTranslation.js (hook)
- src/i18n/index.js (barrel export)
Modified 22 files:
- main.jsx: wrap App with LanguageProvider
- App.test.jsx: add LanguageProvider wrapper for tests
- 13 user components: BottomNav, HomeView, LoginModal, SearchView,
ProfileView, AlertsView, ScannerView, PharmacyList, MedicineResults,
ProductResults, SavedNotifications, ErrorBoundary, SearchBar
- 6 admin components: AdminView, LoginForm, PharmacyManagement,
MedicineManagement, PharmacyMedicineLink, PharmacyProductLink
ProfileView includes language selector (globe icon + modal CA/ES)
placed next to the Theme selector.
No routes changed. No API calls affected. No navigation changes.
2026-07-17 09:43:45 +02:00
Antoni Nuñez Romeu
cf087fc0b7
Fixed CI/CD and .env vars
Run Tests on Branches / Detect Changes (push) Successful in 13s
Run Tests on Branches / Backend Tests (push) Successful in 1m45s
Run Tests on Branches / Frontend Tests (push) Successful in 1m46s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
Run Tests on Branches / PIP Platform Tests (push) Failing after 1m37s
2026-07-16 18:10:17 +02:00
Antoni Nuñez Romeu
8763f54071
fix: sync package.json and fix test scripts
...
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Successful in 1m58s
Run Tests on Branches / Frontend Tests (push) Successful in 1m38s
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m35s
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
- scraper: changed test script to echo (no tests)
- parapharmacy-api: added --passWithNoTests to jest
- frontend: changed vitest to vitest run (exit after tests)
All tests now pass:
- backend: 17 tests passed
- frontend: 7 tests passed
- parapharmacy-api: no tests (exits cleanly)
- scraper: no tests (exits cleanly)
2026-07-16 17:31:05 +02:00
Antoni Nuñez Romeu
de8fdbb904
feat: add sort by distance and directions to ProductView
...
Run Tests on Branches / Detect Changes (push) Successful in 13s
Run Tests on Branches / Backend Tests (push) Failing after 17s
Run Tests on Branches / Frontend Tests (push) Failing after 16s
Run Tests on Branches / Frontend Mobile Tests (push) Failing after 18s
Run Tests on Branches / Parapharmacy API Tests (push) Has been skipped
- Added sort by distance functionality (same as SearchView)
- Added PharmacyList component with distance display
- Added 'Cómo llegar' button in map popup (Google Maps directions)
- Uses haversineKm for distance calculation
2026-07-16 16:55:48 +02:00
Antoni Nuñez Romeu
6155fdcd15
fix: add pharmacy map to ProductView and fix pharmacies endpoint
...
- Added PharmacyMap component to ProductView
- Updated backend to accept all valid sources for pharmacies endpoint
- Shows map with pharmacy locations and list of pharmacies with prices
2026-07-16 16:48:25 +02:00
Antoni Nuñez Romeu
26e7d92079
fix: handle both array and object responses in admin search
...
The CIMA search API returns {results: [...]} but the admin panel
was treating it as an array, causing CIMA products to be lost.
Now handles both formats:
- Array: [...]
- Object: {results: [...]}
2026-07-16 16:32:24 +02:00
Antoni Nuñez Romeu
dca7e373cd
fix: use parapharmacy endpoint for all non-CIMA sources
...
- ProductView now checks if source is 'cima' to decide endpoint
- All other sources (seed, promofarma, docmorris, primor) use parapharmacy endpoint
- Same fix applied to mobile getProduct function
Before: only 'parapharmacy' source used parapharmacy endpoint
After: all non-CIMA sources use parapharmacy endpoint
2026-07-16 16:23:57 +02:00
Antoni Nuñez Romeu
63b25e3f4f
fix: use _id for MongoDB products in frontend
...
- SearchView now uses p._id || p.id for product navigation
- ProductResults uses product._id || product.id for React key
- Fixes 'undefined' error when clicking parapharmacy products
2026-07-16 16:18:22 +02:00
Antoni Nuñez Romeu
3666f4dee8
fix: update ProductResults and admin panel for parapharmacy
...
- Updated ProductResults component with new source labels
- Added price display for parapharmacy products
- Updated admin panel to search both CIMA and Parapharmacy
- Updated getSourceBadge to handle parapharmacy sources
- Added CSS for product price display
2026-07-16 15:58:35 +02:00
Antoni Nuñez Romeu
3429b7e548
fix: product detail view for parapharmacy products
...
- Updated ProductView to use correct endpoint for parapharmacy
- Updated getProduct service to handle parapharmacy products
- Shows price, category, brand, source for parapharmacy products
- Updated labels from 'OFF' to 'Parafarmacia'
2026-07-16 15:47:14 +02:00
Antoni Nuñez Romeu
570d4ab43e
feat: unified search - remove filter tabs, show all results together
...
- Frontend now searches both CIMA and Parapharmacy simultaneously
- Removed filter tabs (Todos/Medicamentos/Parafarmacia)
- Results show in a single unified list
- Mobile: Shows medicines first, then parapharmacy section
- Web: Same unified approach with results summary
2026-07-16 15:36:08 +02:00
Antoni Nuñez Romeu
b34657c78f
feat: add parapharmacy API with MongoDB and N8N setup
...
- Create parapharmacy-api microservice with Express + Swagger + MongoDB
- Add product model with full-text search and deduplication
- Add CRUD endpoints and bulk upsert for scrapers
- Update docker-compose.yml with MongoDB, N8N, and parapharmacy-api services
- Add proxy endpoints in FarmaFinder backend for parapharmacy
- Update frontend services to use parapharmacy API
- Add Swagger documentation at /api/docs
2026-07-16 12:26:54 +02:00
Antoni Nuñez Romeu
5aadc096d1
fix: add ok: true to fetch mocks in SearchView tests
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Successful in 1m37s
Run Tests on Branches / Frontend Tests (push) Successful in 1m41s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
2026-07-16 10:51:01 +02:00
Antoni Nuñez Romeu
8bf0b33249
feat: add pharmacy-product linking system
...
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Mobile Tests (push) Has been cancelled
Run Tests on Branches / Backend Tests (push) Has been cancelled
- Add pharmacy_products table (PostgreSQL + SQLite)
- Add public route GET /api/products/:source/:id/pharmacies
- Add admin CRUD routes for pharmacy-product links
- Add cascade delete when pharmacy is removed
- Update ProductView to show linked pharmacies
- Create PharmacyProductLink admin component
- Add 'Vincular Producto a Farmacia' tab in AdminView
2026-07-13 20:41:16 +02:00
Antoni Nuñez Romeu
f921b15d67
fix(frontend): set screen to 'product' when navigating to product detail
...
Run Tests on Branches / Backend Tests (push) Has been cancelled
Run Tests on Branches / Detect Changes (push) Has been cancelled
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Mobile Tests (push) Has been cancelled
- Add setScreen('product') to onNavigateToProduct callback
- ProductView was never rendered because screen stayed as 'search'
2026-07-13 19:50:24 +02:00
Antoni Nuñez Romeu
59edc7fbf1
fix(frontend): run medicine and product searches in parallel
...
Run Tests on Branches / Backend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Mobile Tests (push) Has been cancelled
Run Tests on Branches / Detect Changes (push) Has been cancelled
- Use Promise.allSettled for parallel API calls
- Reduces total search time from ~1300ms to ~500ms
- Prevents results disappearing during sequential searches
2026-07-13 19:34:55 +02:00
Antoni Nuñez Romeu
731a6c98ae
feat(frontend): add product detail view and navigation
...
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Mobile Tests (push) Has been cancelled
- Create ProductView component with product details display
- Add ProductView.css with responsive styling
- Add product screen to App.jsx screen system
- Pass onNavigateToProduct callback from App to SearchView
- Update ProductResults onSelect to use callback instead of window.location
2026-07-13 17:36:52 +02:00
Antoni Nuñez Romeu
31c1a14343
feat(frontend): integrate product search in SearchView
...
Run Tests on Branches / Detect Changes (push) Successful in 14s
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Mobile Tests (push) Has been cancelled
Run Tests on Branches / Backend Tests (push) Has been cancelled
- Add ProductResults component import
- Add products and searchMode state
- Add parallel product search to search effect
- Add filter tabs (Todos/Medicamentos/Parafarmacia)
- Render ProductResults when products found
- Add CSS for filter tabs and products section
2026-07-13 17:31:42 +02:00
Antoni Nuñez Romeu
981f3bd3db
fix: address code review issues — nutriscore field name, cache write isolation, missing rate limiter, dead props
2026-07-13 15:46:47 +02:00
Antoni Nuñez Romeu
83920ae57c
feat: display product results alongside medicine results in MedicineResults component
2026-07-13 15:35:11 +02:00
Antoni Nuñez Romeu
9e786f2966
feat(frontend): integrate product search into PublicView with filter tabs
2026-07-13 15:27:47 +02:00
Antoni Nuñez Romeu
a709deb893
feat(frontend): add ProductResults component for unified product search
...
Displays CIMA OTC and Open Food Facts baby products with source/category
badges, product images, brand info, and Nutri-Score for OFF items.
2026-07-13 15:25:35 +02:00
Antoni Nuñez Romeu
0c43d32cf1
feat: add Expo Push notifications for mobile and configure EXPO_ACCESS_TOKEN
...
Run Tests on Branches / Detect Changes (push) Successful in 13s
Run Tests on Branches / Backend Tests (push) Successful in 1m58s
Run Tests on Branches / Frontend Tests (push) Successful in 1m53s
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m49s
- Backend: add expo_push_tokens table, expo-register/unregister endpoints, hybrid VAPID+Expo push sender
- Mobile: register Expo push token on app launch, bell toggle on medicine/pharmacy detail screens
- .env.example: document EXPO_ACCESS_TOKEN configuration
- Dark mode hover fixes for search suggestions and recent buttons
2026-07-13 12:21:25 +02:00
Antoni Nuñez Romeu
2a7ab64bbf
feat(mobile): improve login, profile, alerts screens and dark mode background
...
Run Tests on Branches / Detect Changes (push) Successful in 8s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m41s
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m46s
- Unify login/register into single screen with tab switcher, logo, and themed inputs
- Redesign profile with header card, segmented theme toggle, icon-based menu, and bottom-sheet modals
- Add auth guard to alerts screen showing login prompt instead of 401 error
- Switch ImageBackground to explicit Image+View layering for reliable rendering
- Add dark mode background image switching in root layout
- Add dark mode override for recent-tag in PWA search view
2026-07-10 16:39:59 +02:00
Antoni Nuñez Romeu
8b9b7e8444
Dark mode improvements and FarmaClic rebranding
...
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m55s
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m51s
- Dark mode: gray background instead of pure black
- Dark mode: improved notification card visibility (SavedNotifications)
- Dark mode: improved alerts view badge contrast (AlertsView)
- Dark mode: custom pharmacy-themed background image
- Rebranding: replace all logos with FarmaClic branding
- Update PWA icons, favicon, apple-touch-icon, and mobile app icons
2026-07-10 09:58:36 +02:00
Antoni Nuñez Romeu
e9a1d7c53d
Add dark mode for PWA frontend
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m47s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
2026-07-09 13:18:25 +02:00
Ichitux
302d574220
Manifest changes to PWA
Run Tests on Branches / Detect Changes (push) Successful in 8s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 2m6s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
2026-07-08 23:54:50 +02:00
Antoni Nuñez Romeu
6612c8b10c
Faro & grafana improvements
Run Tests on Branches / Detect Changes (push) Successful in 8s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Successful in 1m46s
Run Tests on Branches / Frontend Mobile Tests (push) Has been cancelled
2026-07-07 23:40:04 +02:00
Antoni Nuñez Romeu
ce3cca1d79
Add logo home + ocr changes for TSI
Run Tests on Branches / Detect Changes (push) Successful in 7s
Run Tests on Branches / Backend Tests (push) Successful in 1m53s
Run Tests on Branches / Frontend Tests (push) Successful in 1m53s
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
2026-07-07 18:36:34 +02:00
Antoni Nuñez Romeu
a58ce306bf
Missing files from commit
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Backend Tests (push) Has been cancelled
2026-07-07 17:44:36 +02:00
Antoni Nuñez Romeu
7eb791f181
chore: update app icons across Expo, iOS, Android, and web
...
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Backend Tests (push) Has been cancelled
Replace all app icons, favicons, and splash assets with new
FarmaClic branding from provided AppIcons and ImageSets assets.
2026-07-07 17:43:47 +02:00
Antoni Nuñez Romeu
afaa4de385
Google services, design fixes
Run Tests on Branches / Backend Tests (push) Successful in 2m2s
Run Tests on Branches / Frontend Tests (push) Successful in 1m55s
2026-07-07 12:50:32 +02:00
Antoni Nuñez Romeu
4404db62ee
feat: avatar popup options, profile redesign, and search dosage parsing
...
Run Tests on Branches / Backend Tests (push) Successful in 2m3s
Run Tests on Branches / Frontend Tests (push) Successful in 1m56s
- Added avatar selection popup with predefined avatar options
- Redesigned ProfileView (web + mobile) with avatar upload and editable fields
- Added AvatarSelectionModal for mobile profile
- Fixed medicine search: parse dosage terms (e.g. 'Paracetamol 1G')
to query CIMA only by name and filter by dosage field
- Updated styles for profile, search, and medicine results
2026-07-07 12:09:42 +02:00
Antoni Nuñez Romeu
fe22e6ee9b
Profile and design hotfixes
Run Tests on Branches / Backend Tests (push) Failing after 17s
Run Tests on Branches / Frontend Tests (push) Failing after 17s
2026-07-07 01:45:09 +02:00
Antoni Nuñez Romeu
b899d9a297
feat: read-only name fields with Configuración modal for profile editing
2026-07-07 01:37:57 +02:00
Antoni Nuñez Romeu
c46a3ee7ea
fix: Mis Direcciones now shows address history instead of notifications
2026-07-07 01:16:06 +02:00
Antoni Nuñez Romeu
4f36820d34
feat: save search history when sorting pharmacies by distance
2026-07-06 18:47:43 +02:00