Inspiration

This project started as a team-building exercise, not a grand idea. Our university's Cyber Society (UET) had just registered a new Blockchain team, and this hackathon was effectively that team's first real outing together. As lead, I wanted something simple enough for a beginner team to actually ship in 10 days, but real enough to force everyone to learn actual blockchain development instead of just talking about it. Attendance tracking was the obvious pick: everyone understands the problem immediately, and it maps cleanly onto what a smart contract is actually good at, an append-only, tamper-proof record that nobody, not even us, can quietly edit after the fact.

What it does

ChainPresence is an attendance system where every check-in is a signed, timestamped transaction on Ethereum Sepolia, not a row in a database an admin can edit. Owners manage teachers and courses, teachers sign transactions to start lectures and mark attendance, and students need zero wallet or crypto knowledge, their record just exists on-chain and anyone can verify it publicly through a no-login /verify page, cross-checkable against Etherscan itself.

How we built it

I designed and wrote the Solidity contract (owner/teacher/student roles, on-chain duplicate-prevention, OpenZeppelin Ownable) and led the frontend/wallet integration. The rest of the team, all first-time Next.js/blockchain developers, worked on the frontend surfaces (home, dashboard, profile, about pages) while I taught Hardhat, deployment, and the relationship between blockchain and cyber security concepts as we went. Stack: Solidity + Hardhat + TypeScript on chain, Next.js 16 + TypeScript + Tailwind + ethers.js on the frontend, MetaMask for teacher/ owner wallet connections, with an ABI auto-sync script keeping chain and frontend from drifting apart.

Challenges we ran into

The hardest part wasn't technical, it was conceptual: getting a team new to blockchain to internalize that smart contract code doesn't get patched after deployment. There's no hotfix, no admin override, no "we'll just edit the database" fallback, and that took real explaining before it clicked. On the technical side, our biggest actual blocker was nonce collisions while bulk-seeding demo data, firing transactions too fast from the same wallet caused repeated crashes until we slowed the script down and handled nonces properly. Deployment itself, by contrast, was surprisingly painless once the contract logic was solid.

Accomplishments that we're proud of

A team that had never touched Solidity or Next.js before this went from zero to a live, publicly verifiable, on-chain attendance system deployed on Sepolia in 10 days. Nobody had to trust a promise that the data wasn't tampered with, they could check it themselves.

What we learned

Beyond the obvious (Hardhat, contract design, wallet integration), the bigger lesson was about immutability as a mindset, not just a technical property, writing code that can't be quietly patched changes how carefully you have to think before you deploy it. We also learned a lot about scoping: we originally planned a full AI panel inside the dashboard, live summaries, natural-language Q&A over attendance data, help/assist features, but cut it down to a focused MVP: a simple Gemini-powered trend summary, so we'd ship something complete rather than something ambitious and half-working.

What's next for ChainPresence AI

Building out the fuller AI panel we originally scoped, letting teachers ask natural-language questions about attendance trends directly, along with anomaly detection (unusual absence patterns, at-risk students) instead of just a static summary.

Built With

  • eslint
  • ethereum
  • ethers.js
  • gemini-api
  • git
  • github
  • hardhat
  • hardhat-network
  • metamask
  • next.js
  • next.js-app-router
  • node.js
  • openzeppelin
  • pnpm
  • pnpm-workspaces
  • postcss
  • react
  • sepolia-testnet
  • solidity
  • tailwind-css
  • typechain
  • typescript
  • vercel
Share this project:

Updates

Submission history