How infinityabir/blockchain-pension-system works
This prototype provides pension registration, document review, contributions and pension withdrawals, plus nominee death claims, through role-specific browser pages backed by Solidity contracts. Users connect a wallet and are routed by role and registration status; they then submit documents, make contributions or file claims, while administrators review applications and documents. Uploaded files go to Pinata/IPFS and their CIDs are submitted on-chain. Contract-specific source was not sampled, so links from the browser contract adapter to individual contracts reflect its named contract accessors, not inspected Solidity call internals.
Main entry points: contracts.js Contract adapter · ipfs.js File upload · app.js Role routing · app-login.js Wallet login
Components 21
Web interface
- Role routing
pension-ui/vanilla-ui/js/app.js - Wallet login
pension-ui/vanilla-ui/js/app-login.js - Pension registration
pension-ui/vanilla-ui/js/app-register.js - Document submission
pension-ui/vanilla-ui/js/app-upload.js - Pension dashboard
pension-ui/vanilla-ui/js/app-dashboard.js - Admin review
pension-ui/vanilla-ui/js/app-admin.js - Nominee claims
pension-ui/vanilla-ui/js/app-nominee.js - Role navigation
pension-ui/vanilla-ui/js/navbar.js
Wallet and storage
- Account session
pension-ui/vanilla-ui/js/auth.js - Contract adapter
pension-ui/vanilla-ui/js/contracts.js - Network configuration
pension-ui/vanilla-ui/js/config.js - File upload
pension-ui/vanilla-ui/js/ipfs.js
Pension contracts
- Pension registry
Hardhat/contracts/PensionRegistry.sol - Document records
Hardhat/contracts/PensionDocuments.sol - Contribution fund
Hardhat/contracts/PensionFund.sol - Pension disbursement
Hardhat/contracts/PensionDisbursement.sol
External services
- Pinata / IPFS
- MetaMask
Other components
- Pensioner
- Administrator
- Nominee
Connections 27
- Pensioner → Wallet login: connects
README.md - Pensioner → Pension registration: registers
README.md - Pensioner → Document submission: submits documents
README.md - Pensioner → Pension dashboard: manages pension
README.md - Administrator → Admin review: reviews cases
README.md - Nominee → Nominee claims: files claim
README.md - Role routing → Account session: reads account
pension-ui/vanilla-ui/js/app.js - Role routing → Contract adapter: checks status
pension-ui/vanilla-ui/js/app.js - Role routing → Role navigation: loads navigation
pension-ui/vanilla-ui/js/app.js - Wallet login → Contract adapter: connects wallet
pension-ui/vanilla-ui/js/app-login.js - Wallet login → Account session: saves account
pension-ui/vanilla-ui/js/app-login.js - Pension registration → Contract adapter: submits registration
pension-ui/vanilla-ui/js/app-register.js - Document submission → File upload: uploads files
pension-ui/vanilla-ui/js/app-upload.js - Document submission → Contract adapter: submits CIDs
pension-ui/vanilla-ui/js/app-upload.js - Pension dashboard → Contract adapter: reads and writes
pension-ui/vanilla-ui/js/app-dashboard.js - Admin review → Contract adapter: reviews and verifies
pension-ui/vanilla-ui/js/app-admin.js - Nominee claims → File upload: uploads proof
pension-ui/vanilla-ui/js/app-nominee.js - Nominee claims → Contract adapter: reports and claims
pension-ui/vanilla-ui/js/app-nominee.js - Role navigation → Contract adapter: loads role state
pension-ui/vanilla-ui/js/navbar.js - Contract adapter → Network configuration: uses addresses
pension-ui/vanilla-ui/js/contracts.js - Contract adapter → MetaMask: requests accounts
pension-ui/vanilla-ui/js/contracts.js - File upload → Network configuration: reads credentials
pension-ui/vanilla-ui/js/ipfs.js - File upload → Pinata / IPFS: pins files
pension-ui/vanilla-ui/js/ipfs.js - Contract adapter → Pension registry: accesses contract
pension-ui/vanilla-ui/js/contracts.js - Contract adapter → Document records: accesses contract
pension-ui/vanilla-ui/js/contracts.js - Contract adapter → Contribution fund: accesses contract
pension-ui/vanilla-ui/js/contracts.js - Contract adapter → Pension disbursement: accesses contract
pension-ui/vanilla-ui/js/contracts.js