Commit graph

99 commits

Author SHA1 Message Date
Ashwin Kumar Sivakumar
da7898e083 fix(dashboard): change all API endpoints from /api/gateway to /api
Some checks failed
build-and-release / build (push) Failing after 1m17s
2026-07-05 18:29:07 +05:30
Ashwin Kumar Sivakumar
09e26d2935 fix(profile): change API path from /api/gateway to /api
Some checks failed
build-and-release / build (push) Failing after 1m11s
2026-07-05 18:00:39 +05:30
Ashwin Kumar Sivakumar
38c7b4022d fix(signup): auto-login after OTP verification
Some checks failed
build-and-release / build (push) Failing after 1m17s
2026-07-05 17:04:10 +05:30
Ashwin Kumar Sivakumar
3ee5e908cf fix(signup): add role_key to registration requests
Some checks failed
build-and-release / build (push) Failing after 1m12s
2026-07-05 16:51:30 +05:30
Ashwin Kumar Sivakumar
d7810ace96 fix(auth): change all /api/gateway/auth endpoints to /api/auth for forgot-password, login, and dashboard
Some checks failed
build-and-release / build (push) Failing after 1m6s
2026-07-05 16:25:32 +05:30
Ashwin Kumar Sivakumar
1bf3191c49 fix(signup): change all auth API endpoints from /api/gateway to /api
Some checks failed
build-and-release / build (push) Failing after 1m17s
2026-07-05 16:21:17 +05:30
Ashwin Kumar Sivakumar
07aa835da5 fix(signup): change API endpoint from /api/gateway/auth/register to /api/auth/register
Some checks failed
build-and-release / build (push) Failing after 1m16s
2026-07-05 14:56:11 +05:30
Ashwin Kumar Sivakumar
0cf975f227 fix(signup): fix /signup routing so job-seeker and role-specific URLs work
Some checks failed
build-and-release / build (push) Failing after 1m17s
Three related bugs made signup pages appear blank/'Not found':

1. /signup/index.tsx redirected to /signup/job-seeker (hyphen) but the
   actual file was signup/jobseeker.tsx (no hyphen). Result: every
   /signup visit (no intent) 404'd.

2. signup/company.tsx had the same broken link in the 'Register as
   Job Seeker instead' link.

3. Landing page CTAs link to /signup?intent=professional&role=DEVELOPER
   which the index correctly redirects to /signup/professional - but
   /signup/developer, /signup/photographer etc. were 404 because there
   were no route files for them. Added signup/[role].tsx catch-all
   that maps all professional role slugs (developer, photographer,
   tutor, makeup-artist, video-editor, graphic-designer,
   social-media-manager, fitness-trainer, catering-services,
   ugc-content-creator) to /signup/professional?role=<ROLE>.

Verified via Playwright: all role-specific signup paths now load the
full signup form instead of 'Not found'.
2026-07-04 22:08:03 +05:30
Ashwin Kumar Sivakumar
6e92ed43b6 fix(signup): create proper index.tsx for signup folder, rename job-seeker to jobseeker
- Fix routing structure with index.tsx
- Remove conflicting signup.tsx at root level
- Rename job-seeker.tsx to jobseeker.tsx for cleaner URLs
2026-07-03 17:59:34 +05:30
Ashwin Kumar Sivakumar
cbe49ff5ad fix: update CTAs and fix company signup validation
- Update homepage CTAs to point to new signup URLs
- Fix company signup to not validate lastName
- Add customer signup page
- Fix professionals page CTA
2026-07-03 17:55:45 +05:30
Ashwin Kumar Sivakumar
bdf51ba3da feat(signup): create separate signup pages for each role
- /signup/company - dedicated company registration page
- /signup/job-seeker - dedicated job seeker registration page
- /signup/professional - dedicated professional registration page
- /signup - redirects to appropriate role-specific page
- Removed tabs, each role has its own clean registration flow

