This project is just me tinkering.
Because learning and building is fun.
All from scratch. No dependencies. No AI.
A virtual space with all the serious communication features of Slack
... in a tiny 3D world that is game-like, but not gameified.
People shouldn't just be items in a list!
In this virtual space, people are 3d avatars.
You don't have to solve a puzzle to communicate with friends,
but you may need to go find them.
Inspired by Gather
Proof of concept: https://tinyplanet.chat/
- a tiny 3d planet!
- user avatar - drag the planet to move around
- multiple users all share the same planet
- proximity video call - get close to another avatar to start a call (try it from your phone and computer at the same time!)
- screen sharing - start a video call then hit the screen button
- github auth - click the login button
- domain name, linux server, database, etc.
There's so much potential for building fun features! Own your own planet and build it out however you want. Travel to other planets, share files as 3d objects, e2e encrypted chat, push notifications, voice only calls, shared whiteboards, funny sounds, avatar customization.
- three.js (Check this out!)
- simondev third person camera
- poly.pizza 3d models
- webRTC for peer-to-peer video calls, screen share, etc
- server sent events and websockets
- GitHub Oauth integration for user identity
- ECDH-AES-GCM for end-to-end encryption
- SolidJS for pretty lightweight JSX without React
- Linux and Deno for server stuff
- SQLite for database on the server
- Digital Ocean for hosting
Mux? Naming things is hard. This repo started out on my laptop with the short but arbitrary name "mux", but that domain is taken. tinyplanet.chat is descriptive of what the project became and the domain was cheap, easy to say, and easy to spell correctly.