A square crop is an editorial decision, and no artist agreed to it. — A case study
A finished piece becomes something people can find.
Before
The upload is where a general platform quietly takes over. The work is cropped to the shape the grid wants, the video is capped at a length that suits the feed, and the caption is where the artist explains what was lost. A four-minute process video shot on a phone in a regional studio either uploads or does not, and there is nothing in between to look at while it decides.
Now
An upload keeps its own proportions — a tall weaving stays tall, a wide landscape stays wide — and stills and video sit together on one piece rather than as separate posts. Video is processed away from the request, so the post exists and is visible the moment it is made, and the clip fills in when it is ready.
- Stills and video attach to one piece, not to separate posts
- Native aspect ratio preserved; nothing cropped to a common square
- Video transcoded out of band on a slow connection
- The post is live immediately and says honestly what is still processing
Attention becomes a relationship.
Before
On a general platform the strongest thing a viewer can do is follow, and a follow costs nothing and means nothing. There is a like, which expires, and there is a DM, which is where every actual conversation about working together has to happen — outside the product, unstructured, and lost the moment the thread scrolls.
Now
Comments and saves are the light touch, and a friend request is the heavy one: it is mutual, so it has to be accepted, and accepting it means both artists have said yes to the same thing. That is a smaller number than a follower count and a much more useful one, because everyone in it has agreed to be there.
- Comment and save for the light touch
- A friend request that has to be accepted, not a follow that does not
- Saved work collects into something an artist can come back to
- Every read is scoped to what the viewer is actually allowed to see
A relationship becomes work.
Before
This is the part no general platform has at all. Two artists who want to make something together drop out of the product entirely — into messages, then email, then a shared folder — and the platform that introduced them has no idea it happened and no way to help.
Now
A collaboration is a first-class object. It is proposed, accepted, and then it belongs to both artists: it appears on both profiles, both are credited, and the notifications keep it moving rather than leaving it to whoever remembers to follow up. The platform that made the introduction is still there when the work starts.
- A collaboration is proposed and has to be accepted by everyone on it
- It appears on every collaborator's profile, credited to all of them
- Realtime notifications for requests, comments, saves and acceptances
- Batched by actor, so five comments on one piece read as one event
Australian artists already had somewhere to be seen. What they did not have was somewhere built for the work: a platform that shows a tall textile piece and a wide landscape as the different objects they are, that treats a connection as a working relationship rather than an audience, and where the process is as welcome as the finished piece. Art Branch is a social platform for artists — uploads, video, comments, saves, friend requests, collaborations and notifications — with an identity drawn from branches and leaves, because the product is about what grows out of a connection.
Every general social platform an artist uses was optimised for something other than art. The feed rewards frequency, the crop flattens the work to a common shape, and the metric that decides whether anyone sees a piece is engagement — which correlates with almost nothing an artist cares about. A ceramicist in Melbourne posts into a global stream and is found by nobody in particular.
The second thing missing was the relationship. On a general platform the connection is a follow: asymmetric, passive, and an audience by design. Artists do not primarily need an audience — they already have one, elsewhere, and it has not got them any work. What they need is other artists: someone to share a kiln with, split a stall with, shoot a series with, or make the thing neither of them could make alone.
And the third was the process. The part artists most want to show — the underpainting, the failed firing, the studio at 2am — has no home on a platform where every post competes with every other post for the same slot. It gets posted to a story and expires.
So Art Branch was built around three commitments: work is shown at its own proportions, a connection is mutual, and a collaboration is a feature rather than a DM thread. The visual identity — branches, growth, leaves — is not decoration on top of that. It is the same idea drawn: a profile is a root, the work grows from it, and two branches meeting is the point.
The decisions
What was chosen, why it was chosen, and what it cost.
Authorisation lives in Postgres row-level security, not in application middleware.
On a social platform every single read is conditional — whose piece is this, are these two connected, is this profile public, is this collaboration still a proposal. Put those rules in application code and every new endpoint re-implements them, and the first one that forgets is a leak rather than a bug.
The cost: A policy is harder to debug than an `if` statement, and a badly written one is a slow query on every read rather than a slow query in one place. The rules had to be got right early, because moving them later means moving all of them.
The feed is assembled on read, not fanned out on write.
Writing a copy of every post into every connection's timeline costs more than querying for it at this size, and it turns an edit or a deletion into a cleanup job across thousands of rows. Because connections are mutual, the graph is also small enough per artist that the query stays cheap.
The cost: The feed query is the hottest path in the product and lives or dies on its indexes. At a much larger scale this is the decision that would have to be revisited first, and we would rather revisit it than pay for fan-out before it was needed.
Connections are mutual. A follow would have been easier and grown faster.
An asymmetric follow builds an audience, and an audience is the thing artists already have on four other platforms and which has not got them any work. A mutual connection is a small, honest number in which everybody has agreed to be there — which is the only kind of graph a collaboration can be proposed across.
The cost: Growth is slower and quieter. Nobody accrues followers passively, there is no vanity number to screenshot, and the platform gives up the one loop that makes general social networks compound.
Uploads keep their own aspect ratio. Nothing is cropped to a common shape.
The crop is the single loudest complaint artists have about general platforms, and it is not a preference — a tall textile piece and a wide landscape are different objects, and squaring both is an editorial decision the platform made on the artist's behalf.
The cost: A ragged feed is materially harder to build than a uniform grid: it is harder to lay out, harder to virtualise, and it reflows as images decode unless every piece's dimensions are known before the image arrives. They are stored on upload so the layout is right on the first paint.
Video is transcoded out of band, and the post exists before the video is ready.
Artists upload from studios on regional Australian connections, and a four-minute process video cannot hold a request open. Making the post immediate and the media eventual means a slow upload never looks like a failed one.
The cost: A piece can exist in a state where its video is not playable yet, so the interface has to say that plainly. A visible 'still processing' beats a play button that does nothing, but it is a state that has to be designed rather than one that never happens.
Notifications are realtime, but batched by actor.
Five comments from one person on one piece is one thing that happened, not five. Realtime is what makes the platform feel alive; batching is what stops it feeling like a machine shouting.
The cost: Batching needs a window, and a window is a guess. Too short and it does not batch; too long and the realtime promise is broken for the notification that mattered most.
The leaf identity is carried by the layout, not applied as ornament.
An artistic theme laid over a platform full of art is two things competing for the same attention, and the work has to win. So the organic language lives in the proportions, the spacing and the way things unfold, while the surfaces actually holding a piece stay quiet enough to disappear behind it.
The cost: It reads as less designed at a glance, which is a real cost on a first visit and in a screenshot. The identity has to be felt across a few screens rather than pointed at on one.
Profiles are public pages on the open web, not screens behind a login.
An artist's profile has a job outside the platform: it is what gets sent to a gallery, a grant panel or a commissioner. A page that requires an account to view is a page that cannot do that job, and the artist goes back to a PDF.
The cost: Two rendering paths for the same profile — one for signed-in members with the social surface on it, one public and indexable — and a privacy model that has to be explicit about which pieces cross that line.
Built on
- Next.js
- The feed, the profiles, the studio and the public pages.
- TypeScript
- End to end, including the types generated from the database schema.
- Supabase
- Postgres, auth, storage and realtime — and the row-level security the whole authorisation model rests on.
- PostgreSQL
- Artists, pieces, connections, collaborations, comments, saves and notifications.
- Media processing
- Transcoding video and deriving image sizes away from the request.
Talks to
- In-app realtime notifications
- Public profiles on the open web
What changed
- Live at artbranch.com.au
- Work is shown at the proportions it was made in, not cropped to a grid
- Stills, video and process sit on one piece rather than three posts
- A connection is mutual, so the graph is collaborators rather than an audience
- Collaborations are objects both artists own and are credited on
- Comments, saves, requests and acceptances notify in realtime, batched by actor
- Authorisation sits in the database, so a new surface cannot forget to apply it
- An artist's profile is a public page they can send to a gallery
If your users are working around your product, that is the product.
The features that matter are usually the ones people currently leave the app to do. Tell us where your users go when your software stops being useful, and you leave the first conversation with a scope, a budget and a ship date.