Fixes role assignment issues by having dedicated pages per role type.
2026-07-03 17:51:16 +05:30
Ashwin Kumar Sivakumar
9519337030 fix(signup): show role badge for professional/customer intents, fix role assignment
- Hide role selector tabs when intent is provided via URL
- Show role badge for professional/customer roles
- Add profession field to API call for backend role assignment
- Fixes issue where roles weren't properly assigned after signup
2026-07-03 17:40:14 +05:30
Ashwin Kumar Sivakumar
50a27aaed0 Remove dead fake card-entry UI from AI credits checkout
This form (card number/expiry/CVV/name) was never wired to anything -
PayU collects card details on its own hosted page. Now that AI credit
purchases actually open a real PayU checkout instead of faking a
payment_id/signature, this leftover UI was just misleading.
2026-07-02 18:58:51 +05:30
Tracewebstudio Dev
43f09b78d2 feat: notifications page, auto-apply settings, customer response profiles, job status UI
- NotificationsPage: full paginated notification list with unread filter, mark read, load more
- SettingsPage: AI auto-apply section for job seekers (toggle, preferences, skills/titles/locations, salary range)
- CustomerResponsesPage: enriched professional response cards with avatar, bio, skills, location
- CompanyJobsPage: show rejection reason banner and pending-approval notice on job cards
- NotificationBell: fix "View all" link to /dashboard?nav=notifications (deep-link support)
- dashboard.tsx: ?nav= param reads sidebar page on mount; Notifications added to all role sidebars
- PayU integration: payu.ts lib, payu-return route, wallet buy/invoice pages, marketplace route
- Razorpay removed, replaced by PayU across payments flow
- ProfilePage: photo upload UI with avatar preview for all roles
- PortfolioPage: showcase image upload with file picker and preview
- CompanyApplicationsPage: applicant profile snapshot with avatar, headline, skills, resume download
- profile-fields-config: removed resume_doc from job seeker (resume is now AI-generated)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 13:33:54 +02:00
Tracewebstudio Dev
ab054884eb Integrate Razorpay checkout flow 2026-06-26 20:50:39 +02:00
Ashwin Kumar Sivakumar
89ee3f8067 fix(ai): polish ask ash chat widget 2026-06-15 17:04:02 +05:30
Ashwin Kumar Sivakumar
5973e6216e fix(ai): align frontend with backend ai routes 2026-06-15 09:39:26 +05:30
Ashwin Kumar Sivakumar
5f535cba59 fix(ai): use authenticated ask ash chat path 2026-06-15 06:50:09 +05:30
Ashwin Kumar Sivakumar
b5d286ada3 Merge branch 'high-performance' of https://github.com/Traceworks2023/nxtgauge-frontend-solid into high-performance 2026-06-15 06:19:05 +05:30
Ashwin Kumar Sivakumar
491ade57c0 feat(ai): integrate AI usage/credits into dashboard and chat widget 2026-06-15 06:19:05 +05:30
Tracewebstudio Dev
3b8f75d836 feat: add AI usage widget to user dashboard
- Add AiUsageWidget showing:
  - Current plan
  - Monthly usage vs limit
  - Daily usage vs limit
  - Addon balance
  - Renewal date
- Widget added to all role dashboards
2026-06-14 20:28:32 +02:00
Tracewebstudio Dev
031d332a1d feat: add cover letter generation and improve AI chat widget
- Add AI cover letter generation button on JobSeekerJobsPage
- Generate cover letters via /api/ai/generate-cover-letter
- Show generated cover letter preview before applying
- Update AI Chat Widget quick actions to focus on support & KB search
- Update welcome message to explain Ask Ash capabilities
2026-06-14 18:04:47 +02:00
Ashwin Kumar Sivakumar
a4c74f39ed fix(frontend): use nxtgauge browser branding 2026-06-14 18:56:33 +05:30
Ashwin Kumar Sivakumar
4c61bcaf31 fix: remove DPR scaling from CaptchaCanvas to fix zoomed-in appearance
- Fixed canvas dimensions to 176x52 pixels (no DPR scaling)
- All drawing operations now use fixed pixel values
- Prevents captcha from appearing zoomed in on high-DPI displays
- Characters, lines, and circles are now properly positioned within bounds
2026-06-12 05:03:54 +05:30
Rimuru
6666cc5f67 fix(frontend): replace broken file-based API routes with SolidStart middleware
Vinxi 0.5.7 + @solidjs/start 1.3.2 has a build bug where file-based API
routes (src/routes/api/*) are registered in the page router tree but never
mounted as Nitro handlers in the production build, so every /api/* request
returns a framework 404.

Fix: register a SolidStart middleware (src/middleware.ts) via the
middleware config field. The middleware intercepts all /api/* paths and
proxies them to the Rust gateway, bypassing the broken page router.

Covers:
- /api/gateway/* (catch-all proxy to gateway)
- /api/kb/categories
- /api/kb/articles
- /api/kb/articles/:slug

Also tightens the dev-server vite proxy from /api to /api/kb so it
doesn't shadow the new middleware in dev.

Removes the dead src/routes/api/ tree (no longer used).
2026-06-11 15:36:44 +05:30
Ashwin Kumar Sivakumar
aabfacc735 fix: route client /api/* through /api/gateway/* proxy\n\nLogin, signup, forgot-password, dashboard, contact, help-center, and all dashboard component fetches were calling bare /api/* paths. The SolidStart server has no /api/auth/*, /api/support/*, or /api/kb/* handlers -- only /api/gateway/[...path] proxies to the Rust gateway. So those calls returned HTML (SPA catch-all), the JSON parse threw silently, and the buttons looked dead. Sign In / Sign Up / Forgot Password all appeared to be no-ops.\n\nThis routes every client-side fetch through the existing gateway proxy, matching the pattern already used by src/lib/api.ts.\n\nAlso fixes hardcoded test121 -> test111 in canonical/og:url tags across index, professionals, help-center, and RoleLandingPage. 2026-06-11 14:10:10 +05:30
Ashwin Kumar Sivakumar
d888466f19 feat: Add Ask Ash AI credit components 2026-05-29 20:47:15 +05:30
Tracewebstudio Dev
eee67d9ff7 Update components (CaptchaCanvas, DashboardLayout, MyDashboardPage, PortfolioPage, ProfilePage), form-validation, routes (dashboard, login, signup), app.css, add e2e tests and helpers, add manual test files and config 2026-05-08 15:34:49 +02:00
Tracewebstudio Dev
8b90959f1e chore: update AI chat widget - add logo, remove powered by gemma 2026-05-05 20:14:56 +02:00
Tracewebstudio Dev
eb61206810 feat: dashboard session timer and verification UI improvements
- Add SessionTimer component with 13min warning / 15min idle auto-logout
- Move VerificationSubmissionGuide from ProfilePage to MyDashboardPage
- Remove duplicate VerificationSubmissionGuide from ProfilePage
- Fix 'Go to My Portfolio' button to navigate properly
- Change error messages to 'Service unavailable' for failed widget loads
- Brand color updates for VerificationSubmissionGuide
2026-05-05 17:22:04 +02:00
Tracewebstudio Dev
0d63bb304e Add comprehensive test infrastructure and AI guardrails
- Add Vitest unit tests for AiChatWidget component
- Add Playwright E2E tests: ai-chat-widget, api, security, guardrails
- Add AI guardrails tests validating no phone/email leaks from Ollama
- Add security tests: auth, rate limiting, input validation, token handling
- Add API tests for AI endpoints and authentication
- Fix playwright.config.ts reporter path conflict
- Update CompanyJobsPage with AI generate buttons (orange icon, loading state)
- Fix AiChatWidget accessibility (role=dialog, aria-label, aria-modal)
- Add app.css spin animation for AI loading spinner
- Add Gitea Actions workflow for nightly CI tests
- Add TESTING.md documentation
2026-05-01 02:54:25 +02:00
Tracewebstudio Dev
d7ddd3d9e0 fix(ui): wire and restyle dashboard notifications dropdown 2026-04-29 11:51:37 +02:00
Tracewebstudio Dev
d3f3850e1d fix(wallet): fetch pricing by concrete role key 2026-04-29 09:59:41 +02:00
Tracewebstudio Dev
f386b0c298 chore: checkpoint workspace updates 2026-04-26 23:58:43 +02:00
Tracewebstudio Dev
35abb6e7aa fix: add Authorization header to all dashboard apiFetch calls; change Buy Credits/Buy Now buttons to BTN_ORANGE 2026-04-22 01:32:43 +02:00
Tracewebstudio Dev
6a4688c854 style: match role dashboard UI to admin solid dashboard - card padding 14px radius 16px, input height 36px, label 11px uppercase, tab underline style, title 18px #111827 2026-04-22 01:26:36 +02:00
Tracewebstudio Dev
188de040ae fix: MyDashboardPage reads role from URL directly, skips stale prop closure; loadRoleBundle uses auth; no fallback config fetch 2026-04-22 01:13:56 +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
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
fe81ce54c7 feat: add floating AI chat widget to all pages
- Add AiChatWidget component with floating button in bottom-right
- Routes to /api/ai/chat/message for chat, ticket, form, cover letter intents
- Quick action buttons for common tasks
- Appears on all public pages via app.tsx root layout
- Appears on all dashboard pages via DashboardShell
2026-04-15 20:03:47 +02:00
Tracewebstudio Dev
4c9ce597f8 fix: remove duplicate/malformed fields in ProfilePage BASIC_FIELDS 2026-04-15 14:35:19 +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