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
9a4e469a18
chore: remove unused google/uuid dependency
...
- Replaced with internal utils/uuid package using UUID v7
- go mod tidy removes orphaned dependency
2025-12-24 11:42:46 -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
7310627bee
refactor: remove google/uuid from register_candidate.go
...
- IDs are now auto-generated by DB SERIAL columns
- No need to generate UUID in application code
- Let repository handle ID assignment from DB response
- Removed unused import
2025-12-24 11:31:57 -03:00
Tiago Yamamoto
568b4ebb88
refactor: clean up legacy UUID v4, use UUID v7 everywhere
...
Migrations:
- 016, 017, 019: Replace gen_random_uuid() with uuid_generate_v7()
- All UUID tables now use custom uuid_generate_v7() function
Backend:
- Create internal/utils/uuid/uuid.go with V7() function (RFC 9562)
- Update storage_handler.go to use internal uuid.V7()
- Remove dependency on google/uuid for file naming
All new UUIDs in the system are now UUID v7 (time-ordered)
2025-12-24 11:29:55 -03:00
Tiago Yamamoto
7f30a214f7
docs: add API documentation with routes and permissions
...
- Create docs/API.md with complete API reference
- 40+ routes documented
- Permission matrix by role
- Module breakdown (Auth, Users, Jobs, Applications, etc.)
- Error response examples
- ID format documentation
- Fix seeders to use SERIAL (not UUID) for jobs.id
- jobs.js: let DB auto-generate id
- acme.js, fictional-companies.js, epic-companies.js: same fix
- Update README.md with API documentation link
2025-12-24 11:25:55 -03:00
Tiago Yamamoto
ae4a3e5e63
feat: migrate from UUID v4 to UUID v7
...
Migrations:
- Fix 010_seed_super_admin.sql: only use columns from migration 001
- Add 021_create_uuid_v7_function.sql: PostgreSQL uuid_generate_v7() function
- Add 022_migrate_to_uuid_v7.sql: update notifications, tickets, job_payments to use v7
Seeder:
- Create seeder-api/src/utils/uuid.js with uuidv7() function
- Update notifications.js to use uuidv7() instead of randomUUID()
Docs:
- Update DATABASE.md with UUID v7 section and benefits
UUID v7 benefits:
- Time-ordered (sortable by creation time)
- Better index performance than v4
- RFC 9562 compliant
2025-12-24 11:19:26 -03:00
Tiago Yamamoto
017a34c965
docs: comprehensive documentation update
...
- DATABASE.md: Complete schema with ER diagram, all tables, migrations history
- ROADMAP.md: Project status, completed/in-progress/backlog items
- TASKS.md: Detailed task list to avoid rework
- README.md: Added documentation links table
- backoffice/README.md: Added auth section (JWT Bearer + Cookie)
Schema notes:
- Core tables use SERIAL (INT): users, companies, jobs
- Newer tables use UUID v4: notifications, tickets, payments
- Schema is unified (removed core_* redundant tables)
2025-12-24 11:12:52 -03:00
Tiago Yamamoto
7d99e77468
refactor: unify schema - eliminate core_* tables
...
BREAKING CHANGE: Removed core_companies, core_users, core_user_roles tables
Migrations:
- Create 020_unify_schema.sql: adds tenant_id, email, name to users table
- Create user_roles table (replaces core_user_roles)
- Disable 009_create_core_tables.sql (renamed to .disabled)
- Update 010_seed_super_admin.sql to use unified tables
Backend Repositories:
- company_repository.go: use companies table with INT id
- user_repository.go: use users/user_roles with INT id conversion
Seeders:
- All seeders now use companies/users/user_roles tables
- Removed all core_* table insertions
- Query companies by slug to get SERIAL id
This eliminates the redundancy between core_* and legacy tables.
2025-12-24 11:06:31 -03:00
Tiago Yamamoto
af2719f2e6
fix(seeder): use companies/users tables instead of core_* for jobs
...
- jobs.company_id is INT referencing companies.id (SERIAL)
- jobs.created_by is INT referencing users.id (SERIAL)
- Was incorrectly querying core_companies/core_users (UUID)
2025-12-24 10:55:05 -03:00
Tiago Yamamoto
d2266eb0f9
fix(start.sh): option 6 now runs full pipeline (reset → migrate → seed)
...
- Step 1: Drop all tables
- Step 2: Run migrations
- Step 3: Seed data
- Fixed misleading 'seeded' message
2025-12-24 10:53:19 -03:00
Tiago Yamamoto
254d7c3216
fix(migrations): change job_payments FK types from UUID to INT
...
- job_id changed from UUID to INT to match jobs.id SERIAL
- user_id changed from UUID to INT to match users.id SERIAL
- Added user_id FK to users table
2025-12-24 10:49:33 -03:00
Tiago Yamamoto
2fb81a6d1a
fix(migrations): use Node.js runner instead of psql
...
- Improve migrate.js with error handling for idempotent migrations
- Add 'npm run migrate' script to seeder-api/package.json
- Update start.sh option 4 to use Node.js-based migration runner
- Handles duplicate tables, columns, constraints gracefully
2025-12-24 10:47:25 -03:00
Tiago Yamamoto
db1a9b9edc
feat(start.sh): add migrations and seed reset options
...
- Reorganize menu with sections: Services, Database, Testing
- Add option 4: Run Migrations (psql each migration file)
- Add option 6: Seed Reset with confirmation prompt
- Renumber tests to option 7
2025-12-24 10:44:07 -03:00
Tiago Yamamoto
bb408b5c87
docs(seeder): complete README with all fictional companies and regions
...
- Add documentation for 9 epic companies: BNL, Cyberdyne, Wonka, Wayne, Oceanic, InGen, Bubba Gump, Umbrella, Sprawl-Mart
- Add geographic regions section: Brazil (SP, RJ, MG), USA (CA, NY, TX), Japan (Tokyo, Osaka)
- Update totals: 43 companies, 1129+ jobs, 13 fictional companies
- Add complete file structure documentation
2025-12-24 10:39:16 -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
72174b5232
docs(backend): update Swagger annotations for admin and core handlers
2025-12-24 00:45:48 -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
f94533d432
fix(backoffice): add @fastify/static for Swagger support
2025-12-24 00:33:30 -03:00
Tiago Yamamoto
ce37206286
fix(backoffice): simplify Dockerfile for proper source code copying
2025-12-24 00:28:39 -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
6a1bdefc4b
feat(backoffice): add status endpoint at root and move swagger to /docs
2025-12-24 00:11:18 -03:00
Tiago Yamamoto
ae7003d3fa
feat(backoffice): add CORS_ORIGINS env var support
2025-12-24 00:03:52 -03:00
Tiago Yamamoto
dfdb8bc943
chore: update CORS_ORIGINS with production domains
2025-12-24 00:02:07 -03:00
Tiago Yamamoto
60a32120e2
refactor(backoffice): rename PORT to BACKOFFICE_PORT and HOST to BACKOFFICE_HOST
2025-12-23 23:59:52 -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
6bb90bdd1c
fix: add missing /api/v1/notifications route to router
2025-12-23 23:46:18 -03:00
Tiago Yamamoto
c6f7f41452
feat(backoffice): migrate to Fastify adapter with pnpm, Pino logging, and ultra-optimized Dockerfile
2025-12-23 23:44:02 -03:00
Tiago Yamamoto
22315e0231
perf: optimize backoffice Dockerfile with multi-stage build, non-root user, and .dockerignore
2025-12-23 23:32:43 -03:00
Tiago Yamamoto
0693e30922
refactor: rename PORT to BACKEND_PORT and API_HOST to BACKEND_HOST
2025-12-23 23:28:17 -03:00
Tiago Yamamoto
924255fdfb
feat: prefer DATABASE_URL format for db connection, fallback to individual params
2025-12-23 23:23:42 -03:00
Tiago Yamamoto
2111e7e32d
chore: remove unused file upload config, already using S3 with pre-signed URLs
2025-12-23 23:19:44 -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
7bb081f7c2
fix(backend): Resolve compilation error in update_user.go
2025-12-23 19:24:58 -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