Skip to content

thibaultherve/ReGranted

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

149 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ReGranted

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.


πŸ› οΈ Tech Stack

Layer Technology
Frontend React TypeScript Vite TailwindCSS shadcn/ui React Query React Hook Form Recharts
Backend NestJS Prisma Passport.js JWT
Shared Zod TypeScript types, business rule constants
Database PostgreSQL
Infrastructure Railway GitHub Actions
Monorepo pnpm workspaces

πŸ“Έ Preview

πŸ“Š Dashboard β€” Stats πŸ“ˆ Dashboard β€” Charts
Dashboard β€” Stat cards & progress tracking Dashboard β€” Weekly progress, work distribution & employer breakdown
βœ… Eligibility Check 🏒 Employers
Employer form β€” Automatic eligibility check matrix Employer management β€” Eligibility check, industry & zones
πŸͺͺ Visas
Visa management β€” Track multiple WHV visas

πŸ”œ Upcoming Features

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

πŸ—οΈ Architecture

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

πŸš€ Getting Started

Prerequisites

  • Node.js >= 20
  • pnpm >= 9
  • PostgreSQL instance

Setup

# 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)

Environment Variables

Copy the example env files and fill in your values:

cp client/.env.example client/.env
cp server/.env.example server/.env

πŸ“œ Scripts

# 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 Studio

⚠️ Disclaimer

This 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.

πŸ“ License

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.


πŸ€– AI Usage

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.


πŸ‘€ Author

Thibault HervΓ©
Full-Stack Developer
React NestJS TypeScript

LinkedIn GitHub

About

🌏 Track your Australian visa progress (subclass 417 & 462). Days worked, Employers and Eligibility Check : All in one place! 🚧 [In Development]

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages