A full-stack web application that helps Working Holiday Visa (subclass 417) holders in Australia track their specified work, manage employers, and know exactly where they stand toward earning their next visa.
- π Work Tracking β Log hours per employer per day, auto-converted to eligible days using official WHV thresholds
- β Eligibility Check β Instantly validates if your employer qualifies by cross-referencing industry, suburb, and geographic zone
- π’ Employer Management β 10 industry types, automatic or manual eligibility, built-in Australian postcode database
- πͺͺ Multi-Visa Support β Track 1st, 2nd, and 3rd WHV visas independently with their own timeline and progress
- π Dashboard β Real-time progress, pace tracker, weekly/monthly charts, work distribution breakdown
π§ In development β not yet in production. Core features are functional, new features are being shipped regularly. The app name is subject to change.
| Layer | Technology |
|---|---|
| Frontend | |
| Backend | |
| Shared | |
| Database | |
| Infrastructure | |
| Monorepo |
| π Dashboard β Stats | π Dashboard β Charts |
![]() |
![]() |
| β Eligibility Check | π’ Employers |
![]() |
![]() |
| πͺͺ Visas | |
![]() |
|
| Feature | Description |
|---|---|
| π Data Export for Visa Application | Export your work history in a format ready to attach to your WHV visa application (Immigration form support) |
| β±οΈ New Hour Entry System | Redesigned, faster way to log your daily work hours |
| πΊοΈ Interactive Australia Map | Visual map tool to explore eligible zones by industry β see at a glance where your work counts |
| π Suburb Search Table | Searchable directory of suburbs with high work availability β find your next eligible job location |
| π Dark Mode | Full dark theme support across the entire application |
regranted/
βββ client/ # React SPA β UI, routing, state management
βββ server/ # NestJS API β auth, business logic, data access
βββ shared/ # Zod schemas, TypeScript types, WHV constants
βββ pnpm-workspace.yaml
- Prisma β source of truth for the database schema (migrations, relations)
- Zod (in
/shared) β source of truth for API contracts (validation, DTOs) - NestJS services handle the mapping between database models and API types
- The client communicates exclusively through REST API calls (never direct DB access)
- JWT authentication with access/refresh token rotation
- Node.js >= 20
- pnpm >= 9
- PostgreSQL instance
# Install dependencies
pnpm install
# Build the shared package
pnpm build:shared
# Run database migrations
pnpm --filter server prisma:migrate
# Start development servers
pnpm dev:client # React frontend (Vite)
pnpm dev:server # NestJS backend (watch mode)Copy the example env files and fill in your values:
cp client/.env.example client/.env
cp server/.env.example server/.env# Development
pnpm dev:client # Start React dev server
pnpm dev:server # Start NestJS in watch mode
# Build
pnpm build:client # Build React app
pnpm build:server # Build NestJS app
pnpm build:shared # Build shared package
# Test
pnpm test # Run all tests
# Lint
pnpm lint # Lint all packages
# Database
pnpm --filter server prisma:generate # Generate Prisma client
pnpm --filter server prisma:migrate # Run migrations
pnpm --filter server prisma:studio # Open Prisma StudioThis project is not affiliated with, endorsed by, or connected to the Australian Government or the Department of Home Affairs. Always refer to the official source for visa requirements and eligibility rules: immi.homeaffairs.gov.au.
This project is source-available under a non-commercial license. You are free to view, fork, modify, and redistribute the code β as long as it remains non-commercial with attribution.
The database content (Australian postcode/suburb data) and the data collection pipeline (scraping from multiple sources) are kept private and not included in this repository.
See LICENSE for details.
In the interest of transparency: AI is used regularly throughout this project as a development tool β for code generation, refactoring, debugging, and documentation. But it remains exactly that: a tool. As the sole developer, I define the architecture, enforce best practices, and maintain full control over technical direction. AI accelerates execution β it doesn't replace thinking.
|
Thibault HervΓ© Full-Stack Developer |




