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
786ef42d8a
feat: add complete support ticket CRUD operations
...
Backend Service:
- UpdateTicket: update status/priority (owner or admin)
- CloseTicket: convenience method to set status=closed
- DeleteTicket: admin only, removes ticket and messages
- ListAllTickets: admin only, with optional status filter
Handlers:
- PATCH /api/v1/support/tickets/{id} - update ticket
- PATCH /api/v1/support/tickets/{id}/close - close ticket
- DELETE /api/v1/support/tickets/{id} - delete ticket (admin)
- GET /api/v1/support/tickets/all - list all tickets (admin)
All endpoints with Swagger annotations
2025-12-26 16:16:05 -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
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
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
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
b1639dbcd8
Implement secure Stripe credential management using RSA encryption
2025-12-26 11:03:52 -03:00
Tiago Yamamoto
7a1d0417bc
Fix ListUsers 500 query error (use tenant_id instead of company_id)
2025-12-26 10:48:11 -03:00
Tiago Yamamoto
722e72cdbd
Implement FCM Token Management (DB, Backend, Frontend, Backoffice)
2025-12-26 10:41:50 -03:00
Tiago Yamamoto
ee5a680468
Add missing CRUD routes: Companies GET by ID, Support Tickets
2025-12-26 10:20:38 -03:00
Tiago Yamamoto
fb98016afc
Refactor RBAC: Admin sees only their company data, Superadmin sees all
2025-12-26 10:05:57 -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
73967ca52b
fix(users): allow superadmin to list all users without tenant restriction
...
- Modified ListUsers handler to check for admin/superadmin role
- Superadmins can now list all users across tenants
- Added ListUsers method to AdminService
- Added Status field to dto.User
Fixes 403 error when superadmin tries to access /api/v1/users
2025-12-26 00:51:54 -03:00
Tiago Yamamoto
930c57a9c7
debug(backend): add console logging to job creation endpoint
...
- Added debug logging to job_handler.go CreateJob
- Added debug logging to job_service.go CreateJob
- Tracks request data, userID extraction, SQL execution, and errors
2025-12-25 22:34:24 -03:00
Tiago Yamamoto
151d1f4347
test(backend): add UpdateCompanyStatus tests for admin service
...
- Added 3 test cases: updates active status, updates verified status, and error when company not found
- All tests passing
2025-12-25 22:08:02 -03:00
Tiago Yamamoto
59df524ed5
test: add admin, notification, audit service tests (+30% coverage increase)
2025-12-24 20:01: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
9784e959e4
feat: add profile page, dynamic dashboard, and backend integration tests
2025-12-24 19:38:11 -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
9b389e1c9f
fix(services): initialize all list slices to empty array to prevent null json response
2025-12-24 18:11:17 -03:00
Tiago Yamamoto
06ed927ef4
fix(services): initialize slices to empty array to prevent null json response
2025-12-24 17:52:13 -03:00
Tiago Yamamoto
bb970f4a74
fix(backend): resolve 500 errors on jobs, notifications and secure routes
...
- Fix CreateJob 500 error by extracting user ID correctly
- Secure Create/Update/Delete Job routes with AuthGuard
- Fix Notifications/Tickets/Profile 500 error (UUID vs Int mismatch)
- Add E2E test for CreateJob
2025-12-24 17:48:06 -03:00
Tiago Yamamoto
3fc701a98c
fix(backend): use 'states' table instead of removed 'regions' in ListJobs
...
Resolves 500 Internal Server Error in GetJobs endpoint caused by migration 021 schema changes.
2025-12-24 17:21:32 -03:00
Tiago Yamamoto
1d79276e13
fix(backend): consolidated duplicate routes, fixed E2E tests for UUIDs and paths
2025-12-24 13:42:45 -03:00
Tiago Yamamoto
c1078563df
refactor(roles): rename companyAdmin->admin and jobSeeker->candidate
2025-12-24 13:30:50 -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
02f35b46b6
feat: implement dynamic dashboard, auth hardening (pepper/httponly) and backend tests
2025-12-24 01:30:33 -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
f81a97a224
Fix 500 error: handle NULL company name in GetJobs
2025-12-23 15:17:36 -03:00
Tiago Yamamoto
0e265e64b8
Refactor backend to use string IDs for Job, Company, and Application
2025-12-23 14:46:17 -03:00
Tiago Yamamoto
d36331140e
Fix jobs query joins and scan order
2025-12-23 14:18:16 -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
e71fc361ac
Add dynamic candidate management data
2025-12-22 19:18:15 -03:00
Tiago Yamamoto
58cfd76675
Add admin backoffice routes and dashboard
2025-12-22 16:37:05 -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
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
1c7ef95c1a
first commit
2025-12-09 19:04:48 -03:00