Design
The Root platform enables developers to create powerful automation and integration tools that enhance community collaboration. This section serves as a blueprint for designing Apps that fit into the Root ecosystem.
📄️ Is your App right for Root?
Root Apps are multi-user applications with real-time updates that are installed into a community. They aren't single-user experiences for purchase by an individual.
📄️ Define your features
Before you write code, take some time to plan. This article walks through standard planning steps, tailored for Root. If you’ve built software before, you may be able to skim through this.
📄️ Make it feel collaborative
Collaborative Apps share updates in real time. When one member does something, everyone else sees it right away. This helps members feel like they’re part of a team rather than working alone.
📄️ Integrate with the platform
Your App runs inside Root—it should feel like part of Root. That means using the same tools and patterns the platform uses to interact with community members. Use the channel activity indicator to get attention. Show profile pictures and reuse the standard profile popup. The more your App fits into Root’s experience, the better it feels for users.
📄️ Choose your UI framework
The client side of a Root App is a regular web app. It runs inside a Chromium-based container and starts by loading your index.html file. That means you can use any web technology—HTML, CSS, JavaScript, TypeScript, or any frontend framework like React.
📄️ Should it look like Root?
Does your App have its own brand colors? Or do you want to match Root’s colors? Either way works. It's your choice. Whatever you decide, your App should support both dark and light themes.
📄️ Plan your client-server API
Root Apps follow a client-server model with a thin client. Your server does most of the work and is the source of truth for all data. You define a networking API, so clients can send actions to the server and receive updates in return.
📄️ Save data early and often
All persistent data in your App should be stored on your server. Don’t rely on the client to keep anything important—send it to the server right away. This prevents data loss if the client or server restarts.
📄️ Handle real-time failures
Real-time software, by its nature, involves rapid data changes and constant synchronization. Networking failures and disconnects will happen. Your job is to make sure your App handles these problems without losing data or confusing users. This guide shows how to make your Root App resilient when things go wrong.
📄️ Choose your settings
Global Settings let community admins configure how your code behaves—either during installation or later. The settings apply to everyone in the community.
📄️ Choose your permissions
Permissions define exactly what your code can do inside a community, and they’re granted by the community at install time. This page helps you pick the smallest set you need, understand the difference between community and channel scopes, and declare those permissions in your manifest. You’ll also see how Root enforces permissions at runtime.