A decentralized library management application built on Ethereum blockchain, IPFS, and React.
This decentralized application (DApp) enables the management of a university library on the Ethereum blockchain. It provides a complete system for user registration, book management, borrowing operations, and a reputation system—all secured by blockchain technology.
- User Management: Registration with different roles (Student, Professor)
- Book Catalog: Add, browse, and remove books
- Borrowing System: Check out and return books with due dates
- Reputation System: Rewards for on-time returns and penalties for late returns
- Decentralized Storage: IPFS integration for book cover storage
- Intuitive User Interface: Easy navigation between features
- React.js for the user interface
- Web3.js for blockchain interaction
- IPFS for decentralized image storage
- TailwindCSS for styling
- Solidity Smart Contracts deployed on Ethereum
- Truffle for development, testing, and deployment
- Ganache for local blockchain development
- Node.js (v14 or higher)
- NPM or Yarn
- MetaMask or another browser-compatible Ethereum wallet
- Ganache for local development
-
Clone this repository:
git clone https://github.com/ayoubkad/ApplicationeDcentraliser.git cd ApplicationeDcentraliser -
Install dependencies:
npm install -
Start Ganache (GUI or CLI):
ganache-cli -
Deploy smart contracts:
truffle migrate --reset -
Start React application:
npm start -
Open http://localhost:3000 in your browser
- Install the MetaMask extension in your browser
- Connect MetaMask to your local Ganache network (typically http://127.0.0.1:7545 with Chain ID 1337)
- Import an account from Ganache using the private key
To deploy on a test network like Sepolia:
- Configure your
.envfile with your private key and Infura API key - Run the migration command for the target network:
truffle migrate --network sepolia
Run tests with Truffle:
npm test
or
truffle test
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions or suggestions, please open an issue on GitHub.
