GenDaily — Daily Check-in dApp for GenLayer StudioNet
TL;DR: A daily check-in dApp on GenLayer StudioNet with streaks, stats, and a 7-day view.
Goal: give users meaningful daily on-chain actions (not just social).
- Demo: https://x.com/NguynHuy290093/status/1976659302325875070
- Repo: GitHub - ngh1105/GenDaily
- Contract (StudioNet): <0x…> (Class:
DailyCheckinPyUTC)
Why (Inspiration & Vision)
GenLayer currently doesn’t expose a lot of public testnet interactions—most energy is social.
GenDaily exists to give everyone one small, meaningful thing to do on-chain every day: open the app, check in, build a streak, and learn the Accepted → Finalized model by doing.
My hunch: a small, steady heartbeat of daily activity can help the GenLayer community grow stronger.
Features
Daily check-in (UTC-based, prevents double check-ins)
Streak & total, plus a 7-day view (circles with neon
)
Countdown to the next UTC reset
Wallet UX: wagmi + RainbowKit, clean connect/disconnect
Dark/Light via CSS variables
Clear finality UX: wait for FINALIZED before updating stats
Stack & GenLayer
- Frontend: Next.js (App Router, TS) + MUI + @tanstack/react-query
- Wallet: wagmi + RainbowKit + MetaMask
- GenLayer SDK: genlayer-js on StudioNet (chainId 61999)
- Contract (genlayer-py):
DailyCheckinPyUTC - Key methods:
- Write:
check_in() - View:
get_my_stats(),is_checked_today(),current_day_index(),get_day_range_counts(start, end),next_reset_time()
- Write:
Client init (StudioNet)
import { createClient } from "genlayer-js";
import { studionet } from "genlayer-js/chains";
const client = createClient({ chain: studionet, account: "0xYOUR_ADDRESS" });
await client.initializeConsensusSmartContract();