Il form era gia' tokenizzato (~30 var CSS in :root): non riscriviamo nulla, iniettiamo un blocco di override DOPO il CSS di base, cosi' un errore di configurazione del merchant non puo' rompere il default. - theme.ts (modulo PURO, condiviso con la futura anteprima admin): ThemeTokens, FONT_PRESETS, themeStyle(). Sanificazione a monte: colori solo esadecimali, raggio e larghezza clampati, font da whitelist, CSS custom con rimozione di </style, @import, expression(), javascript: e cap a 4000 char. Derivati: --focus-ring da accent (rgba), --primary-bg-hover per shading. - recesso.server: tokenizzati anche font (--font) e larghezza (--card-max), che erano hardcoded; renderShell(inner, theme) inietta l'override; renderStep1..4 accettano e propagano il tema. - Settings: themeAccent/ButtonBg/ButtonText/Radius/Font/Width/CustomCss + migrazione. - proxy: loadTheme(shop) in loader e action, propagato ai 22 punti di render. Nell'early-return senza sessione il tema e' null (non conosciamo lo shop). fly.toml: min_machines_running resta 0 per scelta (TODO go-live, vedi PROTECTED-CUSTOMER-DATA.md §5.2).
29 lines
1.0 KiB
TOML
29 lines
1.0 KiB
TOML
# Fly.io deployment — CUSTOM distribution environment (clienti LIVE).
|
|
# App name: recesso-custom. The future PUBLIC app is a SEPARATE Fly app
|
|
# (recesso-public) with its own DB — deploys here never touch it (PLAN §0-ter).
|
|
#
|
|
# Secrets are NOT stored here. Set them with `fly secrets set` (never commit):
|
|
# DATABASE_URL, SHOPIFY_API_KEY, SHOPIFY_API_SECRET, SHOPIFY_APP_URL
|
|
# (SCOPES can also be set as a secret/env to match shopify.app.toml.)
|
|
|
|
app = "recesso-custom"
|
|
primary_region = "fra" # Frankfurt (EU data residency)
|
|
|
|
[build]
|
|
dockerfile = "Dockerfile"
|
|
|
|
[http_service]
|
|
internal_port = 3000
|
|
force_https = true
|
|
auto_stop_machines = true
|
|
auto_start_machines = true
|
|
# TODO(go-live): portare a 1. Con 0 un cold start misurato ha richiesto ~38s, e
|
|
# l'art. 54-bis pretende una funzione "sempre accessibile" e "facilmente
|
|
# utilizzabile". Rimandato per scelta (costo: 1 macchina sempre accesa).
|
|
# Vedi PROTECTED-CUSTOMER-DATA.md §5.2.
|
|
min_machines_running = 0
|
|
|
|
[[vm]]
|
|
size = "shared-cpu-1x"
|
|
memory = "512mb"
|