Skip to content

feat(ui): consolidate JobSync design system - #134

Draft
drewsephski wants to merge 1 commit into
Gsync:devfrom
drewsephski:feat/ui-design-system
Draft

drewsephski wants to merge 1 commit into
Gsync:devfrom
drewsephski:feat/ui-design-system

Conversation

@drewsephski

Copy link
Copy Markdown

Summary

Unauthenticated visitors now get a public JobSync entry page instead of an immediate auth redirect. The application, auth screens, and dashboard share the existing shadcn presentation conventions, with more stable loading geometry and accessible controls.

Authenticated visitors still reach /dashboard; the landing page's primary action uses /signup on a fresh installation and /signin once accounts exist.

Changes

  • Add a server-rendered landing page with an explicitly illustrative dashboard preview, capabilities, workflow, and self-hosting links. The preview performs no dashboard queries.
  • Consolidate auth wrappers and route navigation using Card/Button, destructive Alerts, and small pending spinners with stable submit labels.
  • Align desktop/mobile navigation, active states, focus styling, header geometry, and sidebar/content transitions while preserving cookie state, shortcuts, notifications, profile actions, and assistant docking/resizing.
  • Normalize shared Card headings/spacing and semantic colors; add standard Skeleton-based loading rows to Jobs, Activities, Tasks, and Automations.
  • Replace dashboard segmented buttons with Radix/shadcn Tabs, preserving persisted selection, chart sizing, interactions, queries, and calculations.
  • Add root/auth presentation tests and desktop/mobile light/dark public-page smoke coverage; update existing tests for accessible tab/loading semantics.

Related Issues

Refs #133

Testing

Validation used Node 24.15.0, the existing npm lockfile, a disposable local SQLite database initialized with the existing migrations, and a local account created through the actual signup flow.

  • npm ci — passed.
  • npm run lint — passed.
  • npx tsc --noEmit — passed.
  • npm run build — passed on the final source. Existing unpdf/import.meta and local workspace tracing-root warnings remain.
  • npm run test -- --maxWorkers=4 --silent — not fully green: the unchanged backup round-trip suite fails during fresh temporary SQLite schema setup (prisma db push reports Schema engine error). The same failure was reproduced independently with an absent SQLite file. An Add Job test also timed out during the concurrent browser/build workload; its isolated retry passed.
  • npm run test -- --maxWorkers=4 --silent --exclude __tests__/backupRoundTrip.spec.ts — passed: 289 suites, 3,376 tests.
  • npm run test -- __tests__/AddJob.spec.tsx __tests__/RootPage.spec.tsx __tests__/AuthPresentation.spec.tsx --maxWorkers=1 --silent — passed: 3 suites, 31 tests.
  • npm run test:e2e -- --workers=1 --retries=1 --timeout=120000 — full development-server attempt stopped after the server became unresponsive: 33 passed, 4 flaky, 2 failed (automation resume/setup flows), 60 did not run. A basic /signin request timed out after 10 seconds and /api/version took 123 seconds. Moving the disposable SQLite database outside the watched source tree reduced repeated recompilation but did not resolve the later stall. Earlier default/Turbopack and webpack runs were also not fully green.
  • npm run test:e2e -- e2e/landing.spec.ts e2e/signin.spec.ts e2e/dashboard.spec.ts e2e/agent-chat.spec.ts --workers=1 — passed against the final production build: all 15 tests, without retries. This covers the changed public/auth/dashboard/assistant flows. Production deliberately disables the fixture's cleanup endpoint (404); the focused run used disposable data and unique fixture names, with no production user data.

Manually reviewed /, /signin, /signup, /dashboard, /dashboard/myjobs, /dashboard/activities, /dashboard/profile, /dashboard/automations, and /dashboard/settings. A local browser matrix also passed at 390px/1280px in light/dark themes, with persisted expanded/collapsed sidebar states, mobile Sheet navigation, authenticated root routing, and assistant open/close behavior. Docked assistant resizing was checked in Dia. Temporary screenshots, test scripts, databases, and secrets are excluded from the contribution.

Notes

This draft preserves backend/schema/server-action behavior, authentication submissions and validation, AI prompts/tools, MCP, scheduling, notification semantics, and existing product routes. External AI generation was not verified; the existing assistant E2E tests use mocked AI responses and a selected model on the disposable test account without external credentials.

The diff exceeds the guide's approximate 400-line target because it includes the new landing page and behavior tests. It stays within one presentation concern, adds no dependency, keeps new UI modules under 200 lines, and avoids feature-wide rewrites. Unrelated backup-test infrastructure is deliberately left outside this PR. Draft status reflects the contribution guide's requirement that the full unit suite pass before review, plus the incomplete development-server E2E verification.

Contributor context: I'm the owner of PortfolioOS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant