A symptom → location routing table.
Dev server / build issues
| Symptom |
First place to look |
yarn dev hangs forever |
Check node_modules/ exists in both repo root AND polotno-editor/; re-yarn install if needed |
Module not found: @nuxtjs/auth |
yarn install was interrupted; re-run |
Build fails with '<no-ssr>' is undefined |
You're importing a client-only library without wrapping it; see ../../audit/someli-platform/09-conventions.md |
| Polotno editor blank on the page |
polotno-bundle.js missing or stale — cd polotno-editor && yarn build |
| HMR doesn't pick up changes |
Stop and restart yarn dev (Nuxt's watcher can drift) |
nuxt.config.js change has no effect |
Restart yarn dev — config is not hot-reloadable |
Auth / login / "I keep getting redirected to /login"
| Symptom |
First place to look |
| Login fails |
Network tab — is webauthenticate POST returning 200? If so, is the response shape { data: { token, ... } }? nuxt.config.js → auth.strategies.local.endpoints.login.propertyName defines the shape. |
Loops back to /login after successful login |
middleware/redirect.js is sending the user back. Check cookies (auth._token.local, usedetail) are set. |
| API calls return 401 |
Axios interceptor in middleware/axios.js — does the URL start with /auth/? Only those get the token header. |
| Wrong account loads |
usedetail cookie has stale account data; clear cookies and re-login |
| "Logout" doesn't actually log out |
nuxt.config.js → auth.strategies.local.endpoints.logout: false — the app calls $auth.logout() and clears state manually. Look at the component's logout handler. |
| Reference |
../../audit/someli-platform/03-auth-and-sessions.md |
A page is broken
| Symptom |
First place to look |
| 404 on a URL |
pages/ — file-system routing. Does the matching .vue file exist? |
| Page loads but data missing |
Vue DevTools → Vuex panel — did the action dispatch? Did the API call succeed? |
| Data sometimes stale |
store/api.js — 5-min cache; you may be hitting the cached value |
| Page is unstyled (FOUC / flash) |
CDN script for Bootstrap may not have loaded; check Network tab |
| Component doesn't render |
Auto-registration — the filename must match the tag. Sidebar.vue → <Sidebar />; check capitalisation |
State / Vuex issues
| Symptom |
First place to look |
| Action does nothing |
Verify it's registered in the module's actions.js and the module is included in store/index.js |
| Mutation doesn't fire |
Vue DevTools → Vuex → Events. If absent, the action isn't calling commit('...') |
| Cache returns stale data |
store/api.js TTL is 5 min — clear cache by reloading or calling store.commit('api/clearCache') if exposed |
| State changes from "nowhere" |
The store is non-strict; some component is mutating directly. Set strict mode locally and reload — strict-mode errors will pinpoint the offending line |
| Reference |
../../audit/someli-platform/05-state-management.md |
Routing / URL rewriting issues
| Symptom |
First place to look |
URL /foo redirects to /<accountId>/foo unexpectedly |
middleware/appendUrl.js — /foo is in the allow-list |
URL /foo does NOT redirect when you want it to |
middleware/appendUrl.js — /foo is NOT in the allow-list; consider adding it |
| Page redirects somewhere unexpected after login |
middleware/redirect.js — it has its own decision tree |
| UTM params disappear |
middleware/appendUTM.js — and check validUrl.js |
| Reference |
../../audit/someli-platform/04-routing.md |
Polotno editor issues
| Symptom |
First place to look |
| Editor crashes on load |
Browser console — is the polotno-bundle.js request 200? Is React 18 throwing? |
| Save doesn't persist |
The Nuxt app sends the editor JSON to a BE endpoint — check Network tab |
| Editor missing a feature the designer has |
The two Polotno editors have diverged. See ../../audit/CODE-OVERLAP-MATRIX.md § 6 |
| Need to add a new panel |
polotno-editor/<panel>.js — register in the editor's App.js — yarn build |
| Reference |
../../audit/someli-platform/06-polotno-integration.md |
Billing / Paddle / Stripe issues
Post lifecycle issues
| Symptom |
First place to look |
| Post status displayed wrong |
helpers/helper.js → renderPostStatus, calStatus — this is the state machine |
| Post stuck in "scheduling" |
The status is set by the BE job (someli-api/job_*_publish.js); FE just displays |
Calendar (Calender/) shows wrong day |
Check timezone handling in the calendar components and the date helpers |
| Reference |
../../audit/someli-platform/13-post-lifecycle.md |
Onboarding flow issues
Permissions / role-based UI gating
| Symptom |
First place to look |
| Wrong nav items shown for a role |
components/Sidebars/... + role checks in helpers/ |
| Feature gated incorrectly |
constants/constants.js for PLAN constants + helper functions in helpers/helper.js |
| Reference |
../../audit/someli-platform/12-permissions-and-roles.md |
| Symptom |
First place to look |
| Tracking event missing |
plugins/<name>.js — the plugin may have failed to init (check console) |
| GTM not firing |
plugins/gtm.js + the GTM ID env var |
| Clarity, FullStory, Hotjar silent |
All are client-only plugins in plugins/; each requires its env var |
| Bootstrap looks broken |
jQuery + Bootstrap 4 JS come from CDN — Network tab |
| Reference |
../../audit/someli-platform/08-integrations.md |
Deployment issues
| Symptom |
First place to look |
| Jenkins build fails |
Jenkinsfile in the repo; logs in Jenkins UI |
| Production SPA serves an old version |
EFS-mounted node_modules may not have refreshed; start.sh waits 60s for it |
| Production 404 on a static file |
static/ is served verbatim; confirm the file exists there |
| Deploy succeeds but the page is blank |
Check browser console for missing env-var-driven scripts; the build inlines process.env.API_URL etc. |
| Reference |
../../audit/someli-platform/07-build-and-deploy.md, ../../audit/someli-platform/graviton-migration.md |
When all else fails