This is a submission for the Build Better on Stellar: Smart Contract Challenge : Build a dApp
What I Built
I created a fundraising Dapp that allows people to send and receive donations in variety of digital currencies through a safe and transparent escrow that will transfer and hold the funds. Users (creators and donors) can be sure that their funds are safe and no action will be taken without meeting the predefined conditions they signed. Funds will be transferred automatically from the escrow to the creator only after the campaign’s goals were met and it was marked as “succeeded”. If the campaign fails to achieve its goals before the deadline, all the funds will be distributed back to the donors and the campaign will be marked as “failed”. As long as the status is “running” the campaign can receive donations.
One World Raise Center leverages the powerful stellar ecosystem to handle every little thing from escrows and decentralised exchange to data management and authentication.
Website Link
One World Raise Center
Video Demo
Video
My Code
Project Repo On Gitlab
Journey
Explanation of the logic behind the project’s smart contracts and their implementation:
The campaign contract is the heart of the project, it’s managing the data about the campaign and holding the funds as an escrow until the predefined conditions are met (campaign’s success or failure). On each time users donate to campaign or fetch data related to it, the smart contract validates the current state and executing the required actions. Such as distributing funds back to donors after campaign’s failure and sending the funds to the creator on success. Because of that there is no option users will see outdated information.
The CMS contract is storing limited info that would serve the previews and search functions that need only small portion of the entire data. This way we keep it light weight and it still can be used as a full featured decentralised database.
A quick dive into the little details and features:
- Data management - the Soroban smart contract (CmsContract) is used as a full time content management system that provides all the data for the dapp.
- Authentication - the dapp uses the primary stellar wallet: “freighter” to authenticate users and sign transactions.
- Live account updates - the dapp automatically updates the user’s account address, hence allowing users to switch accounts on their freighter wallet without the need to log out and in and without being worried about which account they are currently using to sign the transaction.
- Transparency - leveraging the fact that every transaction and ledger entry is public on the stellar network, the entire data shown on the dapp can be verified against the official apis and resources (Horizon, Soroban, Stellar Expert etc.)
- Insights and Technical data - each campaign page shows the necessary info about the story behind it alongside with the goals and the type of currencies the creator is willing to accept. users can also see the statistics section that contains charts about the volume and macro trending of the donations in the last 7 days (it’s not a placeholder, it was calculated for real :) there is also the complete donors list so any one can see which users donated and when.
- Auto Operated Escrow - the CampaignContract is implementing real world escrow management without the need for any human intervention. As long as the campaign is “running” the escrow can receive funds and hold them securely until the predefined conditions are reached. If campaign achieves all of its goals before the deadline it will be marked as “succeeded” and the locked funds will be transferred to the creator. But if the campaign reaches its deadline before raising the target amounts, it will be marked as “failed” and all the funds will be sent back to the donors (everyone will get the exact amount in the same currency they used).
- Low Fees - The stellar network is charging extremely low fees for signing and submitting transactions, therefore providing the ultimate platform to handle money related dapps (DeFi). Users can raise funds and receive 100% of the raised funds without the need to pay commissions to 3rd party services and institutions.
- Production ready - The dapp is scalable and optimized to handle real world amount of campaigns because every campaign is using its own unique smart contract that had been deployed automatically by the user while creating the campaign. I also added some features like SEO, client side validations, keyboard accessibility and alt descriptions.
- UI - I tried my best to keep the UI Robust and still somewhat Elegant with dark/light mode support and responsive design.
- Users can see all the campaigns that were ever created and their current statuses (with preview data) on the “/campaigns/all” directory. There is also an option to easily search campaigns by words from their titles and descriptions from any page in the dapp (using the Nav modal). users can also access their own campaigns through their profile quick actions.
Additional Prize Categories: Glorious Game and/or Super Sustainable
Super sustainable
One World Raise Center is a place where people from all over the world would be able to raise funds and donate without the need for any 3rd party involvement that will manage the funds and charge high commissions. The Soroban smart contract is used as an escrow and as a data management system, thus neglecting the need for being dependent on any centralised companies or institutions. This way the dapp is providing a decent solution for scenarios that reliable banking systems are in luck.
I built with the intention of making money related systems (specifically escrows and decentralized exchange) more accessible and reachable (at least as far as possible).
A few more words
For the first time I've done a whole project that's based on just one main ecosystem and it was great. Stellar and Soroban were the perfect all in one solution in my case because they gave me the option to handle db, cms, decentralised exchange, escrow and authentication without any external integrations. Which Was Extremely Cool!
and if you got so far...
ⓣⓗⓐⓝⓚ ⓨⓞⓤ 人´ᴗ`*)
Top comments (0)