A portfolio-first social platform for artists and creators. People build a low-poly avatar, assemble a personal page from creative modules, and step into walkable galleries and music rooms. Discovery happens by visiting people and their worlds—not by scrolling an engagement feed.
The current build is a local-first prototype. Profiles are stored in the
browser, so no database, account service, API key, or .env file is required.
- Six-step account questionnaire and PS1/PS2-inspired avatar builder
- Editable profile modules for artwork, music, moodboards, and text
- Favorite song and playlist support
- Third-person gallery rooms and creator-DJ rave rooms
- A continuous flight into a planet-style creator discovery hub
- Friends, similar, opposite, random, and new-person discovery filters
- Responsive desktop and mobile layouts
- Node.js 20 or newer
- pnpm 9.15.9
If pnpm is not installed, run:
npm install --global pnpm@9.15.9git clone https://github.com/madirewolf/ourspace.git
cd ourspace
pnpm install
pnpm devOpen the local URL printed in the terminal. It will normally be:
http://localhost:5173/
If port 5173 is already occupied, Vite prints a different port. Use the URL it prints instead.
Choose Create your space and complete the questionnaire. The generated profile is saved to that browser's local storage. It is safe to refresh, but it will not automatically appear in another browser or on another computer.
For a pre-filled development profile, open:
http://localhost:5173/?demo=1
Demo mode is temporary and does not overwrite the profile saved in the browser.
Run these from the repository root:
pnpm dev # start the Vite development server
pnpm typecheck # run strict TypeScript checks in every workspace
pnpm lint # run ESLint
pnpm format:check # check Prettier formatting
pnpm test # run the Vitest suite
pnpm build # create a production buildBefore sharing a branch or pull request, run:
pnpm typecheck
pnpm lint
pnpm test
pnpm build| Path | Purpose |
|---|---|
apps/web |
React, Vite, and react-three-fiber client |
apps/presence |
Stub for future multiplayer presence and lobbies |
packages/core |
Pure TypeScript profile/avatar documents and archetype logic |
packages/avatar |
Runtime-generated low-poly avatar renderer |
packages/ui |
Shared interface components |
docs |
Architecture decisions and product notes |
- Profiles currently live in browser
localStorage. - Uploaded audio uses session-only browser URLs and may need to be re-added after reopening the browser.
- The discoverable creator catalog is seeded prototype data.
- There is no production authentication or remote database yet.
The planned backend phase will replace these local-only pieces with real accounts, storage, and published profile URLs.
Read AGENTS.md for the product principles and engineering conventions before making larger changes. In particular:
- Keep the product profile-first, never feed-first.
- Keep
packages/coredeterministic and free of browser or Three.js code. - Use short-lived branches and Conventional Commit messages.
- Do not add dependencies without documenting why they are needed.
pnpm is not recognized
Install the pinned version with npm install --global pnpm@9.15.9, close and
reopen the terminal, then run pnpm install again.
The page is blank or the 3D scene is very slow
Use a current version of Chrome, Edge, Firefox, or Safari and make sure hardware acceleration/WebGL is enabled.
The wrong project opens on localhost
Check the URL printed by pnpm dev. Another project may already be using port
5173, in which case ourspace will start on the next available port.
A clean profile is needed for testing
Use a private/incognito window or clear this site's local storage in the browser's developer tools.