Commit graph

43 commits

Author SHA1 Message Date
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
bb6db6c166 fix: correct API endpoint paths from /api/gateway/api to /api
- signup.tsx: fix check-email, register, verify-email, resend-otp paths
- login.tsx: fix check-email, login, resend-otp, verify-email paths
- forgot-password.tsx: fix forgot-password, reset-password paths
- contact.tsx: fix support/tickets path

The gateway expects /api/auth/... but frontend was calling /api/gateway/api/auth/...
2026-04-17 17:00:10 +02:00
Tracewebstudio Dev
34f46f09bd fix: route auth register via gateway proxy 2026-04-17 11:56:08 +02:00
Tracewebstudio Dev
152f918a7b fix(auth): correct resend-otp API endpoint path
- Change from /api/gateway/api/auth/resend-otp to /api/auth/resend-otp
- Fix in signup.tsx and login.tsx
- Gateway already proxies /api/auth/* to users service
2026-04-16 17:29:46 +02:00
Tracewebstudio Dev
6f31fb06a5 fix(signup): send first_name and last_name instead of full_name
- Backend now expects first_name and last_name separately
- Remove full_name field from registration payload
2026-04-16 10:35:40 +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
c2cbafc159 Wire external runtime preview mode and backend data in dashboard preview 2026-04-15 00:15:11 +02:00
Ashwin Kumar
f32cefeab9 feat(frontend): add lead requests, accepted leads, checkout, invoice detail, notification bell
- Add Lead Requests page with filters and cancel functionality
- Add Accepted Leads page with contact details and WhatsApp integration
- Add Buy Tracecoins checkout flow with Beeceptor payment
- Add Invoice Detail page with GST breakdown
- Add NotificationBell component with 30s polling
- Add manual E2E test script
- Update Playwright tests for company verification flow
2026-04-10 03:36:26 +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
86e1bbd268 fix: resolve solid-markdown build error
- Update solid-markdown from ^0.5.0 to ^2.1.1 (old version no longer exists)
- Replace Markdown component with innerHTML rendering for help center articles
- Build now succeeds without errors
2026-04-07 12:55:15 +02:00
Ashwin Kumar
d3630dbaa8 feat: use solid-markdown for Help Center article rendering
- Added solid-markdown dependency
- Replaced manual paragraph splitting with Markdown component
- Articles now render proper markdown (headings, lists, links, etc.)
- Improves readability and matches reference implementation
2026-04-06 18:39:32 +02:00
Ashwin Kumar
bbf11b91e1 feat(dashboard): real My Profile, My Portfolio, Verification pages
- DashboardShell: sticky sidebar + header wrapper with shared style tokens
- ProfilePage: 3-tab form (Basic, Documents, Settings) per role, save/submit-for-verification
- PortfolioPage: full CRUD wired to /api/:prefix/portfolio/me endpoints
- VerificationStatusPage: 7-state status display with progress timeline and resubmit flow
- dashboard.tsx: REAL_PAGES routing intercepts these three sidebar items and renders
  real components instead of DashboardDesignPreview mock

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 17:20:48 +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
564a383a10 Wire user dashboard to real APIs — profile, credits, leads, requirements, jobs
- dashboard.tsx: fetch session for real user name/ID/role, fallback to
  localStorage; show dashboard with role defaults when runtime config unavailable
- DashboardDesignPreview: add liveData prop; createResource for credits,
  marketplace, lead requests, customer requirements, jobs, and profile
- Profile form: inputs now track state via profileFormData signal; pre-filled
  from GET /api/${prefix}/profile/me; Save Changes PATCHes real endpoint
- Lead actions: Send Request POSTs to /api/${prefix}/leads/request; Cancel
  DELETEs /api/${prefix}/leads/requests/{id}; both refetch after completion
- Requirement submit: POSTs to /api/customers/requirements then submits for approval
- Replace hardcoded "Alex" with real session name; credits from wallet balance API
- Fix launch.json PATH so npm is found in sh shell

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 21:13:54 +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
64ec515393 Add wallet invoices page
- wallet/invoices.tsx: table of invoices with download link; uses role-specific API prefix; handles loading/empty states

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 18:14:10 +02:00
Ashwin Kumar
bcb940f3f1 Update buy and packages pages to load real data from API
- wallet/buy.tsx: createResource fetches /api/packages?role= instead of hardcoded bundles
- packages.tsx: replaced stub with real package list from API; shows type badge, price, tracecoin amount

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 18:11:54 +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
8d7cd3b9ef Refactor admin routes and add Storybook/Vitest setup 2026-03-26 06:18:07 +01: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
10385d2e5d feat(frontend): add next parity batch for public routes 2026-03-17 00:21:34 +01:00
Ashwin Kumar
632fc0c7e9 feat(frontend): align public homepage closer to legacy design 2026-03-17 00:00:28 +01:00
Ashwin Kumar
d746fe00e1 feat(frontend): add about/contact pages and homepage CTAs 2026-03-16 23:52:43 +01:00
Ashwin Kumar
c21492bf31 feat(frontend): build public website home page in solid 2026-03-16 23:49:12 +01:00
Ashwin Kumar
6083f0e0fa feat(frontend): add solidstart runtime onboarding renderer 2026-03-16 23:46:21 +01:00