Update VAC fees to 2026-27 schedule, add WP media proxy

- VAC_FEES updated to 1 July 2026 rates (DHA 2026-27 schedule)
- 482 renamed to Skills in Demand (SID); 187 RSMS removed (closed 2019)
- Added subclass 191 (Permanent Residence Skilled Regional)
- All fee page year labels bumped to 2026-27
- /wp-content/* proxy routes to 62.169.17.14 (LiteSpeed origin) so
  WordPress images and logos render through the Worker

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
King Omar 2026-07-10 14:57:23 +10:00
parent ce771edec5
commit f4d87a46fa
3 changed files with 56 additions and 19 deletions

View file

@ -25,6 +25,43 @@ app.use('*', async (c, next) => {
await next();
});
// ── WordPress media proxy — serves /wp-content/* from origin host ────────────
const WP_ORIGIN = '62.169.17.14';
app.get('/wp-content/*', async c => {
const path = new URL(c.req.url).pathname + new URL(c.req.url).search;
const originUrl = `https://${WP_ORIGIN}${path}`;
const res = await fetch(originUrl, {
headers: {
'Host': 'careersgateway.com.au',
'User-Agent': 'Mozilla/5.0',
},
cf: { cacheTtl: 86400, cacheEverything: true },
}).catch(() => null);
if (!res || !res.ok) {
// Fallback: try HTTP
const httpRes = await fetch(`http://${WP_ORIGIN}${path}`, {
headers: { 'Host': 'careersgateway.com.au' },
}).catch(() => null);
if (!httpRes || !httpRes.ok) return c.notFound();
return new Response(httpRes.body, {
status: httpRes.status,
headers: {
'Content-Type': httpRes.headers.get('Content-Type') || 'application/octet-stream',
'Cache-Control': 'public, max-age=86400',
'Access-Control-Allow-Origin': '*',
},
});
}
return new Response(res.body, {
status: res.status,
headers: {
'Content-Type': res.headers.get('Content-Type') || 'application/octet-stream',
'Cache-Control': 'public, max-age=86400',
'Access-Control-Allow-Origin': '*',
},
});
});
// ── Auth middleware (attaches user to context) ──────────────────────────────
app.use('*', async (c, next) => {
c.set('user', await getCurrentUser(c.env, c));

View file

@ -93,25 +93,25 @@ export function calcPoints(profile) {
return { total: pts, breakdown };
}
// ── VAC FEES — updated 1 July 2025 (2025-26 financial year) ──────────────────
// ── VAC FEES — updated 1 July 2026 (2026-27 financial year) ──────────────────
// Source: Department of Home Affairs — immi.homeaffairs.gov.au/visas/fees
// Fees increase annually on 1 July. Always verify before lodging.
export const VAC_FEES = [
{ subclass: '189', name: 'Skilled Independent', primary: 4990, secondary: 2495, child: 1250 },
{ subclass: '190', name: 'Skilled Nominated', primary: 4990, secondary: 2495, child: 1250 },
{ subclass: '491', name: 'Skilled Work Regional', primary: 4990, secondary: 2495, child: 1250 },
{ subclass: '186', name: 'Employer Nomination (ENS)', primary: 4990, secondary: 2495, child: 1250 },
{ subclass: '187', name: 'Regional Sponsored (RSMS)', primary: 4990, secondary: 2495, child: 1250 },
{ subclass: '482', name: 'Temporary Skill Shortage (TSS)', primary: 3270, secondary: 1635, child: 1635 },
{ subclass: '494', name: 'Skilled Employer Sponsored Regional', primary: 4990, secondary: 2495, child: 1250 },
{ subclass: '500', name: 'Student Visa', primary: 750, secondary: 375, child: 375 },
{ subclass: '485', name: 'Graduate Temporary', primary: 1985, secondary: 995, child: 500 },
{ subclass: '820', name: 'Partner (onshore)', primary: 9265, secondary: 4635, child: 0, note: 'Includes 801 permanent component' },
{ subclass: '189', name: 'Skilled Independent', primary: 6135, secondary: 3070, child: 1540 },
{ subclass: '190', name: 'Skilled Nominated', primary: 6140, secondary: 3070, child: 1535 },
{ subclass: '491', name: 'Skilled Work Regional', primary: 6140, secondary: 3070, child: 1535 },
{ subclass: '186', name: 'Employer Nomination (ENS)', primary: 6140, secondary: 3070, child: 1535 },
{ subclass: '482', name: 'Skills in Demand (SID)', primary: 4015, secondary: 4015, child: 1005 },
{ subclass: '494', name: 'Skilled Employer Sponsored Regional', primary: 6140, secondary: 3070, child: 1535 },
{ subclass: '191', name: 'Permanent Residence (Skilled Regional)', primary: 630, secondary: 315, child: 160 },
{ subclass: '500', name: 'Student Visa', primary: 2500, secondary: 1530, child: 500 },
{ subclass: '485', name: 'Graduate Temporary', primary: 5750, secondary: 2875, child: 1450 },
{ subclass: '820', name: 'Partner (onshore)', primary: 11710, secondary: 5860, child: 2935, note: 'Includes 801 permanent component' },
{ subclass: '801', name: 'Partner (permanent onshore)', primary: 0, secondary: 0, child: 0, note: 'No additional fee if applying with 820' },
{ subclass: '309', name: 'Partner (offshore)', primary: 9265, secondary: 4635, child: 0 },
{ subclass: '309', name: 'Partner (offshore)', primary: 11710, secondary: 5860, child: 2935 },
{ subclass: '100', name: 'Partner (permanent offshore)', primary: 0, secondary: 0, child: 0, note: 'No additional fee if applying with 309' },
{ subclass: '600', name: 'Visitor Visa', primary: 195, secondary: 195, child: 195 },
{ subclass: '407', name: 'Training Visa', primary: 350, secondary: 175, child: 175 },
{ subclass: '600', name: 'Visitor Visa', primary: 250, secondary: 250, child: 250 },
{ subclass: '407', name: 'Training Visa', primary: 535, secondary: 535, child: 135 },
];
// ── PROCESSING TIMES ──────────────────────────────────────────────────────────

View file

@ -322,7 +322,7 @@ export function documentsPage(user, docs, flash) {
export function feesPage(user) {
const body = `
<div class="vt-section-title">💰 VAC Fee Calculator</div>
<p class="vt-section-sub">Estimate your Visa Application Charge (as at 202526)</p>
<p class="vt-section-sub">Estimate your Visa Application Charge (as at 202627)</p>
<div class="vt-card">
<h3>Select Visa & Applicants</h3>
@ -351,7 +351,7 @@ export function feesPage(user) {
</div>
<div id="vac-note" style="font-size:.82rem;color:#64748b"></div>
<div style="font-size:.78rem;color:#94a3b8;margin-top:8px">
Figures in AUD. Fees current as at <strong>1 July 2025</strong> (202526 financial year).
Figures in AUD. Fees current as at <strong>1 July 2026</strong> (202627 financial year).
Fees increase annually on 1 July always
<a href="https://immi.homeaffairs.gov.au/visas/getting-a-visa/fees-and-charges/current-visa-pricing" target="_blank" style="color:#1a5bb8">verify at homeaffairs.gov.au</a>
before lodging.
@ -433,7 +433,7 @@ export function occupationsPage(user, query) {
export function stateCriteriaPage(user) {
const body = `
<div class="vt-section-title">🗺 State Nomination Criteria</div>
<p class="vt-section-sub">Minimum points and key requirements for SC 190 and SC 491 by state/territory (202526)</p>
<p class="vt-section-sub">Minimum points and key requirements for SC 190 and SC 491 by state/territory (202627)</p>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px">
${STATE_CRITERIA.map(s => `
@ -468,7 +468,7 @@ export function stateCriteriaPage(user) {
export function processingTimesPage(user) {
const body = `
<div class="vt-section-title"> Visa Processing Times</div>
<p class="vt-section-sub">Estimated processing times in months (percentile-based, 202526)</p>
<p class="vt-section-sub">Estimated processing times in months (percentile-based, 202627)</p>
<div class="vt-card">
<div class="proc-row proc-header" style="border-bottom:2px solid #e8f0fe;margin-bottom:4px">
@ -586,7 +586,7 @@ export function studentFundPage(user) {
</div>
<div class="vt-card">
<h3>202526 Living Cost Figures (DHA)</h3>
<h3>202627 Living Cost Figures (DHA)</h3>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:.9rem">
<div>Principal applicant: <strong>$${STUDENT_FUND.livingCostPerYear.toLocaleString()}/year</strong></div>
<div>Partner: <strong>$${STUDENT_FUND.partnerPerYear.toLocaleString()}/year</strong></div>