Commit graph

33 commits

Author SHA1 Message Date
Tracewebstudio Dev
f386b0c298 chore: checkpoint workspace updates 2026-04-26 23:58:43 +02:00
Tracewebstudio Dev
f1e46e35e7 fix: RequireAuth hydration mismatch using Show component
- Use module-level signal for clientReady to persist across re-renders
- Use Show component for reactive rendering instead of manual null returns
- createEffect handles redirect when client is ready but no token
- onMount sets clientReady after hydration completes
- Dashboard now shows correct TUTOR role sidebar with Leads/My Responses
- Playwright test verifies TUTOR dashboard renders with correct sidebar items
2026-04-22 00:54:08 +02:00
Tracewebstudio Dev
aa79b30465 fix: RequireAuth hydration mismatch and role resolution
- RequireAuth: use setTimeout to defer clientReady=true until after hydration completes, preventing SSR/client mismatch
- dashboard.tsx: add SSR guard to return empty div on server
- playwright tests for dashboard role verification
2026-04-22 00:36:12 +02:00
Tracewebstudio Dev
87a741540b fix: RequireAuth no fallback UI, client-only check 2026-04-21 23:58:09 +02:00
Tracewebstudio Dev
1990b5c99d fix: remove RequireAuth render-time loading spinner causing SSR/hydration mismatch
The loading spinner in RequireAuth caused a hydration error: on SSR the session was available so children rendered, but during client hydration session.loading was true so the spinner rendered instead, causing DOM mismatch (null nextSibling).

Also includes role resolution priority fixes from previous session:
- prefer preferredRole when backendRole is JOB_SEEKER but preferredRole is not
- pass role via URL param to dashboard
- urlRoleLocked signal prevents auth effects from overriding URL role
2026-04-21 23:56:19 +02:00
Tracewebstudio Dev
159b051ac8 fix: resolve role resolution priority - backend roles override localStorage
- login.tsx: pass role via URL param to dashboard instead of relying on localStorage
- dashboard.tsx: add urlRoleLocked signal to prevent auth effects from overriding URL-passed role
- auth.tsx: trust passed-in role over re-reading from localStorage in saveUser
2026-04-21 21:50:57 +02:00
Tracewebstudio Dev
5922b98c93 fix: update forms to match DB schema - first_name/last_name, role keys 2026-04-15 06:23:28 +02:00
Tracewebstudio Dev
a94498e3bf fix: update vitest config and msw v2 API, remove orphaned tests 2026-04-13 01:36:15 +02:00
Tracewebstudio Dev
e2b09c7a8b fix(frontend): preserve leading slash in gatewayUrl path reconstruction 2026-04-12 17:59:50 +02:00
Ashwin Kumar
e2c91fb413 fix(build): restore dashboard layout + api client compatibility 2026-04-10 20:20:00 +02:00
Ashwin Kumar
30750f3797 docs: clarify real data implementations are wired to backend APIs
All job seeker pages are already connected to real APIs:
- Jobs: /api/jobseeker/jobs (real company job postings)
- Applications: /api/jobseeker/applications (my applied jobs)
- Saved Jobs: Custom data storage for bookmarked jobs
- Apply: POST /api/jobseeker/jobs/{id}/apply

Dashboard shows real data from backend, not mock preview.
2026-04-10 01:21:36 +02:00
Ashwin Kumar
7671ad8e55 feat: improve Help Center UI with mixed dark/light theme and structured content
- Updated Help Center with dark hero and light content sections
- Added ArticleContent component for rendering structured content blocks
- Updated seed data with detailed articles matching admin KB categories
- Fixed article alignment and spacing issues
- Uses ContentBlock[] instead of HTML strings for type-safe content
2026-04-09 21:52:16 +02:00
Ashwin Kumar
b8faf752e9 feat: align external dashboards, profile settings split, and role flows 2026-04-08 22:40:43 +02:00
Ashwin Kumar
e5406a0061 feat: add auth context, route guards, password reset, and API client
- Add AuthProvider context and RequireAuth route guard
- Create API client with all endpoint helpers
- Add forgot-password route wired to backend reset endpoints
- Remove dummy login button from login page
- Wire dashboard to auth context for user data
- Enhance profile save to send all fields
- Wire profile submit-for-verification to backend API
2026-04-06 06:19:23 +02:00
Ashwin Kumar
19a0850c49 feat: integrate dynamic help center with runtime-configured knowledge base 2026-04-06 03:33:29 +02:00
Ashwin Kumar
d008cd184d feat: improve public role pages and help center content 2026-04-06 01:47:05 +02:00
Ashwin Kumar
a8ad2b0620 chore: sync latest dashboard and role flow updates 2026-04-05 16:52:02 +02:00
Ashwin Kumar
9ba3adda64 Add form validation to all dashboard forms
- form-validation.ts: new validators (isValidPhone, isValidTitle, isValidDescription,
  isValidLocation, isValidPrice, isValidBudget, isValidSalaryRange, isValidDuration,
  isValidTags, isValidFullName)
- portfolio/index.tsx: title (3–255), description (optional 10+), tags (≤40 chars, max 20)
- settings.tsx: full_name, phone (Indian 10-digit), location, bio (≤500), password strength meter
- jobs/create.tsx: title (5–200), description (20+), location, salary range, experience, skills
- requirements/index.tsx: title, description, location, budget (optional), preferred date
- services/index.tsx: name (3–255), price (positive), duration (optional 1–1440), description (≤1000)
- All forms: VNote inline component (✓ orange / • gray), submitted signal prevents premature errors,
  red borders on invalid fields post-submit

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 22:55:56 +02:00
Ashwin Kumar
3209d13011 feat: wire help center and article pages to live KB API
- help-center.ts: replace static HELP_ARTICLES array with async fetch* functions (fetchHelpCenterArticles, fetchHelpCenterCategories, fetchArticleBySlug); legacy sync shims kept for safety
- support/index.tsx: switched from createMemo(static) to createResource(async API) with loading states
- help-center/article/[slug].tsx: now fetches article from API via createResource; renders paragraphs split by double-newline; proper loading and not-found states
- New server-side API routes: /api/kb/articles, /api/kb/categories, /api/kb/articles/[slug] (proxy to Rust gateway, no auth required)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 13:36:16 +02:00
Ashwin Kumar
055dcd4175 feat(admin): wire management modules to live backend and add UGC role 2026-04-02 13:09:45 +02:00
Ashwin Kumar
c14bf111a8 chore: cleanup — remove legacy redirect shims and localStorage token storage
- Delete 19 redirect alias pages (sign-in/signin/sign-up/signup, /users/* aliases,
  /companies/* aliases, /users/onboarding/* aliases) — legacy Next.js migration
  artifacts that are no longer needed
- Remove localStorage token functions (getAccessToken, setTokens, clearTokens,
  fetchWithAuth) from lib/http.ts — violates memory-only token strategy
- Fix auth/verification: replace setTokens + manual fetch with login() from auth.ts
- Fix ProfileWidget: replace fetchWithAuth with plain fetch (calls server routes)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 23:42:43 +01:00
Ashwin Kumar
f16c7eb4dd feat: add users and companies dashboard route surfaces 2026-03-25 22:13:11 +01:00
Ashwin Kumar
0996f12227 Wire department and designation management to module CRUD backend 2026-03-25 21:32:03 +01:00
Ashwin Kumar
94d4623248 feat(admin): implement figma-aligned admin shell and management modules 2026-03-25 15:45:14 +01:00
Ashwin Kumar
d67e436828 feat(dashboard-parity): DashboardLayout runtime-config nav, auth hardening, onboarding UX
- DashboardLayout.tsx: fully runtime-config driven sidebar nav using
  MODULE_NAV_MAP, role switcher, guided tour spotlight overlay, responsive
  mobile drawer
- auth.ts: hardened JWT access token handling, httpOnly cookie refresh flow
- guided-tour-content.ts: expanded per-role tour steps for all modules
- gateway.ts: improved proxy with Set-Cookie forwarding for refresh token
- onboarding/complete.ts + schema.ts: refined onboarding completion flow
- login.ts + register.ts: cleaner error handling and response forwarding
- dashboard/index.tsx: role-based KPI cards from runtime-config
- jobs/index.tsx: status filters, post job action gated by requiresJobApproval
- marketplace/index.tsx + [id].tsx: leads browsing with tracecoin hold display
- requirements/index.tsx + [id].tsx: post requirement with profession-specific
  conditional fields, budget/timeline/mode, resubmit support
- portfolio/index.tsx: CRUD for photographer portfolio projects
- services/index.tsx: service management for marketplace professionals
- applications/index.tsx: jobseeker applied jobs list
- notifications.tsx: all/unread tabs, mark read, deep link routing
- settings.tsx: change password form
- wallet/index.tsx + ledger.tsx: tracecoin balance and transaction history
- onboarding.tsx: multi-step onboarding form with profession branching

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 00:45:51 +01:00
Ashwin Kumar
7baa38aa97 Refine onboarding UX, role cards, and runtime schema integration 2026-03-22 15:54:12 +01:00
Ashwin Kumar
bd709b0120 Finalize onboarding + role flow updates and public UI polish 2026-03-19 02:35:19 +01:00
Ashwin Kumar
9c10ef3bc6 test(frontend): add vitest tdd coverage for login redirect and role switch visibility 2026-03-19 00:58:29 +01:00
Ashwin Kumar
f3ef5f0aad feat(frontend): improve multi-role guidance and dashboard role switch UX 2026-03-19 00:53:36 +01:00
Ashwin Kumar
c435053810 feat(frontend): finalize onboarding, otp verification, and roleless dashboard flow 2026-03-19 00:30:33 +01:00
Ashwin Kumar
fee43e3655 feat: update solidstart frontend for rust backend migration 2026-03-17 20:42:55 +01:00
Ashwin Kumar
bf4b2558d8 feat: align solid public pages and auth flows with nextjs parity 2026-03-17 15:35:58 +01:00
Ashwin Kumar
6083f0e0fa feat(frontend): add solidstart runtime onboarding renderer 2026-03-16 23:46:21 +01:00