Skip to content

Instantly share code, notes, and snippets.

@adrianhajdin
Created December 9, 2022 12:23
Show Gist options
  • Save adrianhajdin/6e2ad3c9f383d77c369322476c228b73 to your computer and use it in GitHub Desktop.
Save adrianhajdin/6e2ad3c9f383d77c369322476c228b73 to your computer and use it in GitHub Desktop.
Build and Deploy a Web3 Crowdfunding Platform (Kickstarter) As Your First Blockchain Application
import { createCampaign, dashboard, logout, payment, profile, withdraw } from '../assets';
export const navlinks = [
{
name: 'dashboard',
imgUrl: dashboard,
link: '/',
},
{
name: 'campaign',
imgUrl: createCampaign,
link: '/create-campaign',
},
{
name: 'payment',
imgUrl: payment,
link: '/',
disabled: true,
},
{
name: 'withdraw',
imgUrl: withdraw,
link: '/',
disabled: true,
},
{
name: 'profile',
imgUrl: profile,
link: '/profile',
},
{
name: 'logout',
imgUrl: logout,
link: '/',
disabled: true,
},
];
@import url("https://fonts.googleapis.com/css2?family=Epilogue:wght@400;500;600;700&display=swap");
@tailwind base;
@tailwind components;
@tailwind utilities;
.linear-gradient {
background: linear-gradient(
179.14deg,
rgba(32, 18, 63, 0) -7.14%,
#000000 87.01%
);
}
input[type="date"]::-webkit-calendar-picker-indicator {
cursor: pointer;
filter: invert(0.8);
}
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {
fontFamily: {
epilogue: ['Epilogue', 'sans-serif'],
},
boxShadow: {
secondary: '10px 10px 20px rgba(2, 2, 2, 0.25)',
},
},
},
plugins: [],
}
export const daysLeft = (deadline) => {
const difference = new Date(deadline).getTime() - Date.now();
const remainingDays = difference / (1000 * 3600 * 24);
return remainingDays.toFixed(0);
};
export const calculateBarPercentage = (goal, raisedAmount) => {
const percentage = Math.round((raisedAmount * 100) / goal);
return percentage;
};
export const checkIfImage = (url, callback) => {
const img = new Image();
img.src = url;
if (img.complete) callback(true);
img.onload = () => callback(true);
img.onerror = () => callback(false);
};
@annejungers
Copy link

where can I find the solidity smart contract? (sorry if my question looks a little bit stupid ^^)

@sundayonah
Copy link

thanks

@sundayonah
Copy link

@annejungers go to web3 folder navigate to contracts folder inside the folder you will find CrouwFunding.sol file that is it.
i hope this help

@muhammadumair12345
Copy link

I am facing an issue with deploying my Smart Contract on thirdweb by using command "npx thirdweb deploy".

image

@muhammadumair12345
Copy link

You can see the issue on the terminal

@randomusert
Copy link

I am facing an issue with deploying my Smart Contract on thirdweb by using command "npx thirdweb deploy".

image

make sure that the secret key is in .env file

@muhammadumair12345
Copy link

Yes, my secret key is in .env but I did not know how to structure it as the third web is updated.

@randomusert
Copy link

@dheerajkaushik
Copy link

getting error while changing to sepolia it shows cannot fetch byte code from aaddress , many are facing same issue pls explian

@machine1376
Copy link

Georli Faucet errored out. Would not take token.

@awaisblockchain
Copy link

getting error while changing to sepolia it shows cannot fetch byte code from aaddress , many are facing same issue pls explian

I am getting the same error!!

@randomusert
Copy link

Sorry that Goes litle too far from My experience

@Cryptbits
Copy link

my background is not going dark, what could be the problem?

import React from 'react';
import { Route, Routes } from 'react-router-dom';

const App = () => {
return (



Sidebar

<p className="font-xl font-bold">TEST</p>

<div className="flex-1 max-sm: w-full max-w-[1280px] mx-auto sm:pr-5">
 Navbar
</div>

</div>

)
}

export default App

@randomusert
Copy link

my background is not going dark, what could be the problem?

import React from 'react'; import { Route, Routes } from 'react-router-dom';

const App = () => { return (

Sidebar

<p className="font-xl font-bold">TEST</p>

<div className="flex-1 max-sm: w-full max-w-[1280px] mx-auto sm:pr-5">
 Navbar
</div>

</div>

) }

export default App

Do you have an style for that

@idriselixir
Copy link

I am facing an issue with deploying my Smart Contract on thirdweb by using command "npx thirdweb deploy".

image

hello can you please send me smart contract source code

@randomusert
Copy link

I am facing an issue with deploying my Smart Contract on thirdweb by using command "npx thirdweb deploy".
image

hello can you please send me smart contract source code

Can't do that sorry

@Amaan-Riddle
Copy link

my background not going dark what should i do ...i have done everything right until here
Screenshot (10)
Screenshot (11)

@Amaan-Riddle
Copy link

i did everything accordingly but still
Screenshot (12)
facing problem

@vastris
Copy link

vastris commented Jul 26, 2024

Great guide on building a Web3 crowdfunding platform! For those venturing into crowdfunding app development, integrating blockchain technology can provide enhanced transparency and security, which are crucial for building trust with users. This approach could significantly boost the effectiveness of your platform.

@maffy2023
Copy link

// SPDX-License-Identifier: UNLICENSED
//CrowdFunding.sol file
pragma solidity ^0.8.9;

contract CrowdFunding {
struct Campaign{
address owner;
string title;
string description;
uint256 target;
uint256 deadline;
uint256 amountCollected;
string image;
address[] donators;
uint256[] donations;
}
mapping(uint256 => Campaign ) public campaigns;
uint256 public numberOfCampaigns = 0;

function createCampaign(address _owner, string memory _title, string memory _description, uint256 _target, uint256 _deadline, string memory _image ) public returns (uint256){

// creating a new campaign
Campaign storage campaign = campaigns[numberOfCampaigns];

//is everything okay?
require(campaign.deadline < block.timestamp, "The deadline should be a date in the future.");

campaign.owner = _owner;
campaign.title = _title;
campaign.description = _description;
campaign.target = _target;
campaign.deadline = _deadline;
campaign.amountCollected = 0;
campaign.image = _image;

numberOfCampaigns++;

numberOfCampaigns - 1;

}

function donateToCampaign(uint256 _id) public payable{

uint256 amount = msg.value;

Campaign storage campaign = campaigns[_id];

campaign.donators.push(msg.sender);

campaign.donations.push(amount);

(bool sent, ) = payable(campaign.owner).call{value:amount}("");

if(sent){
    campaign.amountCollected = campaign.amountCollected + amount;

}

}

function getdonators(uint256 _id) view public returns (address[] memory, uint256[] memory){
return (campaigns[_id].donators, campaigns[_id].donations);
}

function getCampaigns() public view returns (Campaign[] memory) {

Campaign[] memory allCampaigns = new Campaign[](numberOfCampaigns);

for (uint i = 0; i < numberOfCampaigns; i++){
    Campaign storage item = campaigns[i];

    allCampaigns[i] = item;

    return allCampaigns;

}

}

}

@maffy2023
Copy link

randomusert

make sure you have installed dotenv as a package in your package.json file e.g npm i dotenv

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment