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.
๐น 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.
Traditional website monitoring systems are centralized, opaque, and vulnerable to downtime, censorship, and manipulation. They rely on single providers, limiting transparency and control.
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.
๐ก๏ธ 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
# 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:5173Before you can run the application, you'll need to obtain several API keys and credentials:
- This is used for authentication in the backend
- Generate a secure random string:
Or simply create a strong password-like string
openssl rand -base64 32
- 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
- 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
- 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
- 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.
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
๐น 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.
If you face any issues, try these steps:
๐น Solution: Ensure Node.js and npm are installed, and run npm install before starting the application.
๐น Solution: Make sure Phantom or any compatible Solana wallet is installed and connected to the correct network.
๐น Solution: Check if notifications are enabled in browser settings.
๐น Solution: Ensure your wallet has sufficient SOL for transactions.
๐น Solution: Verify your Clerk API keys are correctly configured in your environment variables.
POST /user- Create a new userGET /dashboard-details- Get user dashboard information
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
POST /validator-login- Authenticate as a validatorGET /validator-details- Get validator activity and rewards information
- Rohan Kumar Mohanta
- Jayesh Krishna
- Shivangi Sharma
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!









