Issue #43: Add sidebar layout to dashboard with nav components#44
Merged
imharrisonking merged 13 commits intoproductionfrom Feb 27, 2026
Merged
Conversation
- Create combined _auth.tsx layout route with auth check and plan-based routing - Add PageContainer component for consistent page layout - Create onboarding page for users without a plan - Update dashboard and settings pages to use NavigationHeader and PageContainer - Make branding prop optional in AppSidebar (no crashes without it) - Remove marketing onboarding page (replaced with auth onboarding) This tracer bullet establishes the architectural pattern that all future authenticated routes will follow.
12 tasks
Preview Environment
Quality checks passed
|
Contributor
Author
|
The send verification code functionality isn't working properly. Can you inspect the UI and browser console logs to see what's happening? |
PR preview environments were failing with 'relation verification does not exist' because migrations weren't being run after SST deploy. This adds a migration step to both the PR preview and main deploy workflows. Fixes verification code 500 error on preview environments.
- Add MAILING_LISTS constant to core/marketing/loops.ts - Subscribe new users to marketing + product lists on signup - Create /api/waitlist endpoint for waitlist signups - Add TanStack Query waitlist mutation client - Create onboarding layout with Header and side gutters - Add thank-you page for successful waitlist signup - Redirect to thank-you page after waitlist submission - Only show name field if user signed up with email (no OAuth name)
- Add full-screen gutter layout with diamond corners for onboarding routes - Implement server-side waitlist signup via TanStack Start server functions - Update user.plan to 'waitlist' on signup and prevent app access for waitlisted users - Add error state to Button component with shake animation - Lighten error color in dark mode for better visibility - Remove Hono client in favor of direct core package calls - Add updatePlanFromId to UserService - Add pricing components
Use reloadDocument on HomeIconLink when navigating from authenticated routes to avoid client-side router route tree conflicts.
Use reloadDocument on HomeIconLink when navigating from authenticated routes to avoid client-side router route tree conflicts.
- Only redirect to /app if user has a real plan (not waitlist) - Waitlist users can access login and marketing routes - This prevents the /app flash when navigating from onboarding to homepage
Now that login middleware properly handles waitlist users
Quality Checks Failed
Please fix the issues above before merging. |
- Users with a real plan → /app - Users on waitlist or no plan → /onboarding - Previously, waitlist users stayed on login page
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements changes for issue #43: Add sidebar layout to dashboard with nav components
Branch: 43-add-sidebar-layout-to-dashboard-with-nav-components
Changes Made
This tracer bullet establishes the architectural pattern for authenticated routes:
Created
_auth.tsxlayout route with:beforeLoad(redirects to/loginif unauthenticated)/onboardingifuser.plan === null)/app/*routes withSidebarProvider,AppSidebar, andSidebarInsetCreated
PageContainercomponent for consistent page layoutCreated
/onboardingpage for users without a plan:Updated dashboard and settings pages:
NavigationHeaderat topPageContainerNavUserin sidebar)beforeLoad(now handled by parent_auth.tsx)Made
brandingprop optional inAppSidebar(no crashes without it)Removed marketing onboarding page (replaced with auth onboarding)
Testing
npm run typecheckpassesChecklist
Related Issue
Closes #43
Progress Log
See
specs/progress.txtfor detailed progress log.