This decentralized application (DApp) enables users to register and manage assets like land and vehicles on the Ethereum blockchain. It utilizes smart contracts for secure, transparent, and tamper-proof asset registration. The frontend, built with React.js, provides an intuitive user interface, making it accessible to users interacting with the Ethereum blockchain.
Users can seamlessly register their assets, providing essential details such as location, ownership, and asset-specific information. The registration process ensures transparency and immutability by leveraging Ethereum smart contracts.
The DApp includes a decentralized marketplace where users can buy, sell, or trade registered assets. Smart contracts facilitate secure and trustless transactions, ensuring the integrity of asset ownership transfers.
To enhance flexibility, the project introduces features for asset auctions and renting. Users can participate in auctions to bid on assets, and there's an option to rent assets for a specific duration. These functionalities are governed by smart contracts, promoting trust and security.
A robust authentication system secures user accounts, allowing them to access personalized profiles. Users can track their registered assets, transaction history, and participate in community discussions.
The frontend boasts a responsive design, ensuring a seamless user experience across various devices. Bootstrap is employed for its clean, mobile-friendly components and grid system.
-
π User Notifications: Implement a notification system to alert users about successful registrations, auction bids, and other relevant activities.
-
π‘ Enhanced Marketplace Features: Introduce advanced marketplace features such as a BBAA reputation system, detailed asset listings, and a decentralized review system.
-
π Integration with External APIs: Connect the DApp to external APIs for real-time asset data, enhancing the accuracy of registered information.
-
π Multi-chain Support: Explore the possibility of extending the DApp to support multiple blockchains, providing users with more choices and interoperability.
The AssetHub project is built using the following technologies:
-
Frontend:
- React.js
- Web3.js
- Bootstrap
-
Backend:
- Node.js
- Express.js
- MongoDB
-
Blockchain:
- Ethereum
-
Other Tools:
- Truffle Suite
- IPFS
- JWT (JSON Web Tokens)
- Cloudinary
Please Note:
- The website might take 2 to 3 minutes to load due to some technical issues such as bugs or optimization problems. This delay is primarily due to the backend being hosted on a platform that employs a "cold start" mechanism. When inactive, the server spins down to save resources, causing a delay when waking up. Please be patient.
- For the best experience, use the website in desktop site mode if accessing it from a phone.
To facilitate easy access for reviewing the project, you can use the following test login credentials:
Username | Password |
---|---|
test |
test@1234 |
The website is hosted on the following platforms:
project-root/
β
βββ client/
β βββ node_modules/
β βββ public/
β β βββ ... (public files)
β β
β βββ src/
β β βββ components/
β β βββ constants/
β β βββ App.js
β β βββ App.css
β β βββ index.js
β β βββ index.css
β β βββ routes.js
β β βββ contractConfig.js
β β βββ ...
β β
β βββ .env
β βββ .gitignore
β βββ package.json
β βββ package-lock.json
β βββ README.md
β
βββ server/
β βββ node_modules/
β βββ public/
β β βββ ... (public files)
β β
β βββ src/
β β βββ controllers/
β β βββ db/
β β βββ middlewares/
β β βββ models/
β β βββ routes/
β β βββ utils/
β β βββ app.js
β β βββ constants.js
β β βββ index.js
β β
β βββ .env
β βββ .gitignore
β βββ .prettierrc
β βββ package.json
β βββ package-lock.json
β βββ README.md
β
βββ contract/
β βββ build/
β βββ contracts/
β βββ migrations/
β βββ test/
β βββ truffle-config.js
β βββ ...
β
βββ README.md
- Node.js: Install Node.js
- Truffle Suite: Install Truffle
- Ganache: Install Ganache
-
Clone the repository:
git clone https://github.com/devayanm/AssetHub.git cd AssetHub
-
Install dependencies for the client:
# Install Truffle globally npm install -g truffle # Install project dependencies for the client cd client npm install
-
Install dependencies for the server:
# Install project dependencies for the server cd ../server npm install
-
Configure Environment Variables:
-
Create a
.env
file in theclient
directory. -
Add your backend hosted URL for the client in the client's
.env
file:REACT_APP_BACKEND_URL=https://your-backend-hosted-url.com/api/v1
-
Create another
.env
file in theserver
directory and add the following environment variables:PORT=8000 MONGODB_URI=mongodb+srv://your_username:your_password@cluster0.anjoog4.mongodb.net CORS_ORIGIN=* CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_API_KEY=your_api_key CLOUDINARY_API_SECRET=your_api_secret CLOUDINARY_URL=cloudinary://your_cloudinary_url ACCESS_TOKEN_SECRET=your_access_token_secret ACCESS_TOKEN_EXPIRY=1d REFRESH_TOKEN_SECRET=your_refresh_token_secret REFRESH_TOKEN_EXPIRY=10d
-
-
Start the React app:
# Start the React app cd ../client npm start
-
Start the server:
# Start the server cd ../server npm run dev
-
Open your browser and navigate to http://localhost:3000 to access the DApp.
Run the Truffle tests:
truffle test
If you would like to contribute to this project, please open an issue or create a pull request.
This project is licensed under the MIT License.