Commit graph

1010 commits

Author SHA1 Message Date
GoHorse Deploy
aae5cbefb5 fix(user): handle experience and education updates in update_user usecase 2026-03-07 15:11:13 -03:00
GoHorse Deploy
a3febf2087 fix(frontend): harden home jobs loading states 2026-03-07 11:06:47 -03:00
GoHorse Deploy
757429afe6 UI: Add margin between label and input on job posting form 2026-03-07 10:53:07 -03:00
GoHorse Deploy
0d29976502 fix(seeder): stream city import batches 2026-03-07 10:40:08 -03:00
GoHorse Deploy
9616e3db68 fix(frontend): allow username login input 2026-03-07 10:01:24 -03:00
GoHorse Deploy
a9de51ede2 fix(frontend): reduce auth noise on login 2026-03-07 09:45:23 -03:00
GoHorse Deploy
949dae0677 fix(users): make user status badge color check case-insensitive 2026-03-06 14:21:15 -03:00
GoHorse Deploy
a40c0d8016 chore: remove scripts moved to infracloud 2026-03-06 13:36:52 -03:00
GoHorse Deploy
2d10101394 refactor: move company creation to separate page and improve users table 2026-03-06 10:10:16 -03:00
GoHorse Deploy
e157910dd4 fix: handle duplicate user email errors properly 2026-03-06 09:40:49 -03:00
Redbull Deployer
1fbbe9fe18 fix(jobs): enforce description min length and redirect after create 2026-03-05 05:52:11 -06:00
Redbull Deployer
cf305d096e fix(auth): accept email or identifier login payload 2026-03-04 21:39:52 -06:00
Redbull Deployer
1a449b7824 UI: Fix ticket dialogs, i18n interpolation, and Add Job button
- Place Category and Priority side by side in create ticket dialogs
- Fix pagination showing literal {1} instead of actual values
- Fix double-brace interpolation in en.json (tickets, companies)
- Replace Add Job modal on dashboard with link to /dashboard/jobs/new
2026-03-04 15:34:32 -06:00
Redbull Deployer
45ffd5033e UI: Refine Nova Vaga page form layout 2026-03-04 06:29:59 -06:00
Redbull Deployer
4d3afbb791 fix: use notify methods correctly from useNotify hook in JobCard 2026-03-01 19:25:17 -06:00
Redbull Deployer
88c142952d fix: destructure notify from useNotify to resolve compilation error in JobCard 2026-03-01 19:19:26 -06:00
Redbull Deployer
f9994a48ae fix: add missing imports for useEffect and framer-motion in companies page 2026-03-01 19:13:44 -06:00
Tiago Yamamoto
56f848e15d fix(backoffice): resolve typescript definition types and spec test headers 2026-02-25 13:36:30 -06:00
Tiago Yamamoto
9ccb15882e feat: optimize jobs database querying and immutable indexes 2026-02-25 07:23:45 -06:00
Tiago Yamamoto
fd9af24e22 docs: update documentation with new features and security analysis
- Add BACKEND_SECURITY.md with security analysis and hardening guide
- Add FRONTEND_TESTING_STRATEGY.md with test coverage strategy
- Update API.md with new endpoints (candidates, tickets, credentials)
- Update AGENTS.md documentation index
2026-02-25 05:51:06 -06:00
Tiago Yamamoto
a1ee608611 fix: add missing home.moreJobs.loadMore translation keys for homepage button 2026-02-25 05:08:49 -06:00
Tiago Yamamoto
222006fb6b docs: rewrite TEST_USERS.md with current credentials and bug post-mortems
- Correct all passwords (were wrong/outdated)
- Add full table of current seeded users (superadmin, admins, candidates)
- Document 3 bugs fixed 2026-02-24:
  - superadmin placeholder hash (seeder fix)
  - users.status VARCHAR(20) crash loop (migration fix)
  - PASSWORD_PEPPER alignment requirement
- Add bash ! expansion gotcha for curl testing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 05:55:10 -06:00
Tiago Yamamoto
6b1c058e8e fix(seeder): seed 'superadmin' hash at runtime alongside 'lol'
Migration 010 creates 'superadmin' with placeholder hash
'$invalid-placeholder-run-seeder$', leaving it unable to log in.
The seeder now upserts 'superadmin' with the same bcrypt(pass+pepper)
hash as 'lol', ensuring both identifiers work after every seed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 05:49:17 -06:00
Tiago Yamamoto
e5e43974a5 fix(migrations): increase users.status VARCHAR(20→30), fix 010 status value
- 009: status column was VARCHAR(20), causing 'force_change_password' (21 chars)
  to fail on INSERT — changed to VARCHAR(30)
- 010: changed initial status from 'force_change_password' to 'pending' (fits
  any column size ≥7 chars, avoids future truncation)
- 046: ALTER TABLE for existing deployments where 009 already applied with VARCHAR(20)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 21:17:34 -06:00
Tiago Yamamoto
028d26d2e6 docs: overhaul global documentation with diagrams, test scenarios, and agent directives 2026-02-23 21:16:04 -06:00
Tiago Yamamoto
4a096ff903 docs: add comprehensive frontend testing strategy
- Add test coverage strategy for Next.js 15 App Router
- Document Server vs Client Components testing approach
- Include MSW mock strategy for API testing
- Add edge cases often forgotten (auth, forms, pagination, uploads)
- Provide templates for unit, integration, and E2E tests
- Include Zustand store testing patterns
2026-02-23 21:13:04 -06:00
Tiago Yamamoto
fe731e83c6 feat: implement rotating background hero on companies page 2026-02-23 21:00:01 -06:00
Tiago Yamamoto
1b897eeb8e feat: add terms and privacy pages, replace favorite with share on job cards 2026-02-23 20:56:17 -06:00
Tiago Yamamoto
cf761a70e4 feat: move homepage carousel arrows to the sides of job container 2026-02-23 20:50:19 -06:00
Tiago Yamamoto
279c0cf067 style: replace language abbreviations with flag images 2026-02-23 20:41:22 -06:00
Tiago Yamamoto
8999b15931 feat: add sao paulo and acre timezones to contact hours 2026-02-23 20:40:07 -06:00
Tiago Yamamoto
471c5930e2 feat: add public contact form and update support info 2026-02-23 20:36:36 -06:00
Tiago Yamamoto
30a77789eb style: replace hero and cta images with more professional version 2026-02-23 20:30:56 -06:00
Tiago Yamamoto
a6fd2fd8a5 feat: refactor home jobs section to grid with load more and update footer social links 2026-02-23 20:29:08 -06:00
Tiago Yamamoto
8ee0d59a61 feat: fix seeder password hashing, add custom questions, navbar/footer on register, payment handler
- fix(seeder): add PASSWORD_PEPPER to all bcrypt hashes (admin + candidates/recruiters)
- fix(seeder): add created_by field to jobs INSERT (was causing NOT NULL violation)
- feat(backend): add custom job questions support in applications
- feat(backend): add payment handler and Stripe routes
- feat(frontend): add navbar and footer to /register and /register/user pages
- feat(frontend): add custom question answers to job apply page
- feat(frontend): update home page hero section and navbar buttons
- feat(frontend): update auth/api lib with new endpoints
- chore(db): add migration 045 for application answers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 20:26:49 -06:00
Tiago Yamamoto
9f5725bf01 feat: improve tickets dialog, navbar buttons, hero section, and fix button bleeding 2026-02-23 18:56:06 -06:00
Tiago Yamamoto
59cd1fa01a feat: add pagination to candidates list endpoint
- Add PaginationInfo struct to candidates DTO
- Update ListCandidates service to support page/perPage params
- Update handler to parse pagination query params
- Update frontend candidates page with pagination controls
2026-02-23 18:02:41 -06:00
Tiago Yamamoto
fa1d397c01 fix: sync credentials services between backend and frontend
- Update ListConfiguredServices to use correct service names
- Add fcm_service_account, appwrite, smtp to BootstrapCredentials
- Remove unused payment_gateway from frontend schema
- Rename firebase to fcm_service_account in frontend
2026-02-23 16:20:25 -06:00
Tiago Yamamoto
f061763ae4 fix: add category field to admin tickets page 2026-02-23 15:53:17 -06:00
Tiago Yamamoto
74afffa4a9 feat: add category field to tickets system 2026-02-23 15:43:35 -06:00
Tiago Yamamoto
3583ef89d8 fix: set cookie Secure=true and SameSite=None for cross-origin auth 2026-02-23 13:44:34 -06:00
Tiago Yamamoto
5ce0980090 fix: move loading check after useEffect to prevent infinite loading 2026-02-23 13:13:57 -06:00
Tiago Yamamoto
1b35b8dd70 fix: resolve infinite loading on settings page
- Remove duplicate setLoading calls in loadBackoffice
- Add proper error handling with catch for all API calls
- Wrap useEffect initialization in try/catch/finally
2026-02-23 12:56:23 -06:00
Tiago Yamamoto
754acd9d3c feat: merge backoffice into settings and add CRUD for credentials
- Move backoffice functionality into settings page as new tab
- Remove standalone backoffice page and sidebar link
- Add edit/delete buttons for credentials management
- Update credentials service to allow overwriting existing credentials
- Add API documentation for system credentials endpoints
2026-02-23 12:42:06 -06:00
Tiago Yamamoto
f22bd51c5d feat: fix language switcher visibility in dashboard header and align pagination buttons 2026-02-23 12:07:07 -06:00
Tiago Yamamoto
01a6cab984 fix: allow all gohorsejobs.com subdomains in CORS for backoffice 2026-02-23 11:51:31 -06:00
Tiago Yamamoto
fd2fa328ad chore: replace native window.confirm with Custom ConfirmModal 2026-02-23 11:24:55 -06:00
Tiago Yamamoto
c5f6b1317e fix(frontend): resolve hydration mismatch and unauthorized api calls 2026-02-23 09:45:26 -06:00
Tiago Yamamoto
364826c5c8 fix(dashboard): align CRUD pages with backend fields
jobs/page.tsx:
- Edit dialog now exposes all UpdateJobRequest fields: employmentType,
  workMode, salaryMin/max/type/currency, salaryNegotiable, languageLevel,
  visaSupport, location, status, isFeatured, description
- Fix AdminJob type to include all JobWithCompany fields returned by API
- Fix jobRows mapping that was hardcoding location/type/workMode/isFeatured
- Add isFeatured to CreateJobPayload type

applications/page.tsx:
- Fix status mismatch: reviewing→reviewed, interview→shortlisted, accepted→hired
- Align statusConfig labels/keys with backend constraint (pending/reviewed/
  shortlisted/rejected/hired)
- Update stats counters to use corrected status keys

companies/page.tsx:
- Add logoUrl and yearsInMarket to create and edit forms
- Populate editFormData from company object on edit open
- Send logoUrl/yearsInMarket in update payload

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 18:27:30 -06:00
Tiago Yamamoto
0876584499 feat(seeder): add realistic job templates with all new fields
Replace placeholder job data with 10 varied templates covering:
- employment_type (full-time, part-time, contract, dispatch)
- work_mode (remote, hybrid, onsite)
- salary_min/max, salary_type, currency (BRL/USD/EUR/GBP/JPY)
- salary_negotiable, language_level, visa_support
- date_posted, realistic descriptions and locations

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 13:06:32 -06:00