girliepop
Desktop overlay and theming suite: pastel particles meet visual flow editor.
A desktop environment crafted around animated pastels and node-based design. Girliepop ships as a transparent always-on-top overlay with sparkles, bubbles, hearts, and jelly beans, paired with a web app featuring a visual flow editor built on XyFlow and a curated VS Code theme.
- React 19
- TypeScript
- Electron
- Vite
- Tailwind CSS 4
- XyFlow (node editor)
- GSAP (animations)
- tsup (Electron bundler)
- electron-builder (packaging)
- Vanilla JS Canvas
Girliepop is a multi-surface project split into a web SPA and desktop Electron app. The web app runs on React 19, Vite, Tailwind (v4), and serves a dashboard, flow editor, blog, and playground. The desktop app wraps a vanilla JavaScript canvas overlay (click-through, always-on-top, high-DPI aware) for edge-spawning particles, a React settings GUI for monitor and density control, a splash screen, and a main process handling tray integration, auto-start, and IPC. The VS Code theme is a standalone extension published to the marketplace.
The flow editor is the creative centerpiece—a full XyFlow canvas with girliepop-styled nodes (Girliepop, Decision, Note, Data types), gradient edges, a draggable node palette, live preview minimap, and animated connections. Nodes are customizable with emojis and labels. The editor state lives in React hooks (useFlowState) backed by XyFlow's change handlers. The core design language is a refined pastel palette: dusty rose, mauve, sage, champagne, cream, and blush—applied consistently across shadows, gradients, and typography.
The overlay renderer uses canvas 2D context with particle physics for sparkles (twinkling stars), bubbles (translucent circles with glossy highlights), hearts (floating and tumbling), jelly beans (rain effect), and glow orbs (ambient color in corners). Particles spawn and drift within an edge zone (180px from screen boundaries), so the center stays clear for work. The build system is a multi-project orchestration: dev.cjs and build.cjs route through a custom CLI that coordinates Vite for the SPA, tsup for the Electron main process, and electron-builder for packaging. Settings auto-save and sync bidirectionally between tray menu and settings GUI in real time.
- Multi-surface architecture: web SPA (Vite + React + Tailwind) + desktop app (Electron + TypeScript main + canvas overlay + React settings GUI) + VS Code theme extension
- Visual flow editor with XyFlow node canvas, four node types with emoji labels, gradient edges, draggable palette, live minimap, and animated connection states
- Desktop overlay: vanilla JS canvas renderer, click-through, always-on-top, high-DPI support, five particle types (sparkles, bubbles, hearts, jelly beans, glow orbs) spawning at screen edges with physics-based drift
- Custom multi-project build orchestration via Node scripts coordinating Vite, tsup, and electron-builder; single-instance Electron with tray integration and auto-start sync
- Refined editorial design system: curated pastel palette, custom shadows (soft, card, glow, puff, sticker variants), bubbly border radius, serif + sans-serif typography, ~8,000 lines of TypeScript/React