Traduction en cours
Cette page est automatiquement reflétée depuis l'original en anglais jusqu'à ce qu'une traduction française arrive. Le contenu est en anglais — la navigation et l'interface sont déjà traduites.
Troubleshooting
The first stop when something is wrong. Skim the section that matches your symptom.
Login and account
"Invalid credentials" but I'm certain the password is right
- Caps lock check — the username field is case-sensitive (
operator_id, lowercase by convention). - Password manager autofill sometimes inserts a trailing space; click the field and press End to verify nothing is past the visible characters.
- If you recently changed your password and it isn't taking, double-check you typed the new one — the in-app Change Password form takes effect immediately. If you're locked out entirely, use the email password-reset flow instead (this requires SMTP to be configured; see below).
"Please verify your email" loop
- Check spam / promotions folders for the verification mail.
- The verification link expires after 60 minutes (default
EMAIL_TOKEN_TTL); from/loginuse Resend verification if available, or request a fresh registration with the same email. - Verification email only sends when SMTP is configured (
EMAIL_*env vars). Email delivery is off by default, so on an instance without SMTP no verification mail will arrive — contact the operator of your Atlas instance.
"Session expired" mid-workflow
- Your refresh token reached its hard limit. Sign in again — your watchlist, alerts, and saved screens are intact.
- Frequent expirations usually mean clock skew on a self-hosted backend; verify NTP on the host.
Workspace and panels
Dashboard renders blank with the sidebar visible
- Open the browser DevTools → Network tab; reload. If
/api/mereturns 401, your session expired (sign in again). If it returns 5xx, the backend is unreachable — check the backend logs. - A failed Cesium tile load (the globe) doesn't blank the dashboard, but a missing
VITE_API_URLbuild var does. Confirm the build was run with the right env.
A panel is empty / "no data"
- Confirm the data provider for that panel is configured. The Market panel needs
EODHD_API_KEY; the Globe AIS layer needsAIS_ENABLED=trueandAISSTREAM_API_KEY(AIS is off by default). See API keys. - For symbols specifically: the symbol may not be indexed by the upstream provider. Try a different ticker to isolate.
Switching panels feels laggy
- The first switch loads bundle chunks (route-based code splitting). Subsequent switches are instant.
- For a sustained slowdown, check the browser console for a runaway re-render loop and refresh.
"Failed to fetch" toasts
- The frontend cannot reach the backend. In dev, confirm the backend is running on the URL pointed at by
VITE_API_URL(defaulthttp://127.0.0.1:8000). In prod, check the reverse proxy.
Globe
Pins are missing for a vessel/aircraft I expect to see
- Layer might be off — check the AIS / ADS-B toggle in the right rail (
v/ashortcuts). - Sub-bar filter might be too tight (Saved-only, name filter) — clear filters.
- Coverage gap or transponder off — see Data delays & limits.
Globe is slow / dropping frames
- Cesium prefers a discrete GPU. On integrated graphics with hundreds of pins, drop the layer with the most points or zoom in to cluster.
- Browser hardware acceleration must be on — check browser settings.
"Cesium token invalid" overlay
VITE_CESIUM_ION_TOKENis missing or stale. Get a fresh token from Cesium Ion and rebuild the frontend.
Market panel
Quote is permanently "delayed"
- The exchange or plan may only provide delayed data upstream; the badge is correct. Quotes come from EODHD (the primary source); the optional Finnhub integration adds US-equity realtime when configured. Try a different exchange to confirm.
- Quotes reach the browser by periodic REST polling (~30s), not a live stream — if a value looks stale, wait for the next poll or refresh.
Fundamentals show "—" for many fields
- EODHD coverage gap on emerging markets, micro-caps, or recently-IPO'd names. Try a major-exchange peer to confirm.
Chart shows a strange spike that disappears on reload
- A single bad tick from upstream. EODHD typically corrects on the next pull; the cache TTL is short (~5 min for intraday).
Alerts
Alert created but never fires
- Verify state in the alerts panel —
trackingis normal (within 1% of trigger),inactiveis paused. - For market-hours alerts, confirm the symbol's market is currently open.
- For email delivery, check your spam folder and verify the address in Settings → Profile.
Alerts firing constantly on a closed position
- They don't auto-prune. Disarm or delete from the alerts panel.
AI chat
Empty / generic responses with no panel context
- The AI grounds in your active panel. Switch to or focus the panel you want it to read before asking.
- News/transcript summaries silently truncate beyond the model's context window — narrow the screen or transcript section.
"AI is offline"
- Backend cannot reach the configured model provider. Check backend logs for the AI route.
Search
Symbol search returns nothing
- Check the asset class pill (
All/Equity/FX/Crypto/Commodity) — it's filtering. - Fuzzy name search needs ~3 characters; very short queries return only exact-prefix matches.
Subscription and billing
Plan upgraded in Stripe but Atlas still gates the feature
- The webhook may not have fired yet — wait ~30 seconds and reload.
- If still stuck, check your subscription status in Settings → Subscription; a sign-out/sign-in often refreshes the cached plan.
- For self-hosted instances, see Stripe billing — debugging a desync.
Stripe portal won't open
- Pop-up blocked. Allow pop-ups for the Atlas origin and retry.
Self-hosted specifics
Backend won't boot — KeyError: SECRET_KEY
- That env var is required. Generate a long random string and set it before the boot command.
Backend logs failed to connect to redis
REDIS_URLis wrong or Redis isn't up. The cache layer is required for rate limiting and session refresh — Atlas won't run without it.
Migrations fail mid-run
- Don't manually edit the schema. Check the failed migration's SQL, fix the underlying problem (usually a manually-edited row), and re-run
alembic upgrade head.
CORS errors in browser console for prod
- The frontend's
VITE_API_URLmust match the backend's allowed origins. In a single-domain deploy, set both to relative paths or the same canonical hostname.
Still stuck
Open an issue with:
- What you did.
- What you expected.
- What happened (with browser console + backend logs trimmed to the relevant ~30 lines).
- Atlas version (from Changelog or
/healthendpoint). - Browser + OS.
For security-sensitive reports, follow the disclosure path in SECURITY.md and do not post a public issue.