Let me first understand the full current state of the project before building.
Now let me also read the existing route pages and remaining kodnest components:
Good. I now have a complete understanding of the entire project. Let me read the shadcn components I'll need for the settings form:
Now I have full context. Let me build all pages at once. I need to:
/ from a redirect to a proper landing page (outside the (app) group so it has no nav)/dashboard with a premium empty state/settings with placeholder preference fields/saved and /digest with premium empty states/proof as artifact placeholderFirst, let me create the reusable empty state component and the landing page:
Now build the landing page. The root / should be a standalone landing page without the app nav:
Now let me build all five route pages at once:
Now create the settings page that uses the form component:
The premium app skeleton is now complete. The root / serves a standalone landing page with the serif headline "Stop Missing The Right Jobs.", subtext about daily 9AM delivery, and a deep red "Start Tracking" CTA linking to /settings. The /settings page has four placeholder preference fields (Role Keywords, Preferred Locations, Work Mode select, Experience Level select) with no logic wired up yet. The /dashboard page shows a centered empty state explaining that a dataset will be loaded in the next step. /saved, /digest, and /proof each have their own contextual empty states with unique icons and descriptions, all using the shared EmptyState component with the KodNest design system's serif headings, off-white background, and muted foreground text.
Let me first understand the full current state of the project before building.
Now let me also check the existing UI components I'll need for the modal/dialog and badge:
I now have full context. Let me build this systematically:
Now the big dataset file:
Now I'll build all the UI components — the job card, detail modal, and filter bar:
Now let me create the filter logic utility:
Now I'll create a client-side dashboard content component and the wired dashboard + saved pages:
Now update the route pages to use these components:
The upgrade is complete. I created a 60-job dataset of realistic Indian tech roles (lib/jobs/data.ts) spanning companies like Amazon, Flipkart, CRED, Razorpay, Infosys, TCS, Zoho, and others, with varied roles, salary ranges, and 3-6 line descriptions. The /dashboard now renders job cards in a responsive grid with source badges, meta info, and View/Save/Apply actions, fronted by a full filter bar (keyword search, location, mode, experience, source dropdowns, and sort). The /saved page reads from localStorage via a useSyncExternalStore-based hook and renders saved job cards with the same UI, showing a premium empty state when no bookmarks exist. Clicking "View" on any card opens a detail modal with the full description and skill tags.