# Suno Spaces (Prototype)

## TLDR

Inspired by physical music studios, Suno Spaces are a digital way to listen, create, and jam together.
Because music is fun whether you're together or solo.

## Principles

Spaces are inspired by the principles of real-life music and art studios.

- Spaces are welcoming, communal, vibrant spaces that foster creativity
- Spaces should be a good hang
- Spaces are extremely aesthetic and reflect their operator's taste and craft
- Spaces are also a way to flex - studios will often have awards or creative work they are proud of.
- Spaces should have several rooms to hang out in
- Spaces are a place with presence. A user has presence in a space (probably in one of its rooms).
- Unlike studios, spaces are portable. They should work equally well on desktop and mobile (and eventually VR)
- Everyone should have a home Space. Groups can have their own Spaces as well.
- It should be very easy to invite people to a Space. people should just be able to drop in. but you should also be able to easily kick them out
- Spaces and all parts and features of Spaces should seamlessly support solo and multiplayer use.
- Spaces should work well both synchronously and asynchronously.

## Relevant Other Platforms

Spaces should take inspiration from collaborative, creative, and communication platforms like Discord, Figma/FigJam, and group messengers, as well as co-listening and music platforms like Spotify, TurntableFM, etc.

## Information Architecture

### Spaces

Spaces are similar in concept to Discord or Slack servers, in that they are a collection of rooms (similar to channels).
The rooms are there so that people can break out and create in their own spaces.

Spaces have a concept of a showcase. This is a special area in each space that allows aesthetic customization. Think of it like a Geocities, Neocities, or MySpace page for a space. This will be a very similar concept to a profile page, but for the space itself.

Each room should feel like a chat. In the future there may be other types of rooms (DAW-like timeline view, FigJam-like canvas, or maybe even a multiplayer rhythm game).

Spaces should have a member list (similar to Discord/Slack).

As rooms will have a lot of atoms in them (and many messages), there should be separate views for quickly filtering atoms in a room by type and other filters.

### Users

Users should have handles, display names, and avatars. Eventually they will have a Discord/gamertag mini view - you will be able to hover over their handle to see a preview of their stats, music they like, a mini version of their showcase etc.

### Chat

Chat should feel like a normal messaging app, with emoji reactions, etc. Eventually, chat should also support threads (comments), which will allow the Orphy assistant to respond to a request in-place. A message might have multiple atoms (see below) attached or referenced (if previously created).

You should be able to mention (multiple) users in a message as well as the Orphy assistant.

### Playback Architecture

Because Spaces are music-centric, each room should support playing a piece of music. The music might have video and image attached as well. There should also be the concept of a queue, prompt, or playlist. In essence, the space should be able to go into a radio mode where people are passively listening to the same music together.

However, since people will be creating in the same rooms, each user should have their own individual playback state. Users should be able to follow/sync up to both the room's playback state, and an individual's playback state, (like following someone around Figma).

In a future version it might also make sense to enable voice chat on top of the music (just like what would happen in the studio).

### Orphy (Assistant)

Each space will have an assistant called Orphy (short for Orpheus) that you will be able to tag in messages to do things, ranging from creating songs to changing the room radio prompt. This assistant mixes the role of producer, producer assistant, or DJ.

We will need to figure out how the assistant responds to requests and where that lives in the data model.

@suno will be the way to mention it.

## Permissioning

Spaces should have an owner. They should also have invite links where people can join the space. Thos invite links should be nice pages (similar to Discord invites) with an Opengraph preview, some stats, a rich background for the space (maybe highlighting the showcase), etc

Eventually there will the concept of public and private rooms in a space. Private rooms would only be joinable by a certain allowlist.

Standard logical permissioning should apply to what objects are CRUD by who.

## (Creative) Atoms

Since Spaces are areas for creation, users will be importing and creating multimedia. Atoms will have types, like songs, videos, images, lyrics, interactive webviews, etc. Each of these will have their own metadata. But there should be a general set of UX interactions with an Atom. And it should be pretty easy to add and reference atoms of different types. Atoms of different types will have different actions. For example I might be able to sample a part of a song to create a new song atom. Or remix a song.

Atom creation will generally be an async process (with optional progress streaming).

Atom creation will be primarily driven via tagging the assistant (@suno).

## The Showcase

The Showcase is an homage to the extremely varied aesthetics in artists' studios. It will be a freeform (snap to grid available) canvas editor for displaying visual assets, songs, and other widgets. A design challenge will be to make this work elegantly on both mobile and desktop.

## Technical Architecture

This is built for rapid AI-enabled prototyping. This will be an internal prototype.
Use modern frontend technologies (React, Typescript, Tailwind, NextJS).
We will deploy on Vercel under the Suno account, eventually under the domain spaces.suno.run.
It will be important for this to work on both desktop web and mobile web.

In the future there could be native iOS/Android apps.

For the backend we will use a combination of Convex, Convex Auth, and Modal, as well as internal Suno APIs.
Convex is chosen because it's natively multiplayer and has an extremely extensible backend perfect for vibe coding and prototyping.
Note that convex is a relational database and so relational architecture should be followed.

As this is an internal prototype, authentication should only be Convex Auth and Google, and only support @suno.com emails.

One interesting technical challenge to architect towards is that spaces, rooms, and places like the showcase should be themeable.
And it should be easy for users to create very custom themes (colors, backgrounds, fonts, etc).

Another design/technical challenge to think through is that themes should work well on both desktop and mobile.

### Assistant Architecture

The primary use of the agent will be to assist with asynchronous creation of various atoms.

A Convex handler will need to handle any messages with @suno as well as specific requests from custom forms (TBD).
The assistant will use OpenAI's GPT-5 mini via the API.
The assistant will interpret the user query and return a respective tool call, which will be handled by the Convex handler.
Rest is TBD.

## UI Architecture

### Space UI

On desktop, the main Space UI should feel like Slack or Discord. Room list should be on the left sidebar (scrollable), chat and room status (what's playing, etc) should be in the middle.
The left should serve as a channel switcher. To switch between Spaces, we can go back to the dashboard for now.

### Room UI

For a chat room, the chat itself should be within a max-width container. The chat bar input should float at the bottom with rounded corners and glass texture.

### Theming

Each Space and Room should have its own theme. TBD

### Invite UI

TBD

### DMs and Group DMs

TBD

## Implementation Status

- **Phase 001 (Bootstrapping)**: ✅ Complete - Basic auth, schema, and skeleton UI established
- **Phase 002 (Core Features)**: ✅ Complete - Spaces, rooms, messaging, presence, and invite system implemented
- **Phase 003 (Settings Page)**: ✅ Complete - User profile settings with display name editing and avatar upload
- **Phase 004 (Atoms System)**: 📋 Planned - Creative asset management and async creation workflow
