DEV Community 👩‍💻👨‍💻

arnu515
arnu515

Posted on

Concert - My submission for MongoDB Hackathon on DEV

What I Built

Concert is a place for you to hang out with others in voice-only rooms called Stages. With permission based Speaker and Listener system, you can control who gets to speak, just like a real concert.

There also is a chat window, for you to be able to chat with others, even when you're not a listener.

This makes it a perfect environment for podcasts, talks, lectures, etc.

Concert was inspired by Clubhouse and the various other Clubhouse clones out there

Category Submission:

My app fits into multiple categories
1) Since you can search for stages with Atlas Search
2) The entire app is real-time
3) The backend was built with Python and Sanic ASGI framework.

Hence, I choose these categories: Search No More, About Real-time, and Think Outside the JS Box

App Link

https://concert.arnu515.me

Screenshots

Home Page

Auth Page

Inside a stage

Made a speaker

Description

Concert is a Free and Open-source alternative to Clubhouse, Twitter Spaces, and the likes. It is powered under the hood by the LiveKit Selective Forwarding Unit, which is also open-source technology.

Users can create stages, which can be private/invite-only. Stages are rooms with their own speakers, listeners and chat boxes that give everyone inside a private space to talk with one another. Stages can also be set to be discoverable by anyone, so anyone can join these stages. This makes Concert a perfect place for private meetings, and large public gatherings.

The owner of the stage can decide who gets to speak and who doesn't by just clicking on the user. All users can use the chat window, however, so they can still be connected with the speakers.

Link to Source Code

Permissive License

MIT

Background

I had always wanted to dabble around with WebRTC, and this hackathon gave me the perfect chance. MongoDB is a perfect database for this use case, since I don't have a very rigid structure for my data, but I want it to be fast, and I want to store lots of it (chat messages, for example).

Relations aren't that difficult since I used Prisma ORM to make that easier for me.

How I built it

MongoDB Atlas is a perfect place for beginners since you don't have to worry about hosting and maintenance. Creating the database and users were just a few clicks away. I also used Atlas search in my app, which was really fast and easy to use.

Atlas helped me a ton this project by handling the database for me so I could focus more on development.

Additional Resources/Info

Tech Stack:

  • Frontend powered by SvelteKit and TailwindCSS.
  • Backend powered by the Sanic Framework and the Prisma ORM.
  • The data was stored on a MongoDB Database provided by MongoDB Atlas.
  • Backblaze B2, which is a really cheap, S3-compatible object storage platform.
  • LiveKit was used as an SFU to make WebRTC easier and faster.
  • The backend, frontend and SFU were hosted on DigitalOcean (referral link). You can click that link to get $200 of free credit for two months.

Top comments (0)

Let's Get Wacky


Use any Linode offering to create something unique or silly in the DEV x Linode Hackathon 2022 and win the Wacky Wildcard category

Join the Hackathon <-