A Censorship-Resistant Public Record for Civic Reporting
[Aleph Hackathon '25] [Lisk] [DePIN] [Public Good]
π΄ Live Demo: https://vigia-aleph-hackathton.vercel.app/
π¬ Video Pitch: https://www.youtube.com/watch?v=pn6SkEJF4T0
In many Latin American cities, reporting infrastructure issues like potholes or broken streetlights is an opaque and frustrating process. Reports fall into a black box of bureaucracy, often being lost, ignored, or deleted without explanation. This lack of a permanent, transparent record creates deep citizen distrust and allows public infrastructure to decay, making accountability impossible.
Vigia is a decentralized public good that empowers citizens by transforming civic reporting. We create a permanent, censorship-resistant, and community-verified public record of real-world infrastructure problems on the Lisk L2 blockchain.
By building a shared, verifiable source of truth, Vigia turns citizen reports from forgotten complaints into powerful, immutable data points that foster trust and drive real-world action.
-
π Decentralized Reporting: Submit geolocated infrastructure issues with a photo and description.
-
π Immutable Record: Every report is a permanent transaction on the Lisk L2 blockchain, which cannot be deleted or altered.
-
π Decentralized Storage: Report photos are uploaded to IPFS via Storacha/w3up, ensuring they are as censorship-resistant as the report itself.
-
β Community Validation: A social trust layer where other users can validate reports, increasing their legitimacy and visibility.
-
πΊοΈ Dual View Interface: Users can toggle between an interactive Map View and a scrollable Feed View to explore reports.
-
π° Multi-Wallet Support: Compatible with MetaMask, Rabbit, Coinbase Wallet, and Trust Wallet.
The architecture is designed to be simple and fully decentralized, removing central points of failure or control.
- Blockchain: Lisk L2 (EVM Compatible)
- Smart Contracts: Solidity
- Development Framework: Hardhat
- Frontend: Next.js, React, Tailwind CSS
- UI Generation: Vercel v0
- Decentralized Storage: IPFS / Storacha (via w3up-client)
- Map: OpenStreetMap with Leaflet.js
- Wallet Interaction: Ethers.js
git clone [YOUR_REPO_URL]
cd [YOUR_REPO_NAME]npm installCreate a .env.local file in the root and add your configuration:
# Blockchain Configuration
PRIVATE_KEY="YOUR_METAMASK_PRIVATE_KEY"
# Web3.Storage / Storacha Configuration
WEB3_STORAGE_EMAIL="YOUR_STORACHA_EMAIL"
WEB3_STORAGE_SPACE="YOUR_SPACE_DID"
WEB3_STORAGE_DID="YOUR_SPACE_DID"
# Network URLs
LISK_SEPOLIA_RPC_URL="https://rpc.sepolia-api.lisk.com"
HARDHAT_RPC_URL="http://127.0.0.1:8545"
# Deployed Contract Addresses
VIGIA_CONTRACT_ADDRESS_LISK_SEPOLIA="0x9aD20ACF1E3592efF473B510603f5f647994cE9b"npx hardhat compilenpx hardhat ignition deploy ignition/modules/Vigia.ts --network liskSepolianpm run devVisit http://localhost:3000 to see the application running.
- Network: Lisk Sepolia Testnet
- Contract Address:
0x9aD20ACF1E3592efF473B510603f5f647994cE9b - Verified: β View on Blockscout
crearReporte()- Create a new infrastructure reportvalidarReporte()- Validate an existing reportgetAllReports()- Retrieve all reportsgetReportesPorCreador()- Get reports by creator address
Reports use Storacha (Web3.Storage) for decentralized image storage:
- Gateway:
https://{CID}.ipfs.w3s.link - Permanent Storage: Images cannot be deleted or censored
- Global Access: Available worldwide through IPFS network
Vigia supports multiple wallet providers:
- π¦ MetaMask
- π° Rabbit Wallet
- πͺ Coinbase Wallet
- π Trust Wallet
The application automatically detects available wallets and allows users to choose their preferred option.
npm run build
# Deploy to Vercelnpx hardhat ignition deploy ignition/modules/Vigia.ts --network liskSepoliaThis project has been submitted primarily for the following tracks:
Primary: Lisk (RWA/DePIN), Crecimiento & ENS (Public Good)
Secondary: Base (for the Mini-App like user experience), AI & v0 (for the development process).
- ποΈ Government Integration: API for municipal governments to access verified reports
- π Analytics Dashboard: Data visualization for infrastructure trends
- π Incentive System: Token rewards for quality reporting and validation
- π Multi-City Expansion: Deploy to multiple Latin American cities
- π± Mobile App: Native iOS/Android applications
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ during Aleph Hackathon 2025
Contact: [YOUR_EMAIL] GitHub: [YOUR_GITHUB] Twitter: [YOUR_TWITTER]
"Empowering citizens through decentralized civic reporting"
This example project includes:
- A simple Hardhat configuration file.
- Foundry-compatible Solidity unit tests.
- TypeScript integration tests using
node:test, the new Node.js native test runner, andviem. - Examples demonstrating how to connect to different types of networks, including locally simulating OP mainnet.
To run all the tests in the project, execute the following command:
npx hardhat testYou can also selectively run the Solidity or node:test tests:
npx hardhat test solidity
npx hardhat test nodejsThis project includes an example Ignition module to deploy the contract. You can deploy this module to a locally simulated chain or to Sepolia.
To run the deployment to a local chain:
npx hardhat ignition deploy ignition/modules/Counter.tsTo run the deployment to Sepolia, you need an account with funds to send the transaction. The provided Hardhat configuration includes a Configuration Variable called SEPOLIA_PRIVATE_KEY, which you can use to set the private key of the account you want to use.
You can set the SEPOLIA_PRIVATE_KEY variable using the hardhat-keystore plugin or by setting it as an environment variable.
To set the SEPOLIA_PRIVATE_KEY config variable using hardhat-keystore:
npx hardhat keystore set SEPOLIA_PRIVATE_KEYAfter setting the variable, you can run the deployment with the Sepolia network:
npx hardhat ignition deploy --network sepolia ignition/modules/Counter.ts