Commit graph

60 commits

Author SHA1 Message Date
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
01d37fb109 fix: add missing @tailwindcss/vite dependency 2026-04-09 05:41:11 +02:00
Ashwin Kumar
fa7683477f fix: correct invalid package versions in devDependencies 2026-04-09 05:00:34 +02:00
Ashwin Kumar
e81265e4d9 fix: install python3/make/g++ for native npm package builds 2026-04-09 03:20:29 +02:00
Ashwin Kumar
aa6cc97f12 ci: trigger pipeline 2026-04-09 03:09:37 +02:00
Ashwin Kumar
d946dde999 ci: trigger pipeline 2026-04-09 03:00:14 +02:00
Ashwin Kumar
c7d0c3dcd0 fix: use node:20-slim builder to fix Rollup musl/glibc native binary issue 2026-04-09 02:16:41 +02:00
Ashwin Kumar
c97d54bade fix: increase Node memory and skip scripts in Docker build 2026-04-09 02:08:03 +02:00
Ashwin Kumar
36d26b5439 fix: use npm install --legacy-peer-deps in Docker build 2026-04-09 01:19:44 +02:00
Ashwin Kumar
c3a03b7829 ci: trigger pipeline 2026-04-09 01:16:44 +02:00
Ashwin Kumar
a162e85d1e ci: pin docker-buildx to 5.0.0 to match PLUGINS_PRIVILEGED allowlist 2026-04-09 01:11:14 +02:00
Ashwin Kumar
b73c99b264 ci: trigger pipeline 2026-04-09 01:10:02 +02:00
Ashwin Kumar
9125a7ceab ci: revert privileged flag 2026-04-09 01:03:36 +02:00
Ashwin Kumar
d10bd7a17d ci: add privileged flag for docker-buildx plugin 2026-04-09 01:01:53 +02:00
Ashwin Kumar
a52eb04c64 ci: trigger pipeline 2026-04-09 01:00:55 +02:00
Ashwin Kumar
1248daf87f ci: add Woodpecker CI pipeline and Dockerfile for containerized deployment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 00:09:02 +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
f990b9a9e0 feat: comprehensive testing infrastructure (without workflow pending token scope)
- Add vitest, Playwright, ESLint, Prettier configs
- Add unit tests and e2e accessibility/visual tests
- Add MSW mocks and test setup
- Update scripts and .gitignore
- Install required dev dependencies

Note: GitHub Actions workflow will be added after token scope is granted.
2026-04-08 02:43:29 +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
eee2c367ca feat: add notification bell polling to dashboard shell
- Poll /api/me/notifications/unread-count every 30 seconds
- Show orange dot badge when unread count > 0
- Matches PRD requirement for real-time notifications
2026-04-06 18:23:12 +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
ed68a636f5 feat(dashboard): add notification bell with unread count polling
- Add unreadCount state and polling interval (30s) to DashboardDesignPreview
- Fetch from GET /api/me/notifications/unread-count with auth
- Display orange dot badge on bell when unreadCount > 0
- Uses existing bell icon in header; integrates with notifications page

Implements PRD item: Notification bell on dashboard
2026-04-06 15:06:29 +02:00
Ashwin Kumar
3703d66df5 feat: auth provider, route guards, forgot password, API client
- Add AuthProvider context, RequireAuth guard
- Create API client with endpoint helpers
- Add forgot-password route wired to backend
- Remove dummy login button, add forgot-password link
- Dashboard: RequireAuth, auth context integration
- DashboardDesignPreview: replace Beeceptor with internal payments API
- DashboardDesignPreview: add coupon state, validation, apply
- DashboardDesignPreview: credit wallet on verify, ledger entry
- DashboardDesignPreview: adjust total with discount
- misc: getToken import, API constant
- fix: token storage (use getToken)
2026-04-06 08:24:22 +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
f5d294abbf Add unread notification badge and poll to dashboard layout
- Import onCleanup, getAuthHeader in DashboardLayout
- Poll /api/me/notifications every 60s for unread_count
- Show orange badge on bell icon when unread > 0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 18:13:14 +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
2cd4cdcec3 chore: update package configuration 2026-03-26 20:57:53 +01: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
ea31bcb1ff chore: update playwright debug log 2026-03-25 22:15:38 +01:00
Ashwin Kumar
9d196c483e chore: checkpoint current workspace changes 2026-03-25 22:15:09 +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
4cf4a8c310 style(frontend): refine public page spacing and readability 2026-03-19 03:38:50 +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