Yamamoto
340aa9665e
docs: update FRONTEND.md with podman instructions
2026-01-02 19:11:02 -03:00
Yamamoto
3cd52accfb
feat: infrastructure updates, storage verification, and superadmin reset
...
1. Auth: Implemented forced password reset for SuperAdmin and updated login logic.
2. Infra: Switched backend to internal Postgres and updated .drone.yml.
3. Storage: Added Test Connection endpoint and UI in Backoffice.
4. CI/CD: Updated Forgejo deploy pipeline to include Seeder and use Internal Registry.
2026-01-02 16:36:31 -03:00
Tiago Yamamoto
93ca6d64ef
feat(tests): fix candidate dashboard and apply form tests
2026-01-01 11:56:00 -03:00
Tiago Yamamoto
812affb803
feat(tests): implement unit tests for job post and application forms and fix dashboard tests
2026-01-01 11:15:32 -03:00
Tiago Yamamoto
d79fa8e97a
feat: increase test coverage backend/frontend and setup e2e
2026-01-01 10:54:58 -03:00
Tiago Yamamoto
18727f8c99
fix(frontend): remove duplicate credential handler functions in settings page
2025-12-31 17:21:54 -03:00
Tiago Yamamoto
895974878d
refactor: move credentials to settings page and update sidebar
2025-12-31 16:44:29 -03:00
Tiago Yamamoto
c26ad578b9
feat: migrate credentials management to backoffice nestjs
2025-12-31 16:25:32 -03:00
Tiago Yamamoto
2e7da0b28e
feat: add backoffice credentials page and backend support
2025-12-31 16:13:27 -03:00
Tiago Yamamoto
e637117f40
feat(security): migrate auth to httpOnly cookies - Frontend: remove localStorage tokens, use sessionStorage for user data, add credentials include - Backend: add logout endpoint to clear cookie
2025-12-31 15:16:45 -03:00
Tiago Yamamoto
54a77382b7
chore: remove legacy language store (cleanup i18n)
2025-12-31 14:07:51 -03:00
Tiago Yamamoto
c1ab5004bf
chore: trigger frontend deploy
2025-12-31 13:39:35 -03:00
Tiago Yamamoto
33e7bbb334
feat(i18n): internationalize sidebar and dashboards
2025-12-31 13:20:04 -03:00
Tiago Yamamoto
3e81ae40e7
fix(frontend): add version marker (v2) to debug deployment
2025-12-31 12:08:32 -03:00
Tiago Yamamoto
3cb1db81c0
feat(frontend): i18n for admin users page
2025-12-31 11:47:15 -03:00
Tiago Yamamoto
e845ba63c8
fix(frontend): language switcher focus styles and debug logs
2025-12-31 10:35:51 -03:00
Tiago Yamamoto
798031420e
fix(frontend): language switcher cursor and persistence logic
2025-12-31 10:27:33 -03:00
Tiago Yamamoto
8dbcd01336
fix(frontend): use correct language switcher in dashboard header
2025-12-31 10:16:03 -03:00
Tiago Yamamoto
5f5afbaf43
fix(frontend): robust runtime config loading in api layer
2025-12-31 10:06:11 -03:00
Tiago Yamamoto
1eb3da814d
fix(frontend): block access until runtime config is loaded
2025-12-31 09:56:01 -03:00
Tiago Yamamoto
e1bbd94224
fix(frontend): usage of runtime config in HomePage
2025-12-31 09:42:07 -03:00
Tiago Yamamoto
4577310c75
feat(frontend): use runtime env vars for config endpoint
...
Changed /api/config to read API_URL (without NEXT_PUBLIC_ prefix)
which allows runtime configuration without rebuilding the image.
Priority order:
1. API_URL (runtime env var)
2. NEXT_PUBLIC_API_URL (build-time fallback)
3. Default localhost values
2025-12-31 09:39:02 -03:00
Tiago Yamamoto
0da936550b
feat(frontend): add runtime config for environment variables
...
- Add /api/config endpoint for runtime env var fetching
- Add config.ts service with sync getters (getApiUrl, getBackofficeUrl, etc.)
- Add ConfigContext for React components
- Update api.ts, auth.ts, storage.ts to use runtime config
- Update layout.tsx to wrap app with ConfigProvider
- Fix Dockerfile default port from 8080 to 8521
This allows the frontend to read environment variables at runtime
instead of baking them in during build time.
2025-12-31 08:48:32 -03:00
Tiago Yamamoto
1058b7005f
chore: update deploy workflow and frontend Dockerfile
2025-12-28 23:28:44 -03:00
Tiago Yamamoto
a9d6ac0305
perf(docker): migrate frontend to pnpm + optimize dockerignore
...
- Migrate from npm to pnpm for 2-3x faster installs
- Add BuildKit cache mount for pnpm store
- Auto-import package-lock.json to pnpm-lock.yaml
- Reduce NODE_OPTIONS memory to 512MB
- Add more exclusions to .dockerignore (cypress, e2e, tests)
- Cleanup caches in same layer to save disk
2025-12-28 11:20:33 -03:00
Tiago Yamamoto
cb31713307
fix(docker): update frontend Dockerfile for Podman compatibility
...
- Remove deprecated --only=production flag
- Add default value for NEXT_PUBLIC_API_URL build arg
- Add BuildKit cache mount for npm
- Remove HEALTHCHECK (not supported by Podman OCI format)
2025-12-28 11:02:05 -03:00
Tiago Yamamoto
a5bb7b2a31
feat: add backend tests to CI pipeline, improve responsive design, add unit tests
...
- Add test-backend job to .forgejo/workflows/deploy.yaml
- Fix JobService and TicketService tests
- Create ticket_service_test.go
- Create frontend unit tests (forgot-password, jobs/[id], dashboard/users)
- Improve responsiveness for users page, forgot-password, and apply page
2025-12-28 01:27:48 -03:00
Tiago Yamamoto
53d5b9822a
fix: frontend build error in tickets page
2025-12-28 00:29:46 -03:00
Tiago Yamamoto
6a7759b039
refactor(frontend): replace mocks with real api integration in my-jobs
2025-12-27 23:40:35 -03:00
Tiago Yamamoto
a79743df33
feat(frontend): implement roadmap features - services link and boost job action
2025-12-27 23:25:16 -03:00
Tiago Yamamoto
e49485fe64
Update package-lock.json and finalize dev state
2025-12-27 21:56:50 -03:00
Tiago Yamamoto
8eeecf76d7
feat: admin tickets, dashboard i18n, user edit fix and location picker bugfix
2025-12-26 16:42:19 -03:00
Tiago Yamamoto
87aa558a61
fix: add null guards to messages page
...
- Guard against null response from chatApi.listConversations()
- Use fallback empty array for conversations state
- Prevents 'Cannot read properties of null' errors
2025-12-26 16:17:34 -03:00
Tiago Yamamoto
afab4e89cd
refactor: merge company and job form into single step
...
- Reduced form from 3 steps to 2 steps
- Step 1 now contains both company and job data with visual separator
- Step 2 is confirmation only
- Updated progress indicators and card headers
- Fixed navigation button references
2025-12-26 15:53:15 -03:00
Tiago Yamamoto
249081554d
feat: add company profile fields
...
Backend:
- Created migration 031 for employee_count and founded_year
- Updated Company model with EmployeeCount and FoundedYear
- Updated core DTO with website, employeeCount, foundedYear, description
Frontend:
- Added website input field to company form
- Added employee count dropdown (1-10, 11-50, etc.)
- Added founded year input
- Added 'About Company' rich text editor
- Updated API payload to send new fields
2025-12-26 15:48:13 -03:00
Tiago Yamamoto
cca951ca23
feat: add currency, salary period, and rich text description
...
Frontend:
- Added currency selector (BRL, USD, EUR, JPY, GBP, CNY, AED, CAD, AUD, CHF)
- Added salary period dropdown (hourly, daily, weekly, monthly, yearly)
- Created RichTextEditor component for job descriptions (Bold, Lists, Alignment)
- Updated confirmation step to display currency symbol and period label
Backend:
- JobService now persists currency in job creation
- Extended currency validation in DTOs
Seeder:
- Already includes currency in job insertion
2025-12-26 15:37:54 -03:00
Tiago Yamamoto
91e4417c95
feat: add working hours and salary negotiable logic
...
Backend:
- Updated DTOs to include SalaryNegotiable and WorkingHours
- Updated JobService to map and persist these fields (CREATE, GET, UPDATE)
- Ensure DB queries include new columns
Frontend:
- Added 'Working Hours' (Jornada de Trabalho) dropdown to PostJobPage
- Updated state and submit logic
- Improved salary display in confirmation step
Seeder:
- Updated jobs seeder to include salary_negotiable and valid working_hours
2025-12-26 15:29:51 -03:00
Tiago Yamamoto
d6bb579260
feat: add salary options with toggle and candidate proposal
...
Backend:
- Added migration 030_add_salary_negotiable.sql
- Added SalaryNegotiable field to Job model
Frontend:
- Updated PostJobPage with salary mode toggle (fixed/range)
- Added 'Candidato envia proposta' checkbox to hide salary
- Updated job submission logic and confirmation display
2025-12-26 15:23:22 -03:00
Tiago Yamamoto
fb79e987bb
feat: add location selector and contract types
...
Backend:
- Created LocationHandler, LocationService, LocationRepository
- Added endpoints: GET /api/v1/locations/countries, states, cities, search
- Added migration 029_expand_employment_types.sql with new contract types (permanent, training, temporary, voluntary)
- Fixed .gitignore to allow internal/api folder
Frontend:
- Created LocationPicker component with country dropdown and city/state autocomplete search
- Integrated LocationPicker into PostJobPage
- Updated contract type options in job form (Permanent, Contract, Training, Temporary, Voluntary)
- Added locationsApi with search functionality to api.ts
2025-12-26 15:18:16 -03:00
Tiago Yamamoto
818edf2575
fix: Resolve type mismatch in settings page credentials fetch
2025-12-26 14:57:32 -03:00
Tiago Yamamoto
e5d0cd483a
feat: Implement Dynamic Credentials Management
...
Backend:
- Added GET /api/v1/system/credentials to list configured services
- Added DELETE /api/v1/system/credentials/{service}
- Updated CredentialsService to support listing without revealing secrets
Frontend:
- Updated Settings page with Tabs
- Added 'Integrations' tab to manage credentials
- Allows Configuring (Update) and Deleting credentials
- Lists status of Appwrite, Stripe, Firebase, etc.
2025-12-26 14:43:35 -03:00
Tiago Yamamoto
7d797aac2b
fix: Add graceful handling for unconfigured Appwrite in messages page
...
When Appwrite is not configured:
- Shows friendly 'Service not configured' message
- Displays icon and helpful description
- Links to dashboard and settings
- Shows technical details in collapsible section
- Prevents client-side crash
2025-12-26 13:15:29 -03:00
Tiago Yamamoto
cb4fd35dc2
docs: Comprehensive FRONTEND.md update with all pages, components, and features
2025-12-26 12:47:53 -03:00
Tiago Yamamoto
867a155423
fix: Add missing appwrite dependency to package.json
2025-12-26 12:31:38 -03:00
Tiago Yamamoto
504c1025a5
debug: Add console logs to homepage to trace job data source
2025-12-26 12:30:16 -03:00
Tiago Yamamoto
841b1d780c
feat: Email System, Avatar Upload, Email Templates UI, and Public Job Posting
...
- Backend: Email producer (LavinMQ), EmailService interface
- Backend: CRUD API for email_templates and email_settings
- Backend: avatar_url field in users table + UpdateMyProfile support
- Backend: StorageService for pre-signed URLs
- NestJS: Email consumer with Nodemailer and Handlebars
- Frontend: Email Templates admin pages (list/edit)
- Frontend: Updated profileApi.uploadAvatar with pre-signed URL flow
- Frontend: New /post-job public page (company registration + job creation wizard)
- Migrations: 027_create_email_system.sql, 028_add_avatar_url_to_users.sql
2025-12-26 12:21:34 -03:00
Tiago Yamamoto
d771e2a3a9
Hide Companies menu item for non-superadmin users
2025-12-26 10:51:44 -03:00
Tiago Yamamoto
722e72cdbd
Implement FCM Token Management (DB, Backend, Frontend, Backoffice)
2025-12-26 10:41:50 -03:00
Tiago Yamamoto
f1fc45b5ce
Add company edit section to profile page for Admin users
2025-12-26 10:12:56 -03:00
Tiago Yamamoto
d52a83f94b
Redirect /profile to /dashboard/profile for dashboard layout
2025-12-26 10:09:41 -03:00
Tiago Yamamoto
78857b7afe
Show Backoffice menu only for Superadmin users
2025-12-26 10:08:22 -03:00
Tiago Yamamoto
e0b16e5b29
Fix profile 404/500 and user deletion 403
2025-12-26 09:55:19 -03:00
Tiago Yamamoto
f51a8dd99c
fix: resolved user profile 500 error, fixed frontend build types, enhanced logging, increases test coverage
2025-12-26 01:35:34 -03:00
Tiago Yamamoto
3fa875ed98
feat: implemented delete application endpoint and dashboard action
2025-12-26 01:29:31 -03:00
Tiago Yamamoto
7b76b62490
feat(backoffice): implemented edit and delete company functionality
2025-12-26 01:23:01 -03:00
Tiago Yamamoto
43c0719664
feat(users): add company selection and status to create user modal
2025-12-26 01:18:14 -03:00
Tiago Yamamoto
6ab7e357fb
fix(users): resolve 403 on update and enable role/status editing
2025-12-26 01:14:18 -03:00
Tiago Yamamoto
e47c25fac8
fix(companies): format JSON description in modal
...
- Added formatDescription helper to parse JSON and display as formatted list
- Shows tagline, stores, employees, motto etc as labeled fields
- Falls back to plain text if not JSON
2025-12-26 01:02:16 -03:00
Tiago Yamamoto
16012b701a
fix(companies): remove Slug column from table
2025-12-26 01:01:10 -03:00
Tiago Yamamoto
aa97d86d0e
feat(jobs): add public job posting page
...
- Created /register/job page with same layout as company registration
- Split panel design: info panel on left, form on right
- Two-step form: job details, then salary & company selection
- Uses same styling and animations as company registration
2025-12-26 00:54:33 -03:00
Tiago Yamamoto
546e253a5f
feat(companies): add view modal and fix createdAt field
...
- Added modal dialog to view company details when clicking eye icon
- Fixed createdAt field name (was created_at, Go returns camelCase)
- Expanded AdminCompany type to include all company fields
- Modal shows: status badges, contact info, description, timestamps
2025-12-26 00:47:04 -03:00
Tiago Yamamoto
cb6afe9583
fix(frontend): enable job delete/update API calls and add logging
...
- Added update() and delete() methods to jobsApi in api.ts
- Fixed handleDeleteJob to call jobsApi.delete() instead of just local state
- Fixed handleSaveEdit to call jobsApi.update() instead of being commented out
- Added console logging to all CRUD operations for debugging
2025-12-25 22:41:38 -03:00
Tiago Yamamoto
362b569c8d
refactor(frontend): consolidate job creation into single page form
...
- Replaced 6-step wizard (673 lines) with single-page form (290 lines)
- Removed billing/payment steps for now
- All fields visible with clear section headers
- Save as Draft and Publish buttons
2025-12-25 22:11:16 -03:00
Tiago Yamamoto
39d1eff80f
fix(frontend): fix string/number ID comparison in jobs page
...
- handleDeleteJob: compare string IDs directly instead of parseInt
- handleSaveEdit: use string ID for future update logic
- IDs are now UUIDs (strings) after migration
2025-12-25 21:49:09 -03:00
Tiago Yamamoto
39fde338b4
fix(frontend): pass string ID to adminCompaniesApi.updateStatus
2025-12-25 21:00:01 -03:00
Tiago Yamamoto
48dad702d6
fix(frontend): adjust admin jobs pagination property access
2025-12-24 19:53:54 -03:00
Tiago Yamamoto
4eae018a25
fix(backoffice): use string IDs for companies/jobs/users, fix audit log, ensure real tags support
2025-12-24 19:43:49 -03:00
Tiago Yamamoto
cc5ac7c73c
feat: add profile page, dynamic dashboard, and fix candidate 500 error
2025-12-24 19:22:14 -03:00
Tiago Yamamoto
617bb5ab39
fix(rbac): add migration to fix seeded users roles and patch notifications store
2025-12-24 18:14:35 -03:00
Tiago Yamamoto
7b5752f71f
chore(docker): setup google mirror for base images
2025-12-24 17:46:57 -03:00
Tiago Yamamoto
0aa93d0440
fix(ui): use LoadingScreen in RootLayout suspense fallback
2025-12-24 17:28:53 -03:00
Tiago Yamamoto
63f4511020
feat(ui): improve initial loading screen with spinner
2025-12-24 17:28:24 -03:00
Tiago Yamamoto
37512a7d1c
fix(frontend): save token to legacy 'token' key for backward compatibility
2025-12-24 17:22:46 -03:00
Tiago Yamamoto
c1650fd1a4
fix(frontend): check both 'auth_token' and 'token' in api client
...
Unblocks API calls by correctly reading the token saved by auth.ts
2025-12-24 17:16:54 -03:00
Tiago Yamamoto
d3c06f5564
feat: expand testing, add fast seeder options, hardcode superadmin
...
- start.sh: Add options 8 (Seed LITE - skip cities) and 9 (Run All Tests)
- seeder: Add seed:lite, seed:fast scripts and --skip-locations flag
- seeder: Remove superadmin creation (now via backend migration)
- backend: Update 010_seed_super_admin.sql with hardcoded hash (Admin@2025! + pepper)
- backend: Expand jwt_service_test.go with 5 new tests (+10% coverage)
- frontend: Fix api.test.ts URL duplication bug, add error handling tests
- seeder: Add SQL data files to .gitignore
2025-12-24 17:07:45 -03:00
Tiago Yamamoto
dec9dc4897
fix(frontend): fix TypeScript errors in auth.test.ts
...
- Add 'as const' to role literals for proper type inference
- Fixes build error: Type 'string' not assignable to 'candidate' | 'admin' | 'company'
2025-12-24 16:32:25 -03:00
Tiago Yamamoto
b72c63f947
chore(frontend): update jobs page
2025-12-24 16:23:16 -03:00
Tiago Yamamoto
3f89edd327
debug: add detailed logging for company options mapping
2025-12-24 15:09:25 -03:00
Tiago Yamamoto
7e0a58feb4
chore: add detailed debug logs for login flow
2025-12-24 14:26:09 -03:00
Tiago Yamamoto
c1078563df
refactor(roles): rename companyAdmin->admin and jobSeeker->candidate
2025-12-24 13:30:50 -03:00
Tiago Yamamoto
246c55b0f5
feat: add advanced filters UI to jobs page
...
Frontend:
- Add salaryMin, salaryMax, currencyFilter, visaSupport state
- Enable sortBy dropdown with 4 options (recent, salary_desc, salary_asc, relevance)
- Add currency filter (BRL, USD, EUR, JPY)
- Update api.ts jobsApi.list with new filter params
- Fix employmentType query param name (was 'type')
All filters now match backend API endpoints
2025-12-24 11:46:12 -03:00
Tiago Yamamoto
38a94bcbce
feat: implement high priority features
...
1. Advanced Search (backend)
- Add salaryMin, salaryMax, currency, sortBy to JobFilterQuery
- Add 5+ filters: visa, salary range, currency, language level
- Add 4 sort options: recent, salary_asc, salary_desc, relevance
2. Email Service (backend)
- Create Resend API integration (email_service.go)
- 3 HTML email templates: welcome, password_reset, application_received
- Add RESEND_API_KEY, EMAIL_FROM, APP_URL env vars
3. i18n (frontend)
- Create 4 language files: pt-BR, en-US, es-ES, ja-JP
- 100+ translation keys per language
- Covers: common, nav, auth, jobs, profile, company, footer
4. Stripe Integration (backend)
- Create payment_handler.go with checkout session creation
- Webhook handler with signature verification
- Support for checkout.session.completed, payment_intent events
2025-12-24 11:40:53 -03:00
Tiago Yamamoto
340911b4d1
feat(auth): add cookie parsing and JWT auth guard to backoffice
...
- Add JWT auth guard with Bearer token and cookie support
- Update .env.example files with PASSWORD_PEPPER documentation
- Update seeder to use PASSWORD_PEPPER for password hashing
- Update seeder README with hash verification examples
- Fix frontend auth and page components
- Update backend JWT service and seed migration
2025-12-24 10:27:04 -03:00
Tiago Yamamoto
02f35b46b6
feat: implement dynamic dashboard, auth hardening (pepper/httponly) and backend tests
2025-12-24 01:30:33 -03:00
Tiago Yamamoto
0f2aae3073
fix(backoffice): force 0.0.0.0 binding to resolve deployment crash
...
refactor(backend): consolidate admin routes and implement RBAC
feat(frontend): update api client to use consolidated routes
2025-12-24 00:59:33 -03:00
Tiago Yamamoto
7d4bc253d5
refactor: remove AI banner and change 'I'm a company' to 'Postar Vaga'
2025-12-24 00:39:53 -03:00
Tiago Yamamoto
bda4741c17
feat: add AI-powered company section with 'Postar uma Vaga' button on home page
2025-12-24 00:26:02 -03:00
Tiago Yamamoto
eae9474007
docs: add clearer warning about NEXT_PUBLIC_API_URL format
2025-12-24 00:20:43 -03:00
Tiago Yamamoto
35d3032d52
feat: add backoffice API client with NEXT_PUBLIC_BACKOFFICE_URL env var
2025-12-23 23:56:12 -03:00
Tiago Yamamoto
b7987dead9
fix: use NEXT_PUBLIC_API_URL env var for API requests
2025-12-23 23:50:56 -03:00
Tiago Yamamoto
9f7d8e9ca5
feat: add 6-step job wizard with Preview, Billing, Payment steps and Stripe integration preparation
2025-12-23 23:00:17 -03:00
Tiago Yamamoto
42e9f81f48
feat: enhance job form with currency, salary periods, contract types, and add ER diagram docs
2025-12-23 22:49:33 -03:00
Tiago Yamamoto
80d38ee615
feat(frontend): add multi-step job posting wizard with API integration
2025-12-23 22:40:19 -03:00
Tiago Yamamoto
9bc924ab54
fix(frontend): add console.log debugging to job create form, load companies from API
2025-12-23 22:28:16 -03:00
Tiago Yamamoto
fdece70a8a
fix(frontend): renaming ApiCompany to AdminCompany to fix build error
2025-12-23 22:13:19 -03:00
Tiago Yamamoto
908ec41ca9
fix(frontend): Correctly handle paginated companies response in backoffice
2025-12-23 21:40:16 -03:00
Tiago Yamamoto
300c76a156
fix(frontend): Export missing APIs for dashboard and backoffice
2025-12-23 19:37:47 -03:00
Tiago Yamamoto
3701daaeaf
fix(frontend): Add missing zustand dependency
2025-12-23 19:28:17 -03:00
Tiago Yamamoto
398f1904dd
fix(frontend): Use correct admin endpoint for company pagination
2025-12-23 19:27:22 -03:00
Tiago Yamamoto
78ce341370
feat: Implement Ticket System, Profile Page integration, and fix migrations
2025-12-23 19:22:55 -03:00
Tiago Yamamoto
fd59bfacb2
feat(frontend): implement view, edit and delete actions for admin jobs
2025-12-23 18:53:09 -03:00
Tiago Yamamoto
8aada931b5
fix(frontend): remove any type from i18n key traversal
2025-12-23 18:44:09 -03:00
Tiago Yamamoto
24ee8d568f
fix(i18n): Correct nesting of company object in es.json
2025-12-23 15:40:37 -03:00
Tiago Yamamoto
177aea113c
fix(i18n): Add missing company registration keys to es.json
2025-12-23 15:35:08 -03:00
Tiago Yamamoto
2c27836245
feat: Add i18n support to company registration page
2025-12-23 15:29:47 -03:00
Tiago Yamamoto
c0258e57b7
fix: correct getSalaryDisplay to use job.salaryMin/Max
...
The previous sed replacement incorrectly created salaryDisplayMin/Max.
Fixed to properly reference job.salaryMin and job.salaryMax.
2025-12-23 08:38:02 -03:00
Tiago Yamamoto
96c5b60e98
fix: update jobs page to use ApiJob properties
...
- Replace job.company with job.companyName
- Replace job.type with job.employmentType
- Replace job.postedAt with job.createdAt
- Add getSalaryDisplay helper for salaryMin/salaryMax
- Fixed type compatibility with ApiJob interface
2025-12-23 08:34:49 -03:00
Tiago Yamamoto
592af3216e
feat: connect Apply Now to applications API
...
Frontend changes:
- Add applicationsApi with create() and getByJob() in api.ts
- Update apply/page.tsx to fetch job from API and submit to backend
- Fix job detail page requirements null check
- Use ApiJob type instead of mock Job type
- Replace job.company with job.companyName throughout
Note: Backend has type mismatch issues that need fixing:
- jobs endpoint: varchar vs integer comparison
- applications: null id constraint
2025-12-23 08:29:15 -03:00
Tiago Yamamoto
ce0531fefc
feat: connect registration and jobs to real API
...
Backend fixes:
- Fix FK violation in candidate registration by creating company first
- Add CompanyRepository to RegisterCandidateUseCase
- Add handler integration tests for validation
Frontend improvements:
- Add registerCompany function in auth.ts
- Connect company registration form to backend API
- Replace mockJobs with API call in job detail page
- Add loading/error states to job detail page
- Add Jest tests for auth module
2025-12-23 08:19:49 -03:00
Tiago Yamamoto
b09bd023ed
feat: security refactor, server-side pagination, and docs update
...
- impl(frontend): server-side pagination for jobs listing
- impl(frontend): standardized api error handling and sonner integration
- test(frontend): added unit tests for JobCard
- impl(backend): added SanitizeMiddleware for XSS protection
- test(backend): added table-driven tests for JobService
- docs: updated READMES, created ROADMAP.md and DATABASE.md
- fix(routing): redirected landing page buttons to /jobs
2025-12-23 00:50:51 -03:00
Tiago Yamamoto
743b2842c0
feat: Enhance platform with funny jobs, FAQ, Skeleton UI, and Tests
2025-12-22 23:48:56 -03:00
Tiago Yamamoto
aab5822f48
Add timeout to API requests
2025-12-22 19:51:54 -03:00
Tiago Yamamoto
e71fc361ac
Add dynamic candidate management data
2025-12-22 19:18:15 -03:00
Tiago Yamamoto
b6ad6e77e2
Fetch admin jobs for dashboard list
2025-12-22 19:02:05 -03:00
Tiago Yamamoto
5e99115df6
Add CRUD logging and stabilize dashboard dates
2025-12-22 18:55:43 -03:00
Tiago Yamamoto
c14dd3a890
Fix users refresh click handler
2025-12-22 18:29:49 -03:00
Tiago Yamamoto
db8cadda98
Fix candidate dashboard role check
2025-12-22 17:24:34 -03:00
Tiago Yamamoto
30b634b770
Add admin job modal and company select
2025-12-22 17:17:13 -03:00
Tiago Yamamoto
9c17a7a15a
Add paginated users listing
2025-12-22 16:43:54 -03:00
Tiago Yamamoto
749a83efa4
Merge pull request #19 from rede5/codex/add-backoffice-features-for-gohorse-jobs
...
Add admin backoffice: routes, audit logging, job workflow and dashboard UI
2025-12-22 16:37:31 -03:00
Tiago Yamamoto
58cfd76675
Add admin backoffice routes and dashboard
2025-12-22 16:37:05 -03:00
Tiago Yamamoto
89462f5aa1
Fix About page localization
2025-12-22 16:36:00 -03:00
Tiago Yamamoto
4163cf5af2
Add localized privacy policy and terms content
2025-12-22 16:05:50 -03:00
Tiago Yamamoto
4b9c1d301a
Fix contact page translations
2025-12-22 15:49:10 -03:00
Tiago Yamamoto
18a1eb704d
Translate UI and rename routes to English
2025-12-22 15:30:06 -03:00
Tiago Yamamoto
74aa41675d
Add English jobs slug with redirects
2025-12-22 14:58:11 -03:00
Tiago Yamamoto
f04550ee0d
Add i18n support for candidate registration
2025-12-22 14:44:12 -03:00
Tiago Yamamoto
cdfec9e3f2
Show six jobs on home
2025-12-22 13:50:49 -03:00
Tiago Yamamoto
af7b68ee86
Fix login i18n and forgot password page
2025-12-22 13:45:02 -03:00
Tiago Yamamoto
8f70469317
Unify dashboard routing for all roles
2025-12-22 13:25:40 -03:00
Tiago Yamamoto
bc64a76ce2
fix(frontend): add edge runtime config for dynamic routes
2025-12-15 16:34:06 -03:00
Tiago Yamamoto
88e4596b62
fix(frontend): remove invalid sections from wrangler.toml
2025-12-15 16:31:26 -03:00
Tiago Yamamoto
b8219e322c
chore: setup monorepo structure and cloudflare page config
2025-12-15 16:07:38 -03:00
Tiago Yamamoto
00978bf995
fix(frontend): add use client directive to components using hooks
2025-12-15 16:03:10 -03:00
Tiago Yamamoto
11bd1f2fa0
fix(frontend): ajusta estrutura do es.json para corrigir erro de tipo no i18n
2025-12-15 15:17:30 -03:00
Tiago Yamamoto
ad9468bbb6
chore(frontend): set default locale to en
2025-12-15 15:13:18 -03:00
Tiago Yamamoto
4693bc5737
feat(frontend): complete i18n implementation and set default to pt-BR
2025-12-15 15:10:36 -03:00
Tiago Yamamoto
dd18c526e3
fix(frontend): add privacy/terms pages and conditional analytics
2025-12-15 14:53:58 -03:00
Tiago Yamamoto
1818479499
feat(frontend): enable deep linking for job filters via url params
2025-12-15 14:45:58 -03:00
Tiago Yamamoto
640eb10703
feat(frontend): add work mode filter and randomize seeder types
2025-12-15 14:44:14 -03:00
Tiago Yamamoto
78314f2b45
feat(frontend): implement pagination and adjust seeder jobs count
2025-12-15 14:00:42 -03:00
Tiago Yamamoto
3be9807d88
chore: formatting updates and lockfile changes
2025-12-15 10:40:55 -03:00
Tiago Yamamoto
d3d6ae2991
test(frontend): add jest setup and integration tests for API client
2025-12-15 10:26:12 -03:00
Tiago Yamamoto
c9747d3596
fix(integration): correct frontend fallback port to 8521 and handle NULL fields in company entity
2025-12-15 10:19:31 -03:00
Tiago Yamamoto
9edfbcdc93
fix(i18n): 🌍 home page now uses translations properly
2025-12-15 10:04:08 -03:00
Tiago Yamamoto
ee8ed3f1f3
fix(security): 🔒 fixed Next.js vulnerability and Stripe API version
2025-12-15 09:52:43 -03:00
Tiago Yamamoto
92b1515b26
feat(navbar): 🗣️ navbar speaks all languages now
2025-12-15 09:00:49 -03:00
Tiago Yamamoto
ba1385b080
feat(ui): 🏳️ language switcher because one language is never enough
2025-12-15 08:59:44 -03:00
Tiago Yamamoto
69c84c0fa9
feat(layout): 🌐 english first and i18n provider wrapped
2025-12-15 08:59:24 -03:00
Tiago Yamamoto
39b84996d1
feat(i18n): 🎣 hook para pescar traduções automaticamente
2025-12-15 08:58:21 -03:00
Tiago Yamamoto
87fcdcd0fb
feat(i18n): 🇧🇷 opa brasil finalmente representa
2025-12-15 08:57:37 -03:00
Tiago Yamamoto
4df8112509
feat(i18n): 🇪🇸 hola mundo español
2025-12-15 08:57:35 -03:00
Tiago Yamamoto
9d9e28e5e9
feat(i18n): 🌍 english first because global domination
2025-12-15 08:56:58 -03:00
Tiago Yamamoto
67c2ccdffe
Integrate backend jobs feed into frontend and improve seeder
2025-12-14 20:32:20 -03:00
Tiago Yamamoto
9b4601f1d8
feat: implement dynamic featured jobs
...
- Add is_featured column to jobs table (migration)
- Update Job model and Service to support featured jobs
- Update JobHandler to expose featured jobs API
- Support filtering by featured status in GET /jobs
- Frontend: Fetch and display featured jobs from API
- Frontend: Update Job type definition
2025-12-14 15:43:43 -03:00
Tiago Yamamoto
1e753b611a
chore: add scraper API URL to frontend .env.example and fix gitignore
...
- Add NEXT_PUBLIC_SCRAPER_API_URL to frontend/.env.example
- Re-enable .env* ignore rules in frontend/.gitignore
2025-12-14 09:57:02 -03:00
Tiago Yamamoto
ddc4e2c2bf
chore: add complete .env.example files for all services
...
- frontend/.env.example: Add SEEDER_API_URL
- seeder-api/.env.example: Expand with server config and backend URL
- job-scraper-multisite/.env.example: New file with scraping config
- Update gitignore files to allow .env.example tracking
2025-12-14 09:48:56 -03:00
Tiago Yamamoto
6f348c7975
chore: add frontend .env.example and fix gitignore
...
- Update frontend/.gitignore to allow .env.example
- Create frontend/.env.example with correct API_URL format (/api/v1 suffix)
- Document production URL: https://api-dev.gohorsejobs.com/api/v1
2025-12-14 09:39:24 -03:00
Tiago Yamamoto
a4abcf8e05
feat: SEO optimization and dynamic jobs API integration
...
Backend:
- Add Swagger annotations to all job handlers (GET, POST, PUT, DELETE)
- Clean up job handler code
Frontend:
- Expand api.ts with ApiJob types, pagination, and transform function
- Update footer with 'Vagas por Tecnologia' SEO links
- Add robots.txt with crawler directives
- Add sitemap.xml with main pages and job URLs
- Change branding to GoHorse Jobs
2025-12-14 09:16:44 -03:00
Tiago Yamamoto
14c4bc8370
fix(frontend): remove invalid AdminSidebar import from messages page
2025-12-13 18:46:00 -03:00
Tiago Yamamoto
0684ebfdf6
fix(frontend): remove invalid AdminSidebar import from candidates page
...
The AdminSidebar component doesn't exist - the dashboard layout already provides the sidebar.
2025-12-13 18:39:04 -03:00
Tiago Yamamoto
18ac6d74f0
chore: update port configuration to avoid conflicts
...
Port Configuration:
- Backend: 8521 (was 8080/8158)
- Frontend: 8963 (was 3000)
Files updated:
- backend/.env.example: updated PORT and CORS_ORIGINS
- frontend/src/lib/auth.ts: API_URL default to 8521
- frontend/src/lib/api.ts: API_URL default to 8521
- frontend/src/lib/storage.ts: API_URL default to 8521
- run_dev.sh: added port flags and service info display
Usage:
./run_dev.sh
# Backend: http://localhost:8521
# Frontend: http://localhost:8963
2025-12-11 17:06:37 -03:00
Tiago Yamamoto
fdd67b8cd6
Merge branch 'hml' into dev
2025-12-11 14:59:40 -03:00
Tiago Yamamoto
9630730d69
feat(frontend): add storage service for S3 file uploads
...
- Create storage.ts with pre-signed URL handling
- Implement getUploadUrl, uploadFileToS3 helper functions
- Add complete uploadFile workflow for easy file uploads
- Support logos, resumes, documents, avatars folders
2025-12-11 14:58:21 -03:00
Tiago Yamamoto
a505726786
fix: refactor dashboard urls, fix layout duplication and resolve backend api errors
2025-12-09 20:29:49 -03:00
Tiago Yamamoto
7934afcf0d
docs: complete project documentation overhaul
...
- Add comprehensive root README with badges, architecture diagram, and setup guide
- Update backend README with security middlewares and endpoint documentation
- Update frontend README with design system and page structure
- Update seeder-api README with generated data and credentials
- Add internal module READMEs (middleware, handlers, components)
- Document Clean Architecture layers and request flow
- Add environment variables reference table
2025-12-09 19:36:36 -03:00
Tiago Yamamoto
1c7ef95c1a
first commit
2025-12-09 19:04:48 -03:00