Appbricx
Docs
FeaturesPricingStart free

Get started

OverviewWhat Appbricx isQuickstart with a coding agentQuickstart with the builderCore concepts

Guides

Data and tablesAccess and rolesBusiness rulesSign-inCustom screensRealtime and topicsWorkflows, schedules and webhooksServer functionsAI in your appPaymentsFilesMessagesIntegrationsVerifyPublishing, domains and rollbackOperating your appExport and self-hostSelf-host install

Tutorials

Build a booking app with Claude CodeMulti-user todo listClient portalSlack on new sign-upTemplates

Reference

Reference homeFrontend SDKHTTP APIMCP toolsCLIIntegrations catalogContract formatAI key resolutionRun Appbricx locally

Files

Most real apps need people to attach something: a photo of the broken part, a signed PDF, a profile picture. Uploads are built in, private to the person who made them, and stored with the rest of your app's data.

When to use it

  • An image field: a picture shown in the app (profile photo, product shot).
  • An attachment field: a document people upload (contract, receipt, CV).

Step by step

  1. Add an image or attachment field to the table.
  2. Generated forms already show an upload button for it.
  3. In your own screen, call app.upload(file) and store the returned url in the field.

Code

{ "name": "instructor", "fields": [
  { "name": "name", "type": "text" },
  { "name": "photo", "type": "image", "optional": true }
] }
async function onPick(e: React.ChangeEvent<HTMLInputElement>) {
  const file = e.target.files?.[0];
  if (!file || !app) return;
  try {
    const { url } = await app.upload(file);
    await app.update("instructor", id, { photo: url });
  } catch (err) {
    setError(err instanceof Error ? err.message : "Upload failed");
  }
}

<label>Photo <input type="file" accept="image/*" onChange={onPick} /></label>

Where files live

  • On Appbricx Cloud, in the platform's object store. Self-hosted, on local disk or any S3-compatible bucket.
  • File records live in your app's database, so backups cover them.
  • Uploads are listed under Backend, Logs, Files.

Gotchas

  • Private by default. Asking for someone else's file answers "not found", checked in the database before storage is touched.
  • Up to 25 MB each by default. Images, PDFs, text, audio, video, JSON, ZIP and Office files.
  • Seed attachment fields as null and make them optional; seed image fields with a short photo description.
  • An offline preview can't store files. app.upload rejects there; show the message.

Related

  • Data and tables
  • SDK reference
  • HTTP API reference
PreviousPaymentsNextMessages
Appbricx

The backend, runtime and hosting for apps your coding agent builds. On our cloud, in yours, or on your own servers.

Features

Coding agents and MCPVerify testingBuilder consolePostgres databaseData APIRealtimeRow-level securitySign-in and authPaymentsWorkflows and jobsAI in your appIntegrationsBackups and rollbackHosting and domainsSelf-host and exportAll features

Product

ShowcasePricingFor coding agentsTemplatesPrivate cloudBring your own AI keyFAQ

Compare

Appbricx vs SupabaseLovable alternativeBolt alternativeFor freelancersFor agencies

Resources

DocumentationReferenceBlogSupportContact

© 2026 Appbricx. All rights reserved.

TermsPrivacyCookiesAcceptable Use