Skip to main content

How passo.build thinks about your app

passo.build does not ask you to choose an architecture pattern. It asks what the product needs to do, then derives the shape from the repository and your answers:

  • Is there a user-facing frontend?
  • Does the app store data?
  • Does it upload files or media?
  • Does it need sign-in, roles, teams or tenants?
  • Does it call paid or private APIs?
  • Does it need background jobs, scheduled work, webhooks or queues?
  • Does it need realtime updates or specialised processing?

The default split​

For most products the safe default is:

AreaRule
Website or app shellHosted cheaply as a managed frontend with CDN, TLS and rollback.
APIs and business logicPrivate logic stays server-side, behind authenticated APIs.
DatabaseDurable data lives in a managed database.
FilesFile contents go to object storage; metadata and permissions stay in the database.
SecretsNever in the browser, never in the repository. Server-side environment or secret storage only.
JobsWork that should not happen during a browser request goes to a worker, queue or scheduler.
Auth and rolesAn identity provider plus explicit server-side permission checks.
Logs and monitoringEnough to debug deploys, API failures, auth failures and cost surprises.

Examples​

What the repository showsWhat passo.build proposes
Static site or frontend-only prototypeManaged frontend hosting. No database unless the product stores data.
CRUD app with users and recordsManaged frontend, authenticated API, managed database, backups, logs.
App with image or video uploadsThe above, plus object storage for the files.
App with scheduled email, imports or webhooksThe above, plus a worker or scheduler with retries.

When the signals conflict or are missing, passo.build asks a question before it commits to a shape. The proposal explains why the shape fits the product and what evidence must exist before release.