https://github.com/ruppysuppy/crypto-crowdfund
🤑💰 Crowdfunding Platform backed by Ethereum Blockchain to bring your creative projects to life
https://github.com/ruppysuppy/crypto-crowdfund
blockchain css ethereum javascript microfrontend module-federation react smart-contracts solidity typescript webpack
Last synced: 8 months ago
JSON representation
🤑💰 Crowdfunding Platform backed by Ethereum Blockchain to bring your creative projects to life
- Host: GitHub
- URL: https://github.com/ruppysuppy/crypto-crowdfund
- Owner: ruppysuppy
- License: mit
- Created: 2021-10-22T06:58:18.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-12-19T03:19:56.000Z (over 4 years ago)
- Last Synced: 2025-03-26T20:55:41.255Z (about 1 year ago)
- Topics: blockchain, css, ethereum, javascript, microfrontend, module-federation, react, smart-contracts, solidity, typescript, webpack
- Language: TypeScript
- Homepage: https://crypto-crowdfund.web.app/
- Size: 287 KB
- Stars: 36
- Watchers: 3
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: ReadMe.md
- License: LICENSE
Awesome Lists containing this project
README
# Crypto Crowdfund
## For Creators
**Lacking the money to bring your Creative Venture to Life?**
**Crypto Crowdfund** Campaigns will help you turn your creative ideas into
reality! It's where _creators share new visions for creative work with the
communities that will come together to fund them_.
No matter what, creators always control how the work comes together: _no
100-page grant applications_, _no donors demanding you modify your message_,
_no last-minute edits from investors_. When backers chip in funding and help
spread the word, they too become part of these independent works.
## For Investors
**Worried about being Conned by Fake Campaigns?**
**Crypto Crowdfund** brings power to the Investors as well! Backed by the
razor-edge security of **BlockChain** Technology, _only after the majority of
the investors have approved a Transaction Request, the transaction can be
processed_.
_No more being scammed by Fake Campaigns!_
## For Scalability
**Made to Last**
**Crypto Crowdfund** is powered by the cutting edge technology of
**Micro-Frontends**, making developing scalable issues a thing of the past.
Each sub-application in **Crypto Crowdfund** is developed and run as a separate
instance. So a bug in one part of the application cannot affect the other parts.
## Firebase Setup
Follow the instructions below to setup **Firebase**
1. Create a **Firebase** project
2. Add **Authentication** to the project & enable **Email Authentication**
3. Add **Firestore** to the project & secure the database using these rules:
```cpp
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /campaigns/{campaign} {
allow read: if true;
allow create: if request.auth != null;
allow update: if request.auth != null && request.auth.uid == resource.data.uid;
}
match /requests/{requestList} {
allow read, create: if request.auth != null;
}
match /users/{user} {
allow read, create: if true;
allow update: if request.auth != null && request.auth.uid == resource.data.uid;
}
}
}
```
## Setup
The application uses `yarn` to run.
To set up the **Smart Contract** please check out the steps mentioned in the
[ReadMe under `smart-contract`](./packages/smart-contract/ReadMe.md#Setup).
To run the **Blockchain Sub-app**,
[generating all files](./packages/smart-contract/ReadMe.md#Generate-Files) is
mandatory
1. Run the command `yarn` to install all dependencies
2. Add `.env` files at the root of all **Sub-apps** and the **Container** with the
following data:
```python
# firebase config
API_KEY=
AUTH_DOMAIN=
PROJECT_ID=
STORAGE_BUCKET=
MESSAGING_SENDER_ID=
APP_ID=
MEASUREMENT_ID=
```
Add `.env.development` file at the root of **Blockchain Sub-app**
following data:
```python
# auth config
TEST_AUTHENTICATE_EMAIL=
TEST_AUTHENTICATE_PASSWORD=
```
and also add the infura key in the `.env` file in the **Blockchain Sub-app**
```python
# ...
# infura key
INFURA_PROJECT_ID=
```
3. Run the command `yarn run-auth` to run the **Auth Sub-app**
Runs on `http://localhost:8001`. Valid routes: `/sign-in`, and `/sign-up`
4. Run the command `yarn run-marketing` to run the **Marketing Sub-app**
Runs on `http://localhost:8002`. Valid routes: `/`, `/about`, `/faq`,
`/terms-and-conditions`, `/privacy-policy`, and `/disclaimer`
5. Run the command `yarn run-blockchain` to run the **Blockchain Sub-app**
Runs on `http://localhost:8003`. Valid routes: `/account?uid=`,
`/campaign?id=`, `/campaigns` and `/create-campaign`
6. Run the command `yarn run-container` to run the **Container**
Runs on `http://localhost:3000`. Compiles all **Sub-Apps** routes and
determines when a user can visit them, eg: restricts authenticated users
from visiting `/sign-in`, and `/sign-up`
**NOTE:** The application is hard-coded to run on **Rinkeby Network**. To use the
application on other networks, please switch to the desired network in the
[web3.ts](./packages/blockchain/src/utils/web3.ts) and
[deploy.js](./packages/smart-contract/scripts/deploy.js) files.
## Building the Application
- Build the **Sub-Apps** using `yarn build` (inside each **Sub-Apps** Directory)
- Deploy all **Sub-Apps** to any provider of choice
- Create `packages/container/webpack/urls.json` with the deployed urls
```json
{
"auth": "",
"marketing": "",
"blockchain": ""
}
```
- Build the **Container** using `yarn build` (inside the **Container** Directory)
- Deploy the **Container** to any provider of choice