Create a floating "Clippy-style" desktop app showing learning cards.
The app shows an animated sprite character that expands to show a card bubble with smooth, performant animations.
- Animated sprite icon - Pink character with idle animation (4 frames), always visible
- Transparent background - Only character/bubble visible, no window chrome
- Expand/collapse - Click character to toggle bubble with smooth animation
- Manual drag - Hold and drag moves window, click expands
- Keyboard movement - Arrow keys move the character smoothly (game-like)
- Walk animation - 6-frame walk cycle when moving left/right
- Climb animation - 4-frame climb cycle when moving up
- Directional facing - Character faces the direction it's moving
- GPU-accelerated animations - Pure CSS sprite animations for 60fps
Located in public/assets/characters/pink/:
idle.png- 4 frames (128x32), plays when stationarywalk.png- 6 frames (192x32), plays when moving left/rightclimb.png- 4 frames (128x32), plays when moving up
- Collapsed: 74x74 transparent, just the character
- Expanded: 320x580 transparent, bubble + character
electron/main.ts- Window management, IPC handlerselectron/preload.ts- IPC bridge (close, minimize, toggle, drag, move)src/main.tsx- ElectronApp with DraggableIcon, sprite animations, keyboard controlssrc/index.css- Sprite animation keyframes and styles
close-window- Close appminimize-window- Minimize to docktoggle-expand- Switch collapsed/expandedget-expanded-state- Get current statestart-drag/do-drag- Manual window draggingmove-window- Keyboard-based window movement
- Click - Toggle expand/collapse
- Hold + Drag - Move window with mouse
- Arrow Keys - Move character smoothly (with animations)
npm run electron:dev # Development
npm run electron:build # Production build
pkill -f Electron # Kill processes