CANVAMON is a multi-surface productivity app that turns Canvas assignments into a virtual pet experience. It includes:
a browser extension a mobile app a backend server The project is designed to make schoolwork feel more interactive by connecting assignment progress to a pet’s mood, streaks, reminders, dashboard views, and even help with gemini.
Canvas assignment sync Pet mood system based on assignment state Dashboard with assignment stats Weekly schedule view Pet selection and theme preferences Mobile intro video Local notification scheduling for assignment reminders Browser extension pet components with animated cat and dog companions
HackUSF2026/ ├── apps/ │ ├── extension/ # Browser extension UI │ └── mobile/ # Expo / React Native mobile app ├── server/ # Backend API and sync logic ├── package.json # Root workspace config └── package-lock.json
Expo React Native expo-blur expo-linear-gradient expo-notifications expo-video
React Vite TypeScript motion/react
Node.js Express dotenv cors node-cron
This repo uses npm workspaces.
npm install
npm run dev:mobile
npm run dev:extension
npm run build:extension
npm run dev:server
Located in apps/mobile
App.js src/DashboardScreen.js src/ScheduleScreen.js src/PreferencesScreen.js src/notifications.js src/PetAvatar.js
animated dashboard weekly assignment tracking pet preview and preferences local notifications for due assignments launch video before entering the app
Located in apps/extension Important files: src/App.jsx src/components/CatPet.tsx src/components/DogPet.tsx Extension Features animated cat and dog pet UIs pet mood visualization web-based companion experience
Located in server
assignment data sync operations pet state generation API endpoints for app clients
The mobile app currently uses local scheduled notifications through Expo.
asks for notification permission schedules reminders for assignments due on the same day includes a test notification button in Preferences
local notifications are best tested on a real iPhone iOS simulator is not reliable for actual notification delivery remote push notifications would require backend token storage and server-side sending
There is at least one local env file in the extension app: apps/extension/.env.local If the server or extension needs secrets, create the appropriate .env files based on your local setup.
Assets Mobile assets are stored in:
apps/mobile/assets/ This includes:
app icons splash assets landing video used on app startup Development Notes The repo may include both light and dark theme support The mobile dashboard uses a custom animated pet avatar The extension pet animations are separate from the native mobile pet implementation The mobile app and extension share the same product idea, but not the same rendering layer Testing Notes Mobile For notifications:
real-device testing is recommended Expo Go has limitations development builds are better for full native behavior testing Extension Use the Vite dev server during development and build before loading a production bundle.
Future Improvements remote push notifications from the backend persistent user accounts configurable reminder times stronger Canvas integration shared pet logic between extension and mobile onboarding flow and auth Scripts Root scripts from package.json:
npm run dev:server npm run dev:extension npm run build:extension npm run dev:mobile License Add your preferred license here.
Authors Add team member names here.
Demo / Submission Notes This project was built as part of HackUSF and focuses on turning assignment management into a more playful and motivating experience through a virtual pet system.
If you want, I can also turn this into a more polished hackathon-style README with:
badges screenshots section demo section installation steps per app contribution section