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
052f5169c5
test(auth): add comprehensive auth tests with 98.6% coverage
...
Backend Tests Added:
- auth_middleware_test.go: 25+ tests for HeaderAuthGuard, OptionalHeaderAuthGuard, RequireRoles, TenantGuard, ExtractRoles, hasRole (100% coverage)
- cors_middleware_test.go: 7 tests for CORS origin validation (100% coverage)
- jwt_service_test.go: expanded with expiration parsing, wrong signing method tests (94.4% coverage)
Features:
- Maximum console.log/fmt.Printf output for debugging
- Tests for JWT from header and cookie fallback
- Tests for role-based access (case-insensitive)
- Tests for tenant enforcement
- Tests for token expiration parsing (7d, 2h, invalid formats)
Total backend auth coverage: 98.6%
2025-12-24 16:20:56 -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
78ce341370
feat: Implement Ticket System, Profile Page integration, and fix migrations
2025-12-23 19:22:55 -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
361d36dc38
feat: customize api root response and update dev ingress host
...
- Update root handler to return server public IP via ipify
- Update root handler response JSON structure
- Update ingress host to api-dev.gohorsejobs.com
- Add unit tests for router
2025-12-14 15:19:18 -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
c6e0a70d50
feat(backend): add PostgreSQL SSL support and DB_SSLMODE env var
...
- Update database.go to use DB_SSLMODE environment variable
- Default to sslmode=require for production security
- Update .env.example with SSL and S3 configuration examples
2025-12-11 14:41:11 -03:00
Tiago Yamamoto
1c7ef95c1a
first commit
2025-12-09 19:04:48 -03:00