No description
  • JavaScript 89.9%
  • Solidity 10.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2024-02-11 23:05:34 +01:00
components Add space 2024-02-11 23:05:34 +01:00
ethereum Update deps, Deploy on Goerli (#10) 2022-11-21 15:30:52 +01:00
pages fix layout 2022-11-21 15:39:46 +01:00
test refactor: Define array of struct to store Campaigns 2019-10-04 18:04:21 +02:00
.gitignore Update deps, Deploy on Goerli (#10) 2022-11-21 15:30:52 +01:00
.prettierrc.yaml Update deps, Deploy on Goerli (#10) 2022-11-21 15:30:52 +01:00
.tool-versions Update deps, Deploy on Goerli (#10) 2022-11-21 15:30:52 +01:00
LICENSE Update LICENSE 2024-02-11 21:23:05 +01:00
next.config.js fix: Require dotenv in next.config.js 2020-03-01 22:59:05 +01:00
package.json Update username 2024-02-11 23:03:03 +01:00
pnpm-lock.yaml Update deps, Deploy on Goerli (#10) 2022-11-21 15:30:52 +01:00
README.md Update README.md 2020-07-16 22:48:03 +02:00
routes.js feat: Add route and page to create new payment request 2019-10-02 15:26:32 +02:00
Screenshot.png Add files via upload 2020-07-16 22:47:11 +02:00
server.js Update deps, Deploy on Goerli (#10) 2022-11-21 15:30:52 +01:00

Kicksartereum: Kickstarter on Ethereum

screenshot

Introduction

Kickstarter helps artists, musicians, filmmakers, designers, and other creators find the resources and support they need to make their ideas a reality. Potential future customers, 'backers', can contribute to a project to finance the development of a product.
Sounds awesome.
However, a fundamental problem for crowdfunding is how asymmetrical the risks faced by backers and founders are.
After having invested, backers don't get a say on how their money will actually be spent. Worse: which guarantee do they have that the founder they backed, will actually deliver what they promised, and not go away which the funds successfully collected from the backers?
Ethereum & smart contracts are a great solution to come around these issues. Indeed, the collecting of funds and spending of collected funds gets automated in a secure and a decentralized way.
The risks previously faced by backers disappear because they get to vote on how funds are spend.

Demo video

Requirements

The smart contract application I deployed on the Ethereum Rinkeby test network fulfills the following:

  • A founder can create a new campaign. He/she sets the minimum contribution amount for future backers.
  • Anyone can back a created campaign, provided they contribute at least the minimum amount set by the founder.
  • The smart contract controls the funds. Neither the founder nor the backers are able to take out or spend funds collected by the campaign
  • Only the founder can create payment requests. He requests the backers to agree on how to spend the campaign's funds. He specifies the payment's recipient.
  • Backers can approve (1 time each) payment requests
  • The founder can finalize a payment request that has been approved by a majority of backers. This automatically executes the payment (transfers amount to recipient)

Getting started

  1. Clone or download this repository
  2. Install dependencies: /kicksartereum $ npm i
  3. Run client application: $ npm run dev
  4. Access at localhost:3000

Development

Compile

/kicksartereum/ethereum$ node compile

Deploy

  1. Set environment variables required for deployment. Create a .env file in /ethereum with the following lines:
INFURA_KEY=<your infura project id>
MNEMONIC=<your metammask mnemonic>
  1. Deploy contract: /kicksartereum/ethereum$ node deploy
  2. Edit ethereum/factory.js and update the address (line 7)

Tests

npm test

Resources

  • Metamask: 'brings Ethereum to your browser.''
  • web3.js: Ethereum JavaScript API.
  • React.js: 'a JavaScript library for building user interfaces'
  • Next.js
  • Semantic-ui: 'development framework that helps create beautiful, responsive layouts using human-friendly HTML.' Official React integration.
  • Mocha: 'the fun, simple, flexible, JavaScript framework.'
  • Ganache: 'Quickly fire up a personal Ethereum blockchain which you can use to run tests, execute commands, and inspect state while controlling how the chain operates.'
  • Heroku