Commit Graph

118 Commits

Author SHA1 Message Date
Antoni Nuñez Romeu 11421ef956 feat: implement map screen with pharmacy markers 2026-07-06 11:14:49 +02:00
Antoni Nuñez Romeu 6e58939723 feat: implement medicine detail screen with pharmacies list 2026-07-06 11:12:57 +02:00
Antoni Nuñez Romeu 29b9f84462 feat: implement home screen with medicine search 2026-07-06 11:10:19 +02:00
Antoni Nuñez Romeu 39331e2f6e feat: add UI components (SearchBar, MedicineCard, StockBadge, LoadingSpinner) 2026-07-06 11:08:40 +02:00
Antoni Nuñez Romeu 47f63eacc7 feat: add theme constants (colors, spacing, typography) 2026-07-06 11:05:56 +02:00
Antoni Nuñez Romeu 57054efe76 feat: add Zustand stores and custom hooks 2026-07-06 11:03:55 +02:00
Antoni Nuñez Romeu a5064f2172 feat: add API client and services for medicines, pharmacies, auth 2026-07-06 11:00:44 +02:00
Antoni Nuñez Romeu 259bdb1479 feat: add TypeScript types for mobile app 2026-07-06 10:58:00 +02:00
Antoni Nuñez Romeu 1b9fd16b9b feat: setup navigation structure with Expo Router 2026-07-06 10:53:52 +02:00
Antoni Nuñez Romeu ea9bbaed04 feat: initialize Expo project for mobile frontend 2026-07-06 10:48:45 +02:00
Antoni Nuñez Romeu 0f27579ca0 docs: add FarmaFinder Mobile implementation plan 2026-07-06 10:35:34 +02:00
Antoni Nuñez Romeu d9bf4f0d18 docs: add FarmaFinder Mobile design specification 2026-07-06 10:16:51 +02:00
Ichitux 792e6dd5b1 Merge pull request 'New icon for PWA. CSS corrections.' (#8) from design_fixes into main
Build & Push Docker Images / test-backend (push) Successful in 35s
Build & Push Docker Images / test-frontend (push) Successful in 30s
Build & Push Docker Images / deploy (push) Successful in 7s
Build & Push Docker Images / build-backend (push) Successful in 17s
Build & Push Docker Images / build-frontend (push) Successful in 32s
Reviewed-on: #8
2026-07-06 08:11:57 +00:00
Antoni Nuñez Romeu 7550978bc8 New icon for PWA. CSS corrections.
Run Tests on Branches / Backend Tests (push) Successful in 3m32s
Run Tests on Branches / Frontend Tests (push) Successful in 3m27s
2026-07-06 10:01:47 +02:00
Ichitux c0c58556e7 Merge pull request 'Logos & scanner changes' (#7) from tsi_uploads into main
Build & Push Docker Images / test-backend (push) Successful in 38s
Build & Push Docker Images / deploy (push) Successful in 20s
Build & Push Docker Images / build-backend (push) Successful in 2m21s
Build & Push Docker Images / build-frontend (push) Successful in 39s
Build & Push Docker Images / test-frontend (push) Successful in 30s
Reviewed-on: #7
2026-07-06 07:20:01 +00:00
Antoni Nuñez Romeu df0b114058 Logos & scanner changes
Run Tests on Branches / Backend Tests (push) Successful in 3m41s
Run Tests on Branches / Frontend Tests (push) Successful in 3m27s
2026-07-04 14:46:42 +02:00
Ichitux 3b725df118 Merge pull request 'feat: replace barcode-detector polyfill with local @zxing/browser for cross-browser barcode scanning' (#6) from fixing_barcode into main
Build & Push Docker Images / test-backend (push) Successful in 33s
Build & Push Docker Images / test-frontend (push) Successful in 31s
Build & Push Docker Images / deploy (push) Successful in 7s
Build & Push Docker Images / build-backend (push) Successful in 22s
Build & Push Docker Images / build-frontend (push) Successful in 54s
Reviewed-on: #6
2026-07-03 10:10:03 +00:00
Antoni Nuñez Romeu 5b080c4134 feat: replace barcode-detector polyfill with local @zxing/browser for cross-browser barcode scanning
Run Tests on Branches / Backend Tests (push) Successful in 3m35s
Run Tests on Branches / Frontend Tests (push) Successful in 3m33s
- Remove barcode-detector polyfill (made remote CDN calls to download zxing-wasm)
- Use @zxing/library@0.22.0 + @zxing/browser@0.2.0 locally
- Support PDF417, Code128, Code39, Code93, QR, EAN, UPC, ITF formats
- Clean special characters from scanned results before CIP validation
- Fix video ref timing issue with waitForVideo loop
2026-07-03 11:58:04 +02:00
Ichitux 0ebd2dc35c Merge pull request 'Fixes on docker compose & notify' (#5) from search_improvements into main
Build & Push Docker Images / test-backend (push) Successful in 32s
Build & Push Docker Images / test-frontend (push) Successful in 29s
Build & Push Docker Images / deploy (push) Successful in 19s
Build & Push Docker Images / build-backend (push) Successful in 19s
Build & Push Docker Images / build-frontend (push) Successful in 31s
Reviewed-on: #5
2026-07-02 15:49:06 +00:00
Antoni Nuñez Romeu 1bc34b1134 Fixes on docker compose & notify
Run Tests on Branches / Backend Tests (push) Successful in 3m28s
Run Tests on Branches / Frontend Tests (push) Successful in 3m27s
2026-07-02 17:09:15 +02:00
Ichitux 15e136f3d5 Merge pull request 'Profile_Fixes' (#4) from Profile_Fixes into main
Build & Push Docker Images / test-backend (push) Successful in 36s
Build & Push Docker Images / deploy (push) Successful in 7s
Build & Push Docker Images / build-backend (push) Successful in 22s
Build & Push Docker Images / build-frontend (push) Successful in 32s
Build & Push Docker Images / test-frontend (push) Successful in 31s
Reviewed-on: #4
2026-07-02 10:52:07 +00:00
Antoni Nuñez Romeu 7606d118e4 Design hotfixes and improvements.
Run Tests on Branches / Backend Tests (push) Successful in 3m32s
Run Tests on Branches / Frontend Tests (push) Successful in 3m29s
2026-07-02 12:40:09 +02:00
Antoni Nuñez Romeu 15c1127b34 Add admin access button in profile menu for admin users
- Add onAdminClick prop to ProfileView component
- Add conditional admin button visible only for is_admin users
- Add handleAdminClick function in App.jsx to navigate to admin view
- Button styled consistently with existing menu items
2026-07-02 11:23:57 +02:00
Antoni Nuñez Romeu 17cd5adaef Add design spec for admin access button in profile menu 2026-07-02 11:20:56 +02:00
Ichitux 4429ec4c7f Merge pull request 'Frontend_Fixes' (#3) from Frontend_Fixes into main
Build & Push Docker Images / test-backend (push) Successful in 33s
Build & Push Docker Images / test-frontend (push) Successful in 28s
Build & Push Docker Images / deploy (push) Successful in 18s
Build & Push Docker Images / build-backend (push) Successful in 18s
Build & Push Docker Images / build-frontend (push) Successful in 31s
Reviewed-on: #3
2026-07-01 15:29:25 +00:00
Antoni Nuñez Romeu 71a34293a9 Views in frontend changed
Run Tests on Branches / Backend Tests (push) Successful in 3m28s
Run Tests on Branches / Frontend Tests (push) Successful in 3m26s
2026-07-01 17:08:15 +02:00
Antoni Nuñez Romeu c5df0ec0b2 First implementation API for PIP (Proyecto: Pharmacy Integration Platform)
Run Tests on Branches / Backend Tests (push) Successful in 3m32s
Run Tests on Branches / Frontend Tests (push) Successful in 3m27s
2026-07-01 16:46:52 +02:00
Antoni Nuñez Romeu d935db4b3e Android branch testing
Run Tests on Branches / Backend Tests (push) Successful in 3m31s
Run Tests on Branches / Frontend Tests (push) Successful in 3m26s
2026-07-01 16:44:48 +02:00
Ichitux 1b9494bce6 Merge pull request 'Testing steps to avoid wrong implementation' (#2) from testing into main
Build & Push Docker Images / test-backend (push) Successful in 32s
Build & Push Docker Images / test-frontend (push) Successful in 30s
Build & Push Docker Images / deploy (push) Successful in 6s
Build & Push Docker Images / build-backend (push) Successful in 19s
Build & Push Docker Images / build-frontend (push) Successful in 18s
Reviewed-on: #2
2026-07-01 14:40:47 +00:00
Antoni Nuñez Romeu 1255bda9c7 Testing steps to avoid wrong implementation
Run Tests on Branches / Backend Tests (push) Successful in 4m41s
Run Tests on Branches / Frontend Tests (push) Successful in 3m46s
2026-07-01 16:36:47 +02:00
Ichitux 8578bac776 Merge pull request 'Rebranding app and naming' (#1) from Rebranding into main
Build & Push Docker Images / test-backend (push) Successful in 35s
Build & Push Docker Images / deploy (push) Successful in 7s
Build & Push Docker Images / build-backend (push) Successful in 2m10s
Build & Push Docker Images / build-frontend (push) Successful in 53s
Build & Push Docker Images / test-frontend (push) Successful in 30s
Reviewed-on: #1
2026-07-01 13:57:19 +00:00
Antoni Nuñez Romeu 1c31362e0b Rebranding app and naming 2026-07-01 15:54:10 +02:00
Antoni Nuñez Romeu 2e9d6a94dd Fix backend
Build & Push Docker Images / test-backend (push) Successful in 33s
Build & Push Docker Images / test-frontend (push) Successful in 29s
Build & Push Docker Images / deploy (push) Successful in 8s
Build & Push Docker Images / build-backend (push) Successful in 2m9s
Build & Push Docker Images / build-frontend (push) Successful in 56s
2026-07-01 12:28:20 +02:00
Antoni Nuñez Romeu db0935eb16 feat(fullstack): implement observability and redesign frontend UI
Build & Push Docker Images / test-backend (push) Failing after 36s
Build & Push Docker Images / test-frontend (push) Successful in 29s
Build & Push Docker Images / build-backend (push) Has been skipped
Build & Push Docker Images / build-frontend (push) Has been skipped
Build & Push Docker Images / deploy (push) Successful in 7s
This commit introduces comprehensive observability for both backend and frontend, alongside a major UI/UX overhaul to align with modern design standards (Material 3 inspired) and improve localization.

Backend changes:
- Integrated OpenTelemetry SDK for distributed tracing.
- Added Pino for structured JSON logging with OTel instrumentation for trace/span correlation.
- Configured OTLP exporters to route traces and logs to Grafana Alloy.
- Updated docker-compose to include necessary environment variables for observability.

Frontend changes:
- Integrated Grafana Faro for Real User Monitoring (RUM), capturing Web Vitals, JS errors, and user interactions.
- Redesigned the entire UI using a new color palette and Material 3 design principles.
- Refactored component architecture (App, Home, Search, Scanner, Profile, Alerts views) for better state management and navigation.
- Improved mobile UX with a redesigned Bottom Navigation bar and Top Bar.
- Localized the interface to Spanish (es).
- Updated assets, icons, and PWA configuration (manifest, icons).
- Refactored CSS to use a centralized design token system (CSS variables).

Observability enables better debugging and performance monitoring across the entire stack.
2026-07-01 11:48:27 +02:00
Antoni Nuñez Romeu 9316f6c54f CI/CD Deployment
Build & Push Docker Images / test-backend (push) Successful in 21s
Build & Push Docker Images / test-frontend (push) Successful in 23s
Build & Push Docker Images / build-backend (push) Successful in 17s
Build & Push Docker Images / build-frontend (push) Successful in 16s
Build & Push Docker Images / deploy (push) Successful in 33s
2026-06-29 14:21:37 +02:00
Antoni Nuñez Romeu 67ba352b1a Node version 22
Build & Push Docker Images / test-backend (push) Successful in 20s
Build & Push Docker Images / test-frontend (push) Successful in 21s
Build & Push Docker Images / build-backend (push) Successful in 16s
Build & Push Docker Images / build-frontend (push) Successful in 17s
2026-06-29 13:50:27 +02:00
Antoni Nuñez Romeu 17500e0567 iOS Build using GH Actions
Build & Push Docker Images / test-backend (push) Successful in 21s
Build & Push Docker Images / test-frontend (push) Successful in 22s
Build & Push Docker Images / build-backend (push) Successful in 16s
Build & Push Docker Images / build-frontend (push) Successful in 17s
2026-06-29 13:02:16 +02:00
Antoni Nuñez Romeu 6856640d81 Fixing ios build
Build & Push Docker Images / test-backend (push) Successful in 20s
Build & Push Docker Images / test-frontend (push) Successful in 22s
Build & Push Docker Images / build-backend (push) Successful in 17s
Build & Push Docker Images / build-frontend (push) Successful in 16s
2026-06-29 11:29:40 +02:00
Antoni Nuñez Romeu 4b5e1a7379 Hotfixes
Build & Push Docker Images / test-backend (push) Successful in 22s
Build & Push Docker Images / test-frontend (push) Successful in 24s
Build & Push Docker Images / build-backend (push) Successful in 18s
Build & Push Docker Images / build-frontend (push) Successful in 18s
2026-06-29 11:00:39 +02:00
Antoni Nuñez Romeu 6db5b6da20 Visual hotfixes & CI/CD
Build & Push Docker Images / test-backend (push) Successful in 22s
Build & Push Docker Images / test-frontend (push) Successful in 23s
Build & Push Docker Images / build-backend (push) Successful in 18s
Build & Push Docker Images / build-frontend (push) Successful in 30s
2026-06-29 10:56:43 +02:00
Ichitux e720bfa95a Adnroid & iOS capacitor
Build & Push Docker Images / test-backend (push) Successful in 20s
Build & Push Docker Images / test-frontend (push) Successful in 23s
Build & Push Docker Images / build-backend (push) Successful in 19s
Build & Push Docker Images / build-frontend (push) Successful in 42s
2026-06-29 00:54:01 +02:00
Ichitux 2f9c0d27df fix(ci): use --ci for backend (Jest), keep --run for frontend (Vitest)
Build & Push Docker Images / test-backend (push) Successful in 20s
Build & Push Docker Images / test-frontend (push) Successful in 21s
Build & Push Docker Images / build-frontend (push) Successful in 27s
Build & Push Docker Images / build-backend (push) Successful in 18s
Backend uses Jest, not Vitest — --run is unrecognized. --ci is the
Jest equivalent that disables watch mode and exits cleanly. Frontend
already uses --run --reporter=basic (Vitest) which is correct.

Verified locally: backend `npm test -- --ci` → 17/17 passing.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 13:09:25 +02:00
Ichitux 55a5d93a91 fix(frontend): restore PublicView back-compat for tests + CI
Build & Push Docker Images / test-backend (push) Failing after 18s
Build & Push Docker Images / test-frontend (push) Successful in 22s
Build & Push Docker Images / build-backend (push) Has been skipped
Build & Push Docker Images / build-frontend (push) Has been skipped
The lifted screen-state refactor in PublicView broke App.test.jsx (5
failures): when no `onScreenChange` prop was passed, the click handler
called a no-op, so the screen never advanced from 'home' to 'search'
and the search input was never rendered.

Fix: make screen state uncontrolled-by-default. PublicView owns its
own `useState('home')` and uses the lifted props only when App.jsx
provides them. Same back-compat shape as before, BottomNav still
drives the screen via controlled props in the real app.

Also: vitest defaults to watch mode, which hangs the CI test step
forever. Updated docker.yaml to pass `--run --reporter=basic` so the
job exits with a real pass/fail signal.

Local verification: `npm test -- --run` → 6/6 passing.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 13:06:56 +02:00
Ichitux 1e928e5a93 feat(mobile): native-feel sticky top bar + bottom tab nav
Build & Push Docker Images / test-backend (push) Successful in 22s
Build & Push Docker Images / test-frontend (push) Failing after 23s
Build & Push Docker Images / build-backend (push) Has been skipped
Build & Push Docker Images / build-frontend (push) Has been skipped
Replaces the floating pill nav with persistent mobile chrome that
frames scrolling content the way iOS/Android native apps do.

New components:
- TopBar: brand left, contextual action right (Admin pill for admins,
  bell for saved, Login button when logged out)
- BottomNav: 4-tab fixed nav (Search, Scan [elevated center FAB],
  Saved, Profile). Saved/Profile disabled when logged out, tapping
  opens LoginModal
- icons.jsx: 5 stroke-based SVG icons (Search, Scan, Bell, User, Cog)
  plus Logo; replaces emoji in nav chrome

Behavior changes:
- App.jsx: tracks publicScreen ('home'|'scan'|'search') so BottomNav
  can drive both top-level view + inner screen
- PublicView: screen state lifted to App via props (back-compat
  defaults preserved so existing call sites don't break)
- App.css: old mobile .view-switcher block hidden (replaced by
  BottomNav); .app padding bumped to clear the fixed bottom bar

Desktop (>768px) unchanged — existing centered pill nav still works,
new components hidden via display:none.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-28 12:52:46 +02:00
Ichitux 5b75321406 fix(mobile): lock viewport, disable iOS bounce, fix 100vh reflow
Build & Push Docker Images / test-backend (push) Successful in 20s
Build & Push Docker Images / test-frontend (push) Successful in 22s
Build & Push Docker Images / build-backend (push) Successful in 17s
Build & Push Docker Images / build-frontend (push) Successful in 27s
Root cause: html/body had no height/overflow constraint, so the
webview allowed rubber-band overscroll. .app used min-height: 100vh
which on iOS resolves to the larger viewport (behind URL bar), causing
layout to reflow when the bar collapses.

- index.css: html/body locked to 100% height, overflow hidden,
  overscroll-behavior none; #root set to exact 100dvh
- App.css: .app height: 100dvh (was min-height: 100vh) with
  overflow-y: auto + overscroll-behavior: contain so the .app
  becomes the scroll container
- capacitor.config.json: ios.bounces false, contentInset never

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-27 13:16:44 +02:00
Ichitux 803eaab134 ci(bitrise): split deploy by tag prefix and add iOS code-signing step
Build & Push Docker Images / test-backend (push) Successful in 21s
Build & Push Docker Images / test-frontend (push) Successful in 23s
Build & Push Docker Images / build-backend (push) Successful in 17s
Build & Push Docker Images / build-frontend (push) Successful in 15s
- Tag triggers split: ios-v* -> deploy_ios, android-v* -> deploy_android.
  The blanket tag: "*" trigger that ran both platforms on every tag is gone.
- Add certificate-and-profile-installer@1 before xcode-archive@4 in
  deploy_ios and combined deploy. Reads Bitrise's auto-injected
  BITRISE_IOS_CODE_SIGNING_* env vars; no-op if not configured.
- Harden test_ios simulator destination to generic/platform=iOS Simulator
  (was iPhone 15, OS=latest, which breaks when the runner ships a
  different Xcode).
- Enable swift build cache on xcode-archive steps.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-27 11:12:21 +02:00
Ichitux 0f2933586f fix(ios): bump deployment target to 15.5 for GoogleMLKit/BarcodeScanning
Build & Push Docker Images / test-backend (push) Successful in 21s
Build & Push Docker Images / test-frontend (push) Successful in 22s
Build & Push Docker Images / build-backend (push) Successful in 16s
Build & Push Docker Images / build-frontend (push) Successful in 16s
GoogleMLKit/BarcodeScanning ~> 8.0.0 requires iOS 15.5 (per the Sept 2024
ML Kit release notes). pod install failed with "Specs satisfying the
dependency were found, but they required a higher minimum deployment
target" when the app was set to 15.0.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-27 11:07:07 +02:00
Ichitux ef5d33a595 fix(ios): align deployment target to 15.0 and link mlkit barcode pod
Build & Push Docker Images / test-backend (push) Successful in 21s
Build & Push Docker Images / test-frontend (push) Successful in 22s
Build & Push Docker Images / build-backend (push) Successful in 17s
Build & Push Docker Images / build-frontend (push) Successful in 17s
- All four IPHONEOS_DEPLOYMENT_TARGET entries in project.pbxproj bumped
  from 13.0 to 15.0 to match Podfile's 'platform :ios, 15.0' and
  Capacitor 8's minimum. Mismatched target caused Swift compile errors
  for iOS-15-only APIs in linked pods.
- Add CapacitorMlkitBarcodeScanning pod to Podfile and the package to
  root package.json (already in frontend/package.json). Without this,
  cap sync never linked the pod and the build failed with
  'No such module CapacitorMLKitBarcodeScanning'.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-27 10:55:13 +02:00
Antoni Nuñez Romeu c0b3b1fc94 Scanner view
Build & Push Docker Images / test-backend (push) Successful in 21s
Build & Push Docker Images / test-frontend (push) Successful in 24s
Build & Push Docker Images / build-backend (push) Successful in 18s
Build & Push Docker Images / build-frontend (push) Successful in 26s
2026-06-26 23:28:01 +02:00
Antoni Nuñez Romeu 1aad9761d1 fix: suppress CocoaPods master specs repo warning in iOS build
Build & Push Docker Images / test-frontend (push) Has been cancelled
Build & Push Docker Images / build-backend (push) Has been cancelled
Build & Push Docker Images / build-frontend (push) Has been cancelled
Build & Push Docker Images / test-backend (push) Has been cancelled
2026-06-26 23:27:37 +02:00