ShoalStack is now

platform201
Uploads In. Credentials Out.

File Uploader Blueprint

Start from a working upload app with a Next.js frontend, a Go API, and a private Cloud Storage bucket. The bucket is created for you and wired straight to your backend.

Cloud Storage Without the Credential Shuffle

Storing user files sounds simple until you open the cloud console.

Buckets, service accounts, key files, and access rules all have to line up before a single upload works.

This blueprint lines them up for you. The bucket is created, kept private, and its name handed to your backend at runtime.

Use this blueprint as:

  • A file upload and download service
  • A starting point for document storage
  • A foundation for media and asset libraries
  • A template for apps that need private storage
File Uploader (Bucket Demo) blueprint card
Gateway routing / to the frontend and /api to the Go backend, with the bucket connected to the backend

A Clear Path from Browser to Bucket

platform201 turns cloud infrastructure into a visual graph. Each node is a running service; each line a connection that lets two services talk.

Gateway

Serves the frontend on / and forwards every /api request to the backend, all on one domain.

Frontend & Backend Containers

A Next.js page for uploading and browsing files, and a Go API that reads and writes the bucket.

Private Bucket

A Cloud Storage bucket that only your backend can reach. The browser never talks to it directly.

Bucket Name, Mapped for You

The bucket's name reaches the backend as BUCKET_NAME, with no credentials or key files to manage.

Bucket node with its name mapped into the backend as BUCKET_NAME

Uploads, Documents, Media, and More

Use the File Uploader blueprint to store and serve files from a private bucket without ever touching cloud credentials.

User File Uploads

User File Uploads

Let users drop files onto a page and store them straight in your bucket through the API.

Document Vaults

Document Vaults

List, browse, and download stored files from a simple page backed by private storage.

Media & Asset Storage

Media & Asset Storage

Keep images, video, and audio in Cloud Storage instead of on your app's own disk.

Backups & Exports

Backups & Exports

Point database dumps and app exports at a bucket that's already created and secured.

Data Intake

Data Intake

Accept CSV and other uploads, store them safely, and hand them off for processing.

Private Downloads

Private Downloads

Serve files only through your backend, so nothing in the bucket is publicly exposed.

From Blueprint to Working Uploads

Deploy a working upload app first, then swap in your own code with a visual setup flow that keeps storage and routing simple.

1

Name Your Gateway

Open the blueprint and give the Gateway a domain name. Your app will live at that address.

2

Deploy

Press Deploy. The bucket, both containers, and the Gateway are created and wired together.

3

Upload a File

Open your platform201.live address and drop a file onto the page, or send it to /api/upload.

4

Add Your Code

Swap in your own frontend or backend from GitHub or an upload. The backend keeps reading BUCKET_NAME.

5

Add Your Custom Domain

On the Domains page, add a hostname you own, then publish the two CNAME records it gives you at your DNS provider. Once they resolve, your certificate is issued.

6

Publish Updates

Merge future changes to your GitHub branch and hit Deploy to publish them.

After Deployment

Your upload app is now live, with every file flowing through your backend into a private bucket.

Next you might add a database for file details, a scheduled cleanup job, or a worker that processes new uploads. You place each one on the same graph and connect it to what's already there. The whole setup stays in plain sight.

platform201 connected and the private bucket in place

Ready to Deploy Your File Uploader?

Start with a working upload blueprint, connect your repository, and deploy on Google Cloud with a private bucket, routing, and HTTPS handled for you.

Deploy This Blueprint

FAQ

In a Google Cloud Storage bucket that the blueprint creates for you in europe-west2 (London), on the Standard storage class. Only your backend can read or write it.