Tiago Yamamoto
9d19751acb
Resolve merge conflicts in backend, backoffice, and frontend
2025-12-27 21:45:48 -03:00
Tiago Yamamoto
cba13eaab5
Merge branch 'dev' of github.com-pessoal:rede5/gohorsejobs into dev
2025-12-27 20:50:05 -03:00
Tiago Yamamoto
0fd114d097
chore(backoffice): update dependencies and resolve peer dependency warnings
2025-12-27 20:49:08 -03:00
Tiago Yamamoto
b23393bf35
feat: implement stripe subscriptions, google analytics, and user crud
...
- Backend:
- Add Stripe subscription fields to companies (migration 019)
- Implement Stripe Checkout and Webhook handlers
- Add Metrics API (view count, recording)
- Update Company and Job models
- Frontend:
- Add Google Analytics component
- Implement User CRUD in Backoffice (Dashboard)
- Add 'Featured' badge to JobCard
- Docs: Update Roadmap and artifacts
2025-12-27 12:06:54 -03:00
Tiago Yamamoto
c9a46acaff
fix: move go-sqlmock to direct dependencies
2025-12-27 11:31:59 -03:00
Tiago Yamamoto
63023b922f
feat(notifications): implementar sistema de notificações e FCM
...
- Migration 017: tabelas notifications e fcm_tokens
- Models: Notification, FCMToken
- NotificationService: CRUD, push notifications helper
- FCMService: Firebase Cloud Messaging integration
- NotificationHandler: endpoints REST
- Rotas autenticadas: /api/v1/notifications/*
Endpoints:
- GET /api/v1/notifications
- GET /api/v1/notifications/unread-count
- PUT /api/v1/notifications/read-all
- PUT /api/v1/notifications/{id}/read
- DELETE /api/v1/notifications/{id}
- POST /api/v1/notifications/fcm-token
- DELETE /api/v1/notifications/fcm-token
2025-12-27 11:24:27 -03:00
Tiago Yamamoto
9ee9f6855c
feat: implementar múltiplas features
...
Backend:
- Password reset flow (forgot/reset endpoints, tokens table)
- Profile management (PUT /users/me, skills, experience, education)
- Tickets system (CRUD, messages, stats)
- Activity logs (list, stats)
- Document validator (CNPJ, CPF, EIN support)
- Input sanitizer (XSS prevention)
- Full-text search em vagas (plainto_tsquery)
- Filtros avançados (location, salary, workMode)
- Ordenação (date, salary, relevance)
Frontend:
- Forgot/Reset password pages
- Candidate profile edit page
- Sanitize utilities (sanitize.ts)
Backoffice:
- TicketsModule proxy
- ActivityLogsModule proxy
- Dockerfile otimizado (multi-stage, non-root, healthcheck)
Migrations:
- 013: Profile fields to users
- 014: Password reset tokens
- 015: Tickets table
- 016: Activity logs table
2025-12-27 11:19:47 -03:00
bohessefmvb
002f9abca1
Update .drone.yml
...
Ajuste no drone
2025-12-27 11:12:26 -03:00
bohessefmvb
92e3341a83
Update .drone.yml
...
Adicionando o MTU
2025-12-27 11:09:43 -03:00
bohessefmvb
7f1b910fc2
Update .drone.yml
...
Ajuste
2025-12-27 11:04:01 -03:00
Tiago Yamamoto
254f19766a
docs: add comprehensive project roadmap with gap analysis and launch priorities
2025-12-27 10:16:20 -03:00
bohessefmvb
63b0014f3f
Update .drone.yml
...
Ajuste drone
2025-12-26 19:12:48 -03:00
bohessefmvb
f7dc448df1
Update .drone.yml
...
Ajuste drone
2025-12-26 18:30:35 -03:00
bohessefmvb
46d70c16b9
Update .drone.yml
...
Ajuste
2025-12-26 18:27:04 -03:00
bohessefmvb
498ac4d0c7
Update .drone.yml
...
Ajuste no drone
2025-12-26 18:20:51 -03:00
bohessefmvb
fc89b8dc0b
Update Docker repository paths in .drone.yml
...
Ajuste drone
2025-12-26 18:05:54 -03:00
bohessefmvb
98bac41aa8
Update .drone.yml
...
drone
2025-12-26 18:02:58 -03:00
bohessefmvb
d75829aa92
Update .drone.yml
...
Ajuste no step
2025-12-26 18:02:03 -03:00
bohessefmvb
ea724eca45
Update .drone.yml
...
Ajuste no drone
2025-12-26 18:00:47 -03:00
bohessefmvb
62bb7086b6
Update .drone.yml
2025-12-26 17:57:50 -03:00
bohessefmvb
b99f65501d
Update .drone.yml
2025-12-26 17:55:25 -03:00
Tiago Yamamoto
2b9b57e059
chore: update seeders with tickets and company profile data
2025-12-26 16:50:30 -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
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
4712193ade
docs: add Swagger annotations for Company UPDATE and DELETE endpoints
...
- PATCH /api/v1/companies/{id} - Update Company
- DELETE /api/v1/companies/{id} - Delete Company
- Both endpoints require admin authentication
2025-12-26 16:08:26 -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
bf41570cae
docs: Update SEEDER-API.md with current scripts and location data
2025-12-26 13:11:53 -03:00
Tiago Yamamoto
24c3eeaf5b
fix: Add missing dependencies for backoffice email module
...
Added:
- @nestjs/typeorm
- typeorm
- handlebars
- nodemailer
- amqplib
- pg
2025-12-26 13:07:37 -03:00
Tiago Yamamoto
90a5f7b2a6
fix: Add /api/v1/auth/register/company route for public job posting
...
Added route aliases:
- POST /api/v1/auth/register/candidate
- POST /api/v1/auth/register/company
These maintain consistency with the /post-job frontend page
2025-12-26 12:54:37 -03:00
Tiago Yamamoto
db5c0671dc
docs: Comprehensive root README.md with business flows, monetization, and all documentation links
...
- Added business value proposition and monetization models
- Added Mermaid diagrams for user flows
- Added links to all 6 docs files
- Added links to component-level documentation
- Updated architecture diagram with all services
- Added project status summary
2025-12-26 12:51:36 -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
32fc42a29c
docs: Update all documentation files (API_SECURITY, ROADMAP, TASKS, DEVOPS, DATABASE, API)
...
- Updated dates to 2024-12-26
- Added new features: Email System, Avatar Upload, Public Job Posting
- Updated security routes and access levels
- Updated infrastructure and secrets documentation
- Marked completed tasks in ROADMAP and TASKS
2025-12-26 12:45:03 -03:00
Tiago Yamamoto
b0378985a4
docs: Comprehensive BACKOFFICE.md update with all modules and integrations
2025-12-26 12:40:04 -03:00
Tiago Yamamoto
6c5b7586c9
docs: Comprehensive BACKEND.md update with all services, endpoints, and integrations
2025-12-26 12:35:13 -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
06924383bb
chore: Remove compiled binary from repo and add to .gitignore
2025-12-26 12:24:44 -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
d771e2a3a9
Hide Companies menu item for non-superadmin users
2025-12-26 10:51:44 -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