What's new: a bucket per environment, designed frontends and faster builds
The previous post covered up to 7 October. This one covers the ten days after it. Everything below is live on basable.com.
Two buckets for every environment
Apps store files: uploads, product photos, invoices, exports. A proof of
concept writes them to the container’s disk, and the next deploy loses them.
Every environment can now have object storage. Add one line per environment to
.basable/config.yaml:
spec:
environments:
preview:
objectStorage: {}
live:
objectStorage: {}
The environment gets two S3-compatible buckets: a private one, readable only with the environment’s own key, and a public one for what every visitor may see. The key arrives in the environment’s cluster as a secret, under the variable names the AWS SDKs read, so any S3 client works without configuration code. The assistant knows the rules: uploads, invoices and exports go in the private bucket and reach a browser through a short-lived signed link; product photos and the images of a public page go in the public one. The buckets live in the EU, on Cloudflare R2. Stored data is billed per GiB-month and requests per million, and the pricing page has the rates.
Two things ride on the buckets:
- Database backups. A PostgreSQL cluster the assistant builds backs itself up into the private bucket, base backups and a continuous archive, with a retention you set. A bad migration is a restore, not a loss.
- A website straight from the bucket. A frontend that is only files, a built React app or a plain HTML site, no longer needs a container. CI uploads the built site as an artifact, and the platform serves it at the root of the environment’s hostnames, custom domains included. It costs no CPU or memory, keeps answering while a preview sleeps, and switches the moment the upload lands, before the app behind it has rolled out. The previous commit’s site is kept, and the bucket is now the default for any frontend that is only files.
Every frontend arrives designed
The preview is the first thing you see of a new project, and until this month the assistant had no opinion about how it should look. Now every frontend is held to a design bar: a direction chosen for the product and named in the answer, a palette and typeface of its own, light and dark, real copy instead of placeholder text, every state covered (empty, loading, error), and a layout that works from 360 pixels up. A React app gets Tailwind CSS v4 and shadcn/ui components on a set of versions we installed and built ourselves. A plain HTML site gets no build step at all: files in a folder, served as they are.
One look for basable.com and the editor
The public pages and the app now share a design system: deep ink neutrals, the logo’s blue as the one brand colour, two typefaces, and a soft glow where a photo used to be. The home page has a bar you can paste into your coding agent to connect it over MCP. In the editor you can drag the dividers beside the chat to resize it, on a phone the sessions and the chat lead to the running deployment, and a dropped event stream is noticed and replaced instead of leaving the page stale.
Push to main from anywhere
A push to main from a laptop or another tool used to leave preview behind
until the next Merge & Deploy merged it back. Now every push to the default
branch brings dev up to date: a fast-forward when it can, a merge when it
must. When the merge conflicts, the editor shows “dev behind main” with the
commands to resolve it and holds Merge & Deploy until you have. Merge & Deploy
itself fast-forwards whenever it can, so no merge commit appears without a
reason.
Billing, said plainly
- VAT numbers are checked. When you save billing details with an EU VAT number, we ask VIES, the EU’s registry. A validated business number from another member state means the invoice is reverse-charged and says so, citing the article. The billing page shows what VIES made of the number.
- Any number of organisations. An account may own as many organisations as it needs; the cap of one is gone.
- Organisations without a payment method. An organisation that never added a payment method can be deleted by its owner. Left alone, its projects are deleted two months after the organisation was created, and you are mailed before that happens. The free month is the first of those two; the second is the time to decide.
Faster builds for your own agent
Every change the assistant makes is built before it lands, by the runner in your own repository, and an agent connected over MCP from a browser builds the same way. Those builds started from an empty cache every time, which made a Rust project’s build take a quarter of an hour. They now run from the repository’s default branch and keep their caches, so each build restores the last one’s work. The cap of eight builds per session is gone too; the monthly minutes budget is the only limit. And Rust plan mode renders a whole project in one call instead of one call per nanoservice.
Smaller things
- Enterprise. A page for teams that need a dedicated cluster, Basable in a cluster they run, or ISO 27001 certification.
- Support. support@basable.com is in every footer and behind a Support button in the editor.
- Haiku 5.5 replaces Haiku 4.5 in the model picker, with the same free allowance.
- MCP URL. The editor copies the MCP server URL next to Clone.
- Terms and privacy. The Terms of Service and Privacy Policy were rewritten properly, with the processor terms the GDPR asks for.
- Endpoints stay home. A Service with hand-written Endpoints could point the shared gateway at an address outside its own environment. Such Endpoints no longer leave the environment’s cluster.
Tell us
Tuesday’s post says why the front page now reads “Made for more than a proof of concept”; most of the items above are pieces of that. If something here does not work as described, tell us at support@basable.com. That is what the alpha is for.