v0.1 - Communities and Roles
Hello everyone!
I want to show the project I’ve been working on for some time: a social platform called Stateless DAO. The general mission of this project is to provide people with instruments for transparent cooperation with social responsibility in mind. The project is a participant of the Developer Grant program, and this showcase is for the final milestone.
grant application - https://forum.dfinity.org/t/stateless-dao-open-social-platform-for-cooperation/30421
DISCLAIMER: Keep in mind that this is the first 0.1.0 alpha release (Proof of Concept), and you might encounter bugs. Currently, it’s more like a sandbox for experimenting than a production-ready service.
The website - https://statelessdao.xyz/
The goal of the project is to provide an alternative to the dominant centralized hierarchical model of organizing people, where a person or a group with privileges (money, power, etc) decides for the less privileged majority, discriminates, and exploits them, defending the status quo and their privileges. Also, the goal is to provide the alternative without sacrificing personal freedom and individuality. I believe open internet services that are built for people by the people can be such an alternative.
Showcase video of the current functionality
Stateless DAO v0.1.0 showcase (Vimeo.com)
Below will be the text version with similar content
Requirements for the project
- Not for profit: profit conflicts with the goal because people who are interested in profit often pursue their own interests and are oriented towards short-term goals over the common welfare of communities and long-term vision.
- Self-sufficient and autonomous: the project should sustain its functioning costs (infrastructure) and the people who are working on it
- Transparent: all changes and the current state of the communities should be visible to both members and non-members to prevent hiding exploitation and discrimination.
- Community-developed: the project should be developed with the participation and feedback of the people who are using it, in alignment with the principle “Nothing about us without us.”
- Decentralized and horizontal: centralization creates hierarchies, and hierarchy is prone to corruption (which creates discrimination and exploitation)
- Limited money power: the largest amounts of resources are concentrated in the hands of the privileged (e.g., whales), who try to defend their privileges (status quo) using the unfair amount of resources they have
- Privacy of the users: we don’t track you or collect any personal data; your identity is hidden
So the service should - Be open-source: you can see how it works, participate in discussions, and contribute to it
- Has a decentralized architecture: Internet Computer allows deploying the code on the blockchain, making users controllers of their canisters, and even making the canisters have no controllers (blackhole). Also, on the backend, an actor abstraction (from Motoko language) is great for creating canisters for each entity (from actor classes). For the frontend is module federation is used to complement the general principles of the architecture.
- Have self-cost and be sustainable: users pay only for what they use, the moment they use it. The cycles balance of users’ canisters is a good fit for that.
This 0.1.0 (alpha) release is a proof of concept that the essential parts of the project can work together in an intended way. In the current state, I consider OpenCollective to be the most similar to what I’ve done, though Stateless DAO has some notable differences, and I want to make it a complete framework for decentralized cooperatives with governance functionality (most notably, voting).
Description
The main features of this first release are communities that can be supported by donations and roles in them for which people can get regular payments in stablecoins (ckUSDT).
Examples of scenarios for which this project is good:
- supporting projects like open-source development: you donate to the community, and developers receive regular payments from the community fund to which you contributed
- crowdfunding an event: for which you need a minimal sum of money, and then you can use regular payments for roles to distribute them
- distribute support for people in need: you can donate to the community, and the person might have a role for which they can get support as regular compensation (eg, if they had lost their job because of their views, whistleblowing, or trying to create a union)
- organize a cooperative: using a community as a treasury and roles with their payments as jobs with compensation (though you would need to register a legal entity as a group or each individual separately as a contractor or self-employed - it’s your responsibility, this project does not provide legal services)
- residents of an apartment building can create a community and manage their apartment building: if someone manages the maintenance of the building, they can get a role and receive compensation for that from the community balance, and residents can send money to the community’s balance
The functionality
Users can authorize with Internet Identity.
After authentication, the account creation functionality will be shown in the bottom left corner, in the sidebar (which also plays role of a header)
https://statelessdao.xyz/profile/create-account
To create an account, you should send an ICP token worth 1.8T cycles (~2.5$) to the unique address generated for you (don’t reuse it for other operations). You might need to update the info about the balance on the address by clicking “Check payment status again” or by refreshing the page
Then the link to the “Create an account” page should be available, and you can create an account there by clicking a button (Creation might take a while)
https://statelessdao.xyz/profile/create-account/form
After account creation, you should see your profile page with ckUSDT and cycles balances, and your canister address (text principal)
https://statelessdao.xyz/profile
You can go to the “Balance” page, where you can send ckUSDT to any other address (inside Stateless DAO and outside to any valid wallet address) or cycles to any address on Stateless DAO (but not outside; other canisters should implement the wallet_receive method to accept cycles, or we should add support for their method, I couldn’t find any info about standards for that) Here you can also see info on how to top up balances: for ckUSDT, just send them to your address for cycles, you can send ICP tokens and convert them to cycles on the page
https://statelessdao.xyz/profile/balance
Or you can go to the notifications, though functionality for them is limited for now, and you can only receive invitations from the communities if their admins send them to your (canister) address.
https://statelessdao.xyz/profile/notifications
You can go to the communities page, where you can see or join communities
https://statelessdao.xyz/communities
or only the ones you are part of
https://statelessdao.xyz/communities/my
Or create a new one
https://statelessdao.xyz/communities/create
The community creation is similar to user creation: same price for creating it (creates a dedicated canister for 1.8T cycles, which is roughly 2.5$), but the price will be taken from your user canister cycles balance directly.
After creation, you will be redirected to your community page (Stateless DAO community will be used as an example)
https://statelessdao.xyz/community/hc3c7-oqaaa-aaaag-auhqa-cai
where you can see the main info, which includes the community address and a “copy” button for it, also you can see the description and name that you specified on creation, your roles in the community, timeline with community changes log, balances of ckUSDT and cycles for the community canister, also you can see the roles in the community and what members have them
As a community creator, you will have an admin role to manage the community (a temporary role until voting is implemented). This role allows you to create custom roles (in addition to the standard ones) with a compensation amount (in ckUSDT) and a period (or none if compensation is 0) for its distribution to all members of the role from the community balance.
https://statelessdao.xyz/community/hc3c7-oqaaa-aaaag-auhqa-cai/roles/create
You can also update roles, adding or removing members in them by changing the roles of the members, changing the role’s name, compensation, and period. You can also make other members admins or demote them from this role, but the admins have their own tree logic, where you can change the admin role only for those whom you made an admin, or they made an admin, and so on, meaning the ones who you made an admin can’t demote you from an admin role.
https://statelessdao.xyz/community/hc3c7-oqaaa-aaaag-auhqa-cai/actions
As an admin, you can also send invites to the user addresses (users’ canisters IDs), which they will see in their notifications
https://statelessdao.xyz/community/hc3c7-oqaaa-aaaag-auhqa-cai/actions
As a user with an account, you can join a community with a 0.02T cycles (~3 cents) cost for the request cost and some cycles for the community.
If you join, you become a member of the community and can receive a role with regular compensation for it, or leave the community.
All info about a community is visible to everyone (including changes, roles, compensation, and the period for it).
And that’s all the features for now.
What’s next?
That’s just a beginning of project and I have a lot of plans of what to implement: the main milestones is to make the project completely independent by replacing admin roles and access with voting for version 1.0.0, and for that I need implement functionality so that users and communities can update themselves, and that’s the next thing, I’ll be working on making user servers versioning and updating flow so the users can be the only owners of their servers, without admins managing the servers or communities
Other
All code is open-sourced under AGPL-3.0 license and available here Stateless DAO · GitLab .
The backend canisters are written fully with Motoko language, and for the frontend Svelte library and module federation are used.
The website is also adapted for mobile, and it can be installed on smartphones as a Progressive Web Application (“Add to Home Screen” functionality in mobile browsers)
Contacts
You can reach me on BlueSky:
or on the forum here
or by any other contact in the footer on the main website page.
Donations
This is my own personal project, and I’m developing it using mainly my own funds + developer grant money, so if you want to support what I do, you can do that by using:
- Ko-Fi: https://ko-fi.com/statelessdao
- ckUSDT wallet address: 7ajxe-gaajc-f3abs-oisx3-umnrb-nxpra-7jzqu-ozh5k-ro3p7-a7voc-nqe
Request for feedback
I will be glad to answer questions and hear your feedback/thoughts
