feat(bamboo-hr-app): migrate and redesign BambooHR app#783
feat(bamboo-hr-app): migrate and redesign BambooHR app#783nicomiguelino wants to merge 16 commits intomasterfrom
Conversation
- Rewrite app in plain HTML/CSS/TypeScript (remove Vue/Pinia/blueprint) - Redesign UI to match Figma spec (dark bg, glassmorphic top bar, card layout) - Remove blueprint library and bamboo-hr-app-old directory - Delete blueprint-checks CI workflow and legacy docs - Update screenshot tests with mocked BambooHR API responses
PR Reviewer Guide 🔍(Review updated until commit 546fd94)Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Latest suggestions up to 546fd94
Previous suggestionsSuggestions up to commit ac76a84
|
- Replace generic Material icons with Figma-provided SVGs for all three cards - Make icons self-contained 40×40 with purple rect backgrounds - Fix top bar padding to be uniform (0.75rem 1.5rem) - Remove redundant icon container sizing in favour of SVG-embedded dimensions - Update screenshots for all resolutions
- Increase card header-to-body gap from 1.5rem to 2rem - Add 2 more employees and 3 more leave entries for max-capacity screenshots - Update screenshots for all resolutions
- Show compact summary (count + avatar group) per card in portrait mode - Hide full employee list in portrait, show it only in landscape - Scale up date heading, card titles, icons, and top bar in portrait - Set equal card heights in portrait via grid-auto-rows - Extract render helpers into render.ts and types into types.ts - Update screenshots for all portrait resolutions
- Add e2e/photos.ts with 5 base64-encoded headshot images from Unsplash - Replace default BambooHR placeholder URLs with data URLs in mock data - Update screenshots for all resolutions
- Add blurred background image with body::before overlay - Apply backdrop-filter blur to cards for frosted glass effect - Darken card overlay with semi-transparent dark gradient layer - Increase card padding in landscape and portrait modes - Remove unused CSS variables and redundant flex-direction declaration
- Test empty state, row rendering, and MAX_ITEMS cap - Test sorting logic (today before tomorrow, then alphabetical) - Test summary count labels (singular/plural) - Test avatar vs initials fallback based on photo URL
|
Persistent review updated to latest commit 546fd94 |
There was a problem hiding this comment.
Pull request overview
Migrates the bamboo-hr-app from a Vue/Pinia + in-repo blueprint dependency to a vanilla HTML/CSS/TypeScript implementation aligned with the shared @screenly/edge-apps tooling, and removes legacy blueprint code/docs/workflows.
Changes:
- Replaced the BambooHR app UI + data flow with static HTML + vanilla TS render/update logic.
- Adopted shared Edge Apps tooling (
@screenly/edge-apps,edge-apps-scripts) and new TS config. - Removed the legacy
blueprintlibrary, its CI workflow, and related documentation; added Playwright-driven screenshot generation.
Reviewed changes
Copilot reviewed 68 out of 92 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/blueprint-checks.yml | Removes legacy blueprint-specific CI workflow. |
| .github/workflows/edge-app-checks.yml | Simplifies changed-app detection (no special-case for blueprint). |
| docs/legacy-edge-apps-library.md | Removes deprecated blueprint library documentation. |
| docs/reusable-components.md | Removes deprecated blueprint Vue component documentation. |
| edge-apps/bamboo-hr-app/.gitignore | Adds app-local ignores (dist, logs, generated screenshots). |
| edge-apps/bamboo-hr-app/.ignore | Ignores local node_modules/ for Screenly CLI packaging. |
| edge-apps/bamboo-hr-app/.vscode/extensions.json | Removes Vue-oriented editor recommendations. |
| edge-apps/bamboo-hr-app/README.md | Updates setup/dev/build/deploy/testing docs for the new stack. |
| edge-apps/bamboo-hr-app/e2e/screenshots.spec.ts | Adds Playwright script to generate screenshots with mocked APIs. |
| edge-apps/bamboo-hr-app/e2e/tsconfig.json | Removes legacy e2e TS config. |
| edge-apps/bamboo-hr-app/e2e/vue.spec.ts | Removes legacy Vue e2e test. |
| edge-apps/bamboo-hr-app/eslint.config.ts | Removes app-local Vue ESLint config in favor of shared tooling. |
| edge-apps/bamboo-hr-app/index.html | Replaces Vue mountpoint with static markup (auto-scaler/top bar/cards). |
| edge-apps/bamboo-hr-app/package.json | Switches to shared scripts/tooling and updates dev dependencies. |
| edge-apps/bamboo-hr-app/playwright.config.ts | Removes legacy Playwright config (likely replaced by shared tooling). |
| edge-apps/bamboo-hr-app/screenshots/480x800.webp | Adds updated screenshot artifact for portrait resolution. |
| edge-apps/bamboo-hr-app/screenshots/800x480.webp | Adds updated screenshot artifact for landscape resolution. |
| edge-apps/bamboo-hr-app/src/App.vue | Removes Vue root component. |
| edge-apps/bamboo-hr-app/src/assets/main.scss | Removes legacy SCSS styling. |
| edge-apps/bamboo-hr-app/src/components/AnniversariesSection.vue | Removes Vue anniversaries section component. |
| edge-apps/bamboo-hr-app/src/components/BirthdaysSection.vue | Removes Vue birthdays section component. |
| edge-apps/bamboo-hr-app/src/components/OnLeaveSection.vue | Removes Vue on-leave section component. |
| edge-apps/bamboo-hr-app/src/components/tests/App.spec.ts | Removes Vue component unit tests. |
| edge-apps/bamboo-hr-app/src/constants.ts | Removes legacy constants file (logic moved into render module). |
| edge-apps/bamboo-hr-app/src/css/style.css | Adds new glassmorphism/dark UI styling and responsive behavior. |
| edge-apps/bamboo-hr-app/src/main.ts | Implements vanilla TS app bootstrap, data fetching, and rendering. |
| edge-apps/bamboo-hr-app/src/render.test.ts | Adds Bun+JSDOM unit tests for render helpers. |
| edge-apps/bamboo-hr-app/src/render.ts | Adds DOM rendering utilities for birthdays/anniversaries/on-leave. |
| edge-apps/bamboo-hr-app/src/stores/anniversaries.ts | Removes Pinia anniversaries store. |
| edge-apps/bamboo-hr-app/src/stores/birthdays.ts | Removes Pinia birthdays store. |
| edge-apps/bamboo-hr-app/src/stores/hr-data.ts | Removes Pinia HR aggregation store (refresh loop migrated). |
| edge-apps/bamboo-hr-app/src/stores/leaves.ts | Removes Pinia leaves store. |
| edge-apps/bamboo-hr-app/src/stores/settings.ts | Removes Pinia settings store (uses shared settings helpers now). |
| edge-apps/bamboo-hr-app/src/test-setup.ts | Removes Vitest global setup (migrated away from Vitest). |
| edge-apps/bamboo-hr-app/src/types.ts | Updates Employee type and adds Leave type for new data flow. |
| edge-apps/bamboo-hr-app/src/utils/avatar.ts | Removes legacy avatar utility (render module now handles initials/avatars). |
| edge-apps/bamboo-hr-app/static/images/Screenly.svg | Removes legacy static Screenly logo asset. |
| edge-apps/bamboo-hr-app/tsconfig.app.json | Removes Vue-oriented TS config. |
| edge-apps/bamboo-hr-app/tsconfig.json | Switches to shared @screenly/edge-apps tsconfig base. |
| edge-apps/bamboo-hr-app/tsconfig.node.json | Removes node-specific TS config from legacy Vite/Vitest setup. |
| edge-apps/bamboo-hr-app/tsconfig.vitest.json | Removes Vitest TS config. |
| edge-apps/bamboo-hr-app/vite.config.ts | Removes Vue/Vite config previously relying on blueprint plugins. |
| edge-apps/bamboo-hr-app/vitest.config.ts | Removes Vitest config (tests now run via Bun). |
| edge-apps/blueprint/.prettierrc.json | Removes legacy blueprint formatting config. |
| edge-apps/blueprint/assets/images/screenly.svg | Removes legacy blueprint asset. |
| edge-apps/blueprint/eslint.config.ts | Removes legacy blueprint ESLint config. |
| edge-apps/blueprint/package.json | Removes blueprint package manifest (blueprint library removed). |
| edge-apps/blueprint/scss/base.scss | Removes legacy shared SCSS base. |
| edge-apps/blueprint/ts/components/BrandLogoCard.vue | Removes legacy blueprint Vue component. |
| edge-apps/blueprint/ts/components/InfoCard.vue | Removes legacy blueprint Vue component. |
| edge-apps/blueprint/ts/components/icons/CoordinatesIcon.vue | Removes legacy blueprint icon component. |
| edge-apps/blueprint/ts/components/icons/HardwareIcon.vue | Removes legacy blueprint icon component. |
| edge-apps/blueprint/ts/components/icons/NameIcon.vue | Removes legacy blueprint icon component. |
| edge-apps/blueprint/ts/components/icons/VersionIcon.vue | Removes legacy blueprint icon component. |
| edge-apps/blueprint/ts/components/icons/index.ts | Removes legacy blueprint icons barrel export. |
| edge-apps/blueprint/ts/components/index.ts | Removes legacy blueprint components barrel export. |
| edge-apps/blueprint/ts/configs/index.ts | Removes legacy blueprint configs export. |
| edge-apps/blueprint/ts/configs/playwright.ts | Removes legacy blueprint Playwright config helper. |
| edge-apps/blueprint/ts/env.d.ts | Removes blueprint screenly global typing. |
| edge-apps/blueprint/ts/stores/base-settings-store.ts | Removes legacy blueprint store setup (Vue/Pinia). |
| edge-apps/blueprint/ts/stores/index.ts | Removes legacy blueprint stores barrel export. |
| edge-apps/blueprint/ts/stores/metadata-store.ts | Removes legacy blueprint metadata store (Vue/Pinia). |
| edge-apps/blueprint/ts/test/index.ts | Removes legacy blueprint test helpers barrel export. |
| edge-apps/blueprint/ts/test/lz-ts-mock.ts | Removes legacy blueprint lz-ts mock. |
| edge-apps/blueprint/ts/test/screenly-mock.ts | Removes legacy blueprint screenly mock. |
| edge-apps/blueprint/ts/types.ts | Removes legacy blueprint Screenly type definitions. |
| edge-apps/blueprint/ts/utils/index.ts | Removes legacy blueprint utils barrel export. |
| edge-apps/blueprint/ts/utils/locale.ts | Removes legacy blueprint locale helper. |
| edge-apps/blueprint/ts/utils/sentry.ts | Removes legacy blueprint Sentry helper. |
| edge-apps/blueprint/ts/vite-plugins/index.ts | Removes legacy blueprint Vite plugin exports. |
| edge-apps/blueprint/ts/vite-plugins/test-server.ts | Removes legacy blueprint test-server Vite plugin. |
| edge-apps/blueprint/ts/vite-plugins/watch-mock-data.ts | Removes legacy blueprint mock-data watch Vite plugin. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Bump @types/jsdom from ^27.0.0 to ^28.0.1 to match jsdom ^28.1.0
- Look up employee photo by matching Leave.employeeId to Employee.eeid - Fix type mismatch: eeid is a string in the API response, cast to number for map lookup - Fall back to initials when no employee match or no photo URL - Update unit tests and screenshot mock data to use string eeid values
- center content vertically in landscape instead of fixed padding-top - widen landscape card grid and increase card height - widen portrait card grid, increase gap and min-height - update screenshots
- Update @screenly/edge-apps from ^0.0.17 to ^0.1.0 - Update bun.lock to reflect resolved version 0.1.0
- Add display_errors to screenly.yml and screenly_qc.yml - Document display_errors in README.md configuration table
User description
Summary
bamboo-hr-appin plain HTML/CSS/TypeScript, removing Vue, Pinia, and theblueprintlibrary dependencybamboo-hr-app-old,blueprintdirectory,blueprint-checksCI workflow, and legacy blueprint docsPR Type
Enhancement, Tests, Documentation
Description
Rewrite app in plain TypeScript
Fetch BambooHR employee and leave data
Add responsive cards, summaries, and avatars
Add unit and screenshot coverage
Diagram Walkthrough
File Walkthrough
3 files
Add embedded headshot fixtures for screenshotsCover render helpers with DOM unit testsMock BambooHR responses for screenshot coverage5 files
Extract reusable card, avatar, and summary renderingBootstrap app, fetch BambooHR, and refresh UIAdd leave model and simplify employee typeAdd glassmorphic responsive dashboard stylingDefine static dashboard shell and card layout3 files
Ignore local dependency directoryUpdate CI checks for migrated edge appAdjust TypeScript config for vanilla app1 files
Replace framework dependencies with app tooling1 files
Refresh BambooHR app setup and usage docs66 files