Inspiration College students lose an average of 10+ hours per week to disorganization, from missed deadlines, forgotten emails, poor study scheduling. Existing tools (Canvas, Google Calendar, Gmail) are siloed. We wanted to build an AI-powered academic copilot that unifies everything into one intelligent system that actually pushes students to succeed and not just passively tracks data.

The blockchain component was inspired by the idea that students should own their academic data. Grades, study habits, and achievements stored on-chain create a verifiable, portable academic record that no institution controls.

What We Learned Dual-write architecture is hard. Keeping Supabase (fast reads) and Solana (immutable records) in sync requires careful fire-and-forget patterns that don't block the user experience. Anchor program design tradeoffs: we chose a generic DataRecord with JSON blobs (5 instructions) over typed accounts per data type (21+ instructions), dramatically simplifying the smart contract while preserving all data on-chain Server-side Solana signing: using a backend keypair rather than requiring user wallet signatures for every operation was critical for seamless UX in a dual-write system SSE streaming with tool loops: building a real-time agent that can execute 12 sequential tool calls while streaming partial responses to the UI required careful state management

How We Built It

Frontend: Next.js 16 App Router with Tailwind v4 (OKLCH color system), shadcn/ui, Framer Motion animations, and recharts for data visualization. Dark mode default with glassmorphism design.

Backend + AI: Supabase (Postgres + Auth + RLS) as the primary database, Azure OpenAI GPT-4o for the agent, and 13 API routes handling everything from Canvas LMS sync to Gmail processing to background reasoning.

Blockchain: Anchor/Rust smart contract on Solana devnet with PDA-based storage. A dual-write layer automatically mirrors all Supabase writes to on-chain records. Students link their Phantom/Solflare wallet in Settings, initialize their on-chain profile, and all subsequent data (courses, assignments, grades, study blocks, chat messages, emails, nudges, mood entries) is stored immutably on Solana.

Challenges Solana account size limits: fitting rich academic data into on-chain accounts required a JSON blob approach with 4KB truncation PDA index management: maintaining sequential counters per data type per user across both Supabase and Solana without race conditions **Canvas API inconsistencies: different institutions configure Canvas differently, requiring robust error handling for missing fields Background sync throttling: running 11 AI analysis passes per page load without overwhelming the OpenAI API or degrading UX

Built With

  • anchor-framework
  • azure-openai-gpt-4o
  • canvas-lms-api
  • framer-motion
  • gmail-api
  • google-calendar-api
  • next.js-16
  • react-19
  • recharts
  • shadcn/ui
  • solana-blockchain
  • solana/wallet-adapter
  • solana/web3.js
  • supabase
  • tailwind-css-v4
  • typescript
  • vercel
Share this project:

Updates