How to read BaseBuddy logs when something fails
Find the right BaseBuddy server log, identify the failing layer, and collect a safe support bundle without exposing secrets.
Use this guide when BaseBuddy shows an error, a request fails, or a production deployment behaves differently than expected.
BaseBuddy does not have an in-app log viewer. Server logs come from the host that runs BaseBuddy, such as your deployment platform, container runtime, process manager, or terminal session. If you start BaseBuddy with pnpm start, it runs the production Next.js server on port 8080, which is the same as next start --port 8080.
The goal is to match the user-visible failure to the right server log entry, then fix the first failing layer instead of changing setup, mapping, or permissions blindly.
Start with the visible failure
Before opening logs, write down what happened in the browser.
| Detail | Example |
|---|---|
| Page or route | /projects/my-site/posts |
| Action | Open project, save post, publish, upload image, accept invite |
| Time | The local time when the failure happened |
| User-visible error | The toast, banner, disabled action, or response message |
| HTTP status | 400, 401, 403, 413, 429, 500, or 503 if visible in the Network tab |
Then open the logs for the host running BaseBuddy and search near that time.
Check the place that owns the running process:
- the terminal where
pnpm startis running; - your deployment provider logs;
- your container logs;
- your process-manager logs.
Stay close to the timestamp of the failed action. A later error can be a result of the first failure, not the cause.
Use setup checks before deeper log reading
If the app redirects to onboarding, setup checks fail, or projects cannot load after an env, deployment, database, Auth, or storage change, start with setup diagnostics.
Open:
texthttp://localhost:8080/onboarding?diagnostics=1If the browser cannot render BaseBuddy, run the CLI check from the BaseBuddy repo:
shpnpm setup:checkUse the first failed setup section as your starting point. For deployment-specific setup checks, use How to run setup checks after a deployment or upgrade. If setup checks are failing, use How to fix failed setup checks before changing mapping or content.
Identify the failing layer
Most failures fall into one of these layers. Use the browser symptom and the nearby server log together.
| Layer | What it usually means | First place to look |
|---|---|---|
| Setup or env | BaseBuddy cannot read a required env value, the wrong env shape is used, app data is missing, or the app needs a restart after env changes | /onboarding?diagnostics=1, then pnpm setup:check |
| Auth or session | The user is signed out, local BaseBuddy auth is not returning to BaseBuddy, or the current session cannot be verified | Local sign-in setup and the sign-in flow |
| Same-origin guard | A state-changing request came from an unexpected origin | The deployed URL, proxy headers, and browser page that sent the request |
| Rate limit | Too many repeated requests hit the same protected action | The action being repeated and the 429 response timing |
| Body-size guard | A JSON body or upload request is larger than BaseBuddy or the proxy allows | File size, request size, and host body limits |
| Content runtime | BaseBuddy can run, but a content read, save, publish, archive, media, or file action failed | Content route logs and the affected project |
| Mapping or storage shape | The saved mapping points at a missing, unsafe, read-only, or unsupported storage target | Project Settings -> Content Mapping |
| Database | The configured database cannot be reached, credentials changed, a mapped table or column is missing, or a query is too slow | Database URL, user permissions, schema, and content runtime logs |
| S3 or storage | Media storage credentials, bucket permissions, CORS, object paths, or public URL bases are wrong | Media/files mapping and storage provider settings |
BaseBuddy should keep unsafe mappings read-only or unsupported instead of guessing. If an edit button is missing or a screen is read-only, use How to troubleshoot missing edit buttons or read-only screens.
Read common log clues
BaseBuddy logs should help you find the failing route or layer without exposing secrets.
Content request failures often include a route prefix like:
text[content-runtime-route][...]Use the endpoint name, timestamp, and projectId to match the log to the browser action. Do not paste private content or full request bodies into an issue just because the route failed.
Slow content reads can appear as:
text[content-runtime][slow-request]These logs include timing information such as endpoint, duration, budget, cache state, status, and spans. A slow-request log does not always mean the request failed. It means the request took longer than the route budget and should be checked for database, mapping, relation, count, or storage performance.
Cache warmup or rebuild work can appear as:
text[content-runtime][cache-build]Use these entries when a page loads slowly after a restart, deployment, or mapping change.
Invitation and member-management errors may include route-specific prefixes for member invitations. Match those logs to the invite, accept, revoke, or members action the user took.
Match status codes to likely causes
Status codes are not the whole answer, but they point you toward the right layer.
| Status | Likely cause |
|---|---|
400 | Invalid request, unsupported action, missing required value, invalid mapped value, or out-of-date mapping |
401 | The user needs to sign in again |
403 | Permission, role, author scope, or same-origin verification blocked the action |
404 | The project, post, member, invitation, or mapped record was not found |
413 | The request body or upload is too large |
429 | A rate limit blocked repeated requests |
500 | BaseBuddy could not complete the request and returned a safe generic error |
503 | Setup is incomplete, the app is temporarily unavailable, or the content/database connection is degraded |
If image or file URLs are broken after upload, move, delete, or storage changes, use How to fix broken image or file URLs.
Keep secrets out of logs and support messages
Do not share:
- full
.envfiles; - database URLs;
- service-role keys or secret keys;
- cookies or session values;
- certificates;
- signed URLs or long signed URL query strings;
- private emails;
- private content screenshots;
- full request bodies.
Redact before sharing. If you need to show that a value is set, share the env variable name and a short note like set, missing, or redacted, not the value itself.
pnpm setup:check and browser diagnostics are designed to redact sensitive values, but you should still review copied output and screenshots before posting them anywhere public.
Collect a safe support bundle
When you need help, collect the smallest bundle that explains the failure.
- BaseBuddy release, tag, or commit.
- Which app-data backend is selected, and whether it exists and validates.
- The page or route where the issue happened.
- The action you took.
- The timestamp of the failure.
- The user-visible error and HTTP status, if visible.
- Redacted
/onboarding?diagnostics=1orpnpm setup:checkoutput when setup may be involved. - A short server log excerpt from the same timestamp, with secrets removed.
- The exact steps to reproduce the issue.
Do not include private content or a full request payload. If the issue involves one field, describe the field type and mapping shape instead of pasting the real content value.
Verify after the fix
After you fix the first failing layer, test one narrow action again.
For setup changes, rerun setup diagnostics. For content or mapping changes, open one safe item and test one harmless edit. For workflow issues, test Publish, Unpublish, or Archive separately from normal Save.
BaseBuddy reads the saved mapping as the runtime truth. Normal Save writes dirty fields only, and Publish, Unpublish, and Archive stay explicit actions. Do not use log debugging as a reason to reshape user tables, broaden permissions, or make unsupported fields writable.
For production operating checks, see Operations and Production readiness.