Inspiration
One of the primary inspirations is to democratize access to funding and provide equal opportunities for creators and entrepreneurs worldwide. By leveraging blockchain technology, the platform can eliminate barriers such as geographic limitations, stringent financial requirements, and traditional gatekeepers.
secondly, Traditional funding models often involve numerous intermediaries, high fees, and lengthy processes. By harnessing the near blockchain's scalability and low transaction costs, the platform can streamline the fundraising process, reduce overhead expenses, and provide cost-effective solutions for both project creators and contributors.
and lastly, the inspiration behind the platform lies in supporting and empowering innovative projects across various domains. By providing a platform that connects creative individuals and forward-thinking entrepreneurs with a global community.
What it does
It does allow creators and innovators to publish their work on our platform and anyone around the world can see their work and give donations to keep up their good work easily without any hassle.
How we built it
This project is a combination of both front-end and smart contracts. The smart contract is written in typescript and deployed on the near blockchain (testnet) which contains multiple functions for example create_account, add_project, donate etc. Then we call these functions from our Front-end which is react app and then update the UI accordingly. Some of the functions are listed below... 1 - for List your Project to receive donations
@call({})
publish_project({
projectName,
projectDescription,
projectLogo,
projectLinks,
}: {
projectName: string;
projectDescription: string;
projectLogo: string;
projectLinks: string;
}): void {
this.projectName = projectName;
this.projectDescription = projectDescription;
this.projectLogo = projectLogo;
this.projectLinks = projectLinks;
}
2 - create account
@call({})
set_account({
accountName,
walletUsername,
profileUrl,
}: {
accountName: string;
walletUsername: string;
profileUrl: string;
}): void {
near.log(`Saving greeting ${accountName}`);
this.accountName = accountName;
this.walletUsername = walletUsername;
this.profileUrl = profileUrl;
}
3 - get listed projects
@view({})
get_projects(): any {
return {
projectName: this.projectName,
projectDescription: this.projectDescription,
projectLogo: this.projectLogo,
projectLinks: this.projectLinks,
};
}
4- donate
@call({ payableFunction: true })
donate() {
let donor = near.predecessorAccountId();
let donationAmount: bigint = near.attachedDeposit() as bigint;
let donatedSoFar = this.donations.get(donor, {defaultValue: BigInt(0)})
let toTransfer = donationAmount;
const promise = near.promiseBatchCreate(this.beneficiary)
near.promiseBatchActionTransfer(promise, toTransfer)
return donatedSoFar.toString()
}
etc etc ...
Challenges we ran into
The challenges we phase are 1 - deploying our smart contract 2 - call our smart contract functions from the front-end 3 - creating donate functions where the user enters the amount for donation and sends it from his near wallet.
Accomplishments that we're proud of
We are proud of what we have created this weekend, where every innovator or artist can receive donations from around the world upon their work
What we learned
Throughout the project, we learned so many things, like how to work with Near, how to deploy smart contracts on it, how to connect it with our front end, and to send tokens from one wallet to another.
What's next for Crowd Near
We are looking forward to participating in the 3-month incubator program and working with the Near Team to transform this hackathon project into a product which is for the public good for the whole ecosystem
Built With
- bootstrap
- css
- javascript
- near-cli
- near-js-sdk
- react
- typescript
Log in or sign up for Devpost to join the conversation.