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

This commit is contained in:
Antoni Nuñez Romeu
2026-06-29 10:56:43 +02:00
parent e720bfa95a
commit 6db5b6da20
5 changed files with 27 additions and 82 deletions
-54
View File
@@ -1,54 +0,0 @@
{
"permissions": {
"allow": [
"Bash(npm run:*)",
"Bash(npm install *)",
"Bash(npm test *)",
"Bash(npx vitest *)",
"Bash(./node_modules/.bin/vitest run *)",
"Bash(git -C /home/f80ans0/Projects/Webs/FarmaFinder remote -v)",
"Bash(grep -E \"^\\(express|sqlite3|bcrypt|axios|cors|redis|connect-sqlite3|express-session|express-rate-limit\\)$\")",
"Bash(grep -E \"^\\(react-leaflet|leaflet\\)$\")",
"Bash(grep -E \"^\\(connect-sqlite3|express-rate-limit\\)$\")",
"Bash(node --check server.js)",
"Bash(node --input-type=module -e ' *)",
"Bash(node *)",
"Bash(kill 1043357 1043372 1043383 1043384 1043416 1043417 1043457 1043463 1043479 1061932)",
"Bash(NODE_OPTIONS=--experimental-vm-modules npx jest)",
"Bash(npx vite *)",
"Bash(curl -sL -o /tmp/ref-nav.png \"https://theuistudio.com/blog/wp-content/uploads/2025/09/image-8.png\")",
"WebFetch(domain:dev.to)",
"Bash(command -v npx node java)",
"Bash(npx --version)",
"Bash(npx cap *)",
"Bash(pacman -Si jdk17-openjdk)",
"Bash(yay -Si android-sdk-cmdline-tools-latest)",
"Bash(sudo pacman -S --needed --noconfirm jdk17-openjdk)",
"Bash(sudo -n pacman -S --needed --noconfirm jdk17-openjdk)",
"Bash(java -version)",
"Read(//opt/android-sdk/**)",
"Read(//usr/lib/jvm/**)",
"Bash(getent group *)",
"Bash(cat)",
"Bash(grep -q '^android/local.properties$' /home/anunez/Projects/FarmaFinder/.gitignore)",
"Bash(JAVA_HOME=/usr/lib/jvm/java-17-openjdk ANDROID_HOME=/opt/android-sdk ANDROID_SDK_ROOT=/opt/android-sdk PATH=/usr/lib/jvm/java-17-openjdk/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:__TRACKED_VAR__ ./gradlew --no-daemon assembleDebug)",
"Bash(shred -u /tmp/.farmafinder-keystore-pass)",
"Read(//tmp/**)",
"Bash(JAVA_HOME=/usr/lib/jvm/java-17-openjdk /usr/lib/jvm/java-17-openjdk/bin/jarsigner -verify -verbose:summary /home/anunez/Projects/FarmaFinder/android/app/build/outputs/bundle/release/app-release.aab)",
"Bash(openssl pkcs7 *)",
"Bash(openssl x509 *)",
"Bash(/opt/android-sdk/build-tools/34.0.0/apksigner verify *)",
"Bash(npm ci *)",
"Bash(xxd)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(git push *)",
"WebFetch(domain:github.com)",
"WebSearch",
"WebFetch(domain:developers.google.com)",
"WebFetch(domain:cocoapods.org)",
"Bash(git check-ignore *)"
]
}
}
+20 -22
View File
@@ -20,13 +20,12 @@ trigger_map:
workflow: deploy_android workflow: deploy_android
workflows: workflows:
# ── Shared setup ──────────────────────────────────────────
_setup: _setup:
steps: steps:
- activate-ssh-key@4: - activate-ssh-key@5:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@8: {} - git-clone@9: {}
- nvm@1: - setup-node@1:
inputs: inputs:
- node_version: "20" - node_version: "20"
- script@1: - script@1:
@@ -35,11 +34,10 @@ workflows:
- content: | - content: |
#!/bin/bash #!/bin/bash
set -ex set -ex
npm install npm ci
npm install --prefix frontend npm ci --prefix frontend
npm run build --prefix frontend npm run build --prefix frontend
# ── Android test / PR build ──────────────────────────────
test: test:
before_run: before_run:
- _setup - _setup
@@ -61,14 +59,13 @@ workflows:
"platforms;android-36" \ "platforms;android-36" \
"build-tools;36.0.0" \ "build-tools;36.0.0" \
"platform-tools" || true "platform-tools" || true
- android-build@1: - android-build@2:
title: Build Android APK (debug) title: Build Android APK (debug)
inputs: inputs:
- project_location: android - project_location: android
- module: app - module: app
- variant: debug - variant: debug
# ── iOS test / PR build (simulator) ──────────────────────
test_ios: test_ios:
before_run: before_run:
- _setup - _setup
@@ -83,7 +80,7 @@ workflows:
- cocoapods-install@2: - cocoapods-install@2:
inputs: inputs:
- podfile_path: ios/App/Podfile - podfile_path: ios/App/Podfile
- xcode-archive@4: - xcode-archive@5:
title: Build iOS (simulator) title: Build iOS (simulator)
inputs: inputs:
- project_path: ios/App/App.xcodeproj - project_path: ios/App/App.xcodeproj
@@ -93,7 +90,6 @@ workflows:
- output_tool: xcodebuild - output_tool: xcodebuild
- cache_level: swift - cache_level: swift
# ── iOS deploy ───────────────────────────────────────────
deploy_ios: deploy_ios:
before_run: before_run:
- _setup - _setup
@@ -109,7 +105,7 @@ workflows:
inputs: inputs:
- podfile_path: ios/App/Podfile - podfile_path: ios/App/Podfile
- certificate-and-profile-installer@1: {} - certificate-and-profile-installer@1: {}
- xcode-archive@4: - xcode-archive@5:
title: Archive iOS (release) title: Archive iOS (release)
inputs: inputs:
- project_path: ios/App/App.xcodeproj - project_path: ios/App/App.xcodeproj
@@ -119,9 +115,8 @@ workflows:
- output_tool: xcodebuild - output_tool: xcodebuild
- export_method: app-store - export_method: app-store
- cache_level: swift - cache_level: swift
- deploy-to-bitrise-io@2: {} - deploy-to-bitrise-io@4: {}
# ── Android deploy ───────────────────────────────────────
deploy_android: deploy_android:
before_run: before_run:
- _setup - _setup
@@ -143,20 +138,21 @@ workflows:
"platforms;android-36" \ "platforms;android-36" \
"build-tools;36.0.0" \ "build-tools;36.0.0" \
"platform-tools" || true "platform-tools" || true
- android-build@1: - android-build@2:
title: Build Android AAB (release) title: Build Android AAB (release)
inputs: inputs:
- project_location: android - project_location: android
- module: app - module: app
- variant: release - variant: release
- deploy-to-bitrise-io@2: {} - sign-apk@1:
inputs:
- use_apk_signer: "true"
- deploy-to-bitrise-io@4: {}
# ── Combined deploy (default branch push) ────────────────
deploy: deploy:
before_run: before_run:
- _setup - _setup
steps: steps:
# Android
- script@1: - script@1:
title: Sync Android native project title: Sync Android native project
inputs: inputs:
@@ -174,13 +170,15 @@ workflows:
"platforms;android-36" \ "platforms;android-36" \
"build-tools;36.0.0" \ "build-tools;36.0.0" \
"platform-tools" || true "platform-tools" || true
- android-build@1: - android-build@2:
title: Build Android AAB (release) title: Build Android AAB (release)
inputs: inputs:
- project_location: android - project_location: android
- module: app - module: app
- variant: release - variant: release
# iOS - sign-apk@1:
inputs:
- use_apk_signer: "true"
- script@1: - script@1:
title: Sync iOS native project title: Sync iOS native project
inputs: inputs:
@@ -192,7 +190,7 @@ workflows:
inputs: inputs:
- podfile_path: ios/App/Podfile - podfile_path: ios/App/Podfile
- certificate-and-profile-installer@1: {} - certificate-and-profile-installer@1: {}
- xcode-archive@4: - xcode-archive@5:
title: Archive iOS (release) title: Archive iOS (release)
inputs: inputs:
- project_path: ios/App/App.xcodeproj - project_path: ios/App/App.xcodeproj
@@ -202,4 +200,4 @@ workflows:
- output_tool: xcodebuild - output_tool: xcodebuild
- export_method: app-store - export_method: app-store
- cache_level: swift - cache_level: swift
- deploy-to-bitrise-io@2: {} - deploy-to-bitrise-io@4: {}
+1 -1
View File
@@ -290,7 +290,7 @@
@media (max-width: 768px) { @media (max-width: 768px) {
.app { .app {
padding: 1rem 1rem calc(7rem + env(safe-area-inset-bottom)); padding: calc(3.55rem + env(safe-area-inset-top)) 1rem calc(7rem + env(safe-area-inset-bottom));
} }
.app-header h1 { .app-header h1 {
+3 -1
View File
@@ -9,8 +9,10 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
position: sticky; position: fixed;
top: 0; top: 0;
left: 0;
right: 0;
z-index: 50; z-index: 50;
padding: calc(0.65rem + env(safe-area-inset-top)) 1rem 0.65rem; padding: calc(0.65rem + env(safe-area-inset-top)) 1rem 0.65rem;
background: var(--glass-bg); background: var(--glass-bg);
+3 -4
View File
@@ -3,12 +3,11 @@
============================================================ */ ============================================================ */
.home-container { .home-container {
min-height: 100dvh;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
padding: 2rem 1.5rem calc(5rem + env(safe-area-inset-bottom)); padding: 2rem 1.5rem;
gap: 2.5rem; gap: 2.5rem;
animation: fadeInUp 0.7s ease-out; animation: fadeInUp 0.7s ease-out;
} }
@@ -266,10 +265,10 @@
/* ── Responsive ─────────────────────────────────────────── */ /* ── Responsive ─────────────────────────────────────────── */
@media (max-width: 640px) { @media (max-width: 640px) {
.home-container { .home-container {
padding: 1.5rem 1rem calc(6rem + env(safe-area-inset-bottom)); padding: 1.5rem 1rem;
gap: 1.75rem; gap: 1.75rem;
justify-content: flex-start; justify-content: flex-start;
padding-top: 2.5rem; padding-top: 0.5rem;
} }
.home-grid { .home-grid {