RoomState
💡 Inspiration
RoomState was born out of a need for a light and flexible way to communicate availability or presence in different contexts without having to explain or message people directly. I often found myself wishing I could signal simple things like “don’t call right now” or “someone’s over” to my friends or roommates without interrupting what I was doing. That’s what led me to build RoomState.
RoomState was created as a tool that should help your life run a little bit smoother. I don't expect RoomState to change your life forever but it might be helpful for that anoying situation you have coordinating with your coworkers when they told you they would call you "in 5 mins" and you said "Thumbs up" but now it's 10 minutes after that and you have another thing to do but you don't want to appear as occupied in Slack or be logging all your available/occupied slots in the chat like a psychopath. You know, that situation. RoomState might help. It might not. Give it a try.
🛠 What it does
RoomState lets users create rooms, which are digital spaces that each have a state. The meaning of that state is completely up to the user, making the platform extremely flexible.
Here are a few examples:
Roommates scenario: I can create a room called “House” and set it to “occupied” when I bring someone over. Everyone in that room (my roommates) sees the current status, and I can even set a timer so it resets to “available” after a while.
Birthday boundaries: On my birthday, I don’t always want constant calls. I can create a room called “Call Availability” and post a public link. I’ll set the state to “only important” or “occupied” depending on how I feel. Anyone with the link can view it—even without logging in—but they can’t change it.
Each room includes:
- Custom states with colors and emojis for visual clarity
- Timed state transitions that automatically reset after a user-defined duration
- Access roles to control who can view or change the room
- A personal dashboard with widgets to monitor and update rooms easily
- Public broadcast links for sharing read-only room states with others
RoomState is meant to be open-ended. Users define the meaning of their rooms and states.
🧱 How I built it
The main way I build RoomState was through the Bolt.new interface, including manual changes in the code. I used the following stack:
- React for the frontend
- Supabase for authentication, real-time updates, and data storage
- RevenueCat and Stripe for handling subscriptions and monetization
- Bolt platform features and APIs for key integrations
Everything is optimized for real-time responsiveness and minimal friction in daily use.
🧗♂️ Challenges I ran into
- Keeping the codebase small for AI usage while trying to add all the features I envisioned
- Designing a system that allows for unlimited flexibility without confusing users
- Ensuring real-time updates worked smoothly across users and devices
- Building a reliable system for timed state changes
- Communicating abstract user-defined meanings clearly in the UI
- Balancing public accessibility with permission control
🏆 Accomplishments I'm proud of
- Built a fully working MVP during the Bolt Hackathon
- Designed a system that adapts to nearly any kind of presence-sharing or signal use case
- Integrated real-time syncing, timer-based logic, and role-based access
- Built a widget-based dashboard for quick control and visibility
- Created a public link system for sharing room states securely without requiring login
📚 What I learned
- How useful ambient status signals can be in reducing miscommunication and decision fatigue
- The importance of designing for extensibility and undefined use cases
- How to manage real-time data flow and background state transitions cleanly
- The value of letting users define their own meanings instead of enforcing rigid rules
🔮 What's next for RoomState
- Exploring new technologies and tools to make the app faster and smoother
- Adding API access to allow automation and integrations with other tools
- Expanding mobile support and adding notifications for room state changes
- Enabling custom dashboard widgets for more advanced or niche needs
- Creating room templates to help onboard new users
- Exploring integrations with platforms like Slack, Discord, and smart home systems
- Enabling direct link access to rooms and dashboards so that you can bookmark them and share them easier
RoomState is built to be open-ended, expressive, and simple. Whether for coordinating with housemates, signaling availability to friends, or something I haven't imagined yet, I hope it helps people share presence and context in a more human way.
Built With
- bolt.new
- react
- revenuecat
- supabase
Log in or sign up for Devpost to join the conversation.