A decentralized website monitoring system leveraging dPIN (Decentralized Public Infrastructure Network) to ensure trustless uptime verification, real-time alerts, and transparency without relying on centralized authorities.
With dPIN, experience a truly decentralized, transparent, and reliable website monitoring system.
đ¸ Preview Images
đĨ Key Features
đš No Single Point of Failure â Distributed monitoring across independent validators.
đš Trustless Transparency â Website owners can prove uptime without a central entity.
đš Crypto Incentives â Validators earn rewards for monitoring and reporting website health.
đš Decentralized Monitoring â Multiple nodes check website status instead of a single company.
đš Real-Time Alerts â Instant notifications for downtime or performance issues.
đš Security & Privacy â No third-party access to website data.
đ Problem Statement
Traditional website monitoring systems are centralized, opaque, and vulnerable to downtime, censorship, and manipulation. They rely on single providers, limiting transparency and control.
â Solution
Our dPIN-based monitoring system decentralizes website uptime tracking by leveraging independent validators across a global network. Unlike traditional systems, which rely on a single authority, our solution ensures real-time, trustless, and tamper-proof monitoring without any central points of failure. Website owners can prove uptime transparently, while users receive instant alerts for downtime or performance issues. Validators are incentivized with crypto rewards, fostering a self-sustaining, censorship-resistant ecosystem that enhances reliability, security, and trust in website monitoring.
⨠Website owners can verify uptime transparently.
⥠Users receive instant alerts for downtime or performance issues.
đ° Validators are rewarded with crypto incentives, fostering a self-sustaining, censorship-resistant monitoring ecosystem.
đ ī¸ Tech Stack
đĄī¸ Blockchain â Solana
đ dPIN (Decentralized Public Infrastructure Network) â Distributed monitoring
đ Database â MongoDB
đĨī¸ Frontend â React.js, Radix UI, Tailwind CSS, ShadCN
đĄ Backend â Node.js, Express.js
đ Authentication â Clerk
âī¸ Validator CLI â Commander.js, Chalk
âī¸ Installation & Setup
# Clone the repository git clone https://github.com/Lviffy/dPIN.git cd dPIN # Install backend dependencies cd backend npm install # Set up environment variables cp .env.example .env # Edit .env with your specific configuration # Run the backend server node index.js # Install frontend dependencies cd ../frontend npm install # Set up frontend environment variables cp .env.example .env # Edit .env with your Clerk publishable key and other configs # Run the frontend development server npm run dev # Open your browser at http://localhost:5173
đ Getting API Keys
Before you can run the application, you'll need to obtain several API keys and credentials:
1. JWT Secret
- This is used for authentication in the backend
- Generate a secure random string: Or simply create a strong password-like string
2. Solana Wallet Keys (Admin)
- Generate a Solana keypair for the admin account:
# Install Solana CLI tools if you haven't already solana-keygen new- The output will show your public key and save your private key
- Use these values for
ADMIN_PUBLIC_KEYandADMIN_PRIVATE_KEY
3. Solana RPC URL
- Sign up for a free account at Alchemy
- Create a new Solana app (can use Devnet for testing)
- Copy the HTTP URL from your dashboard
- Format:
https://solana-devnet.g.alchemy.com/v2/YOUR_API_KEY
4. Clerk Authentication
- Create an account at Clerk
- Set up a new application
- From your Clerk dashboard:
- Get your
CLERK_PUBLISHABLE_KEY(starts withpk_test_) - Get your
CLERK_SECRET_KEY(starts withsk_test_) - Use the publishable key for both backend and frontend
- Get your
5. Email Service (Nodemailer)
- If using Gmail:
- Go to your Google Account â Security
- Enable 2-Step Verification if not already enabled
- Go to App passwords
- Create a new app password
- Use this password for
PASS_NODEMAILER
After obtaining all keys, add them to your .env files in both backend and frontend directories.
đ§ Project Structure
dPIN/
âââ backend/ # Express.js server
â âââ db/ # Database connection
â âââ model/ # MongoDB schemas
â âââ utils/ # Helper functions
â âââ index.js # Main server file
âââ frontend/ # React.js application
â âââ src/
â â âââ components/ # Reusable UI components
â â âââ pages/ # Page components
â â âââ utils/ # Utility functions
â â âââ App.jsx # Main application component
â âââ public/ # Static assets
âââ validator-cli/ # CLI tool for validators
âââ src/ # Source code
âââ utils/ # CLI utilities
âšī¸ Additional Information
đš Minimum Validator Balance â To become a validator, your crypto wallet must have at least 0.05 SOL.
đš Wallet Public Key â Needed for withdrawal of earned rewards.
đš Key Generation â Automatically generates a pair of public & private keys for enhanced security.
đš Decentralized Transactions â Ensures secure and anonymous payment processing.
â Troubleshooting
If you face any issues, try these steps:
â ī¸ Issue: App not starting
đš Solution: Ensure Node.js and npm are installed, and run npm install before starting the application.
â ī¸ Issue: Wallet not connecting
đš Solution: Make sure Phantom or any compatible Solana wallet is installed and connected to the correct network.
â ī¸ Issue: No real-time alerts
đš Solution: Check if notifications are enabled in browser settings.
â ī¸ Issue: Transaction failures
đš Solution: Ensure your wallet has sufficient SOL for transactions.
â ī¸ Issue: Authentication problems
đš Solution: Verify your Clerk API keys are correctly configured in your environment variables.
đ API Endpoints
User Endpoints
POST /user- Create a new userGET /dashboard-details- Get user dashboard information
Website Monitoring Endpoints
POST /website- Register a new website for monitoringGET /website/:id- Get details for a specific websiteDELETE /website/:id- Remove a website from monitoringPUT /website-track/:id- Enable/disable monitoring for a websiteGET /website-details:id- Get detailed metrics for a website
Validator Endpoints
POST /validator-login- Authenticate as a validatorGET /validator-details- Get validator activity and rewards information
đ Team Members
- Rohan Kumar Mohanta
- Jayesh Krishna
- Shivangi Sharma
đ¤ Contributing
We welcome contributions! Follow these steps:
1ī¸âŖ Fork the repo
2ī¸âŖ Create a new branch: git checkout -b feature-branch
3ī¸âŖ Commit your changes: git commit -m "Added new feature"
4ī¸âŖ Push to the branch: git push origin feature-branch
5ī¸âŖ Submit a Pull Request (PR)
đĄ Tip: Always write clear commit messages and follow best coding practices before submitting a PR!