- Move 'No user found in storage' log inside window check to avoid SSR logs
- Add CI/CD deploy section with Forgejo pipeline instructions
- Update documentation date
- Replace sessionStorage with localStorage for user data persistence
- Add refreshSession() function to restore session from HTTPOnly cookie via /users/me
- Update tests to use localStorage mocks
- Add 3 new tests for refreshSession() functionality
- Update superadmin credentials in README.md and DEVOPS.md
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.
- 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.
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
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.
- 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
- 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
- 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
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
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
- 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