50-state trucking compliance: services, checker, order page, CA landing
- Migration 079: state_trucking_requirements table seeded for all 51 jurisdictions (IRP, IFTA, weight-distance taxes, MCP/CARB, intrastate authority, state DOT) - Migration 080: carrier_operating_states tracking table - 13 new state trucking services in catalog ($99-$599) - StateTruckingHandler with state-specific admin todos - DOT compliance checker: 7 new state-level checks (IRP, IFTA, weight tax, MCP/CARB, emissions, intrastate authority, state DOT number) - New API endpoint: GET /api/v1/dot/state-requirements - DOT order page: state compliance service cards with auto-preselect - California trucking landing page (MCP + CARB + IRP + IFTA) - Fix: DOT checker nav missing Trucking/DOT section - Fix: All 8 DOT intake pages missing style block (dangling text) - Fix: DOT confirmation email now says "Order Confirmed" not "Action Required" - Fix: MCS150/BOC3/StateTrucking handlers missing async process() method - Fix: StateTruckingHandler connection leak + slug resolution Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c80f3a408a
commit
33da00fd89
21 changed files with 2078 additions and 14 deletions
|
|
@ -112,6 +112,22 @@ export const INTAKE_MANIFEST: Record<string, IntakeStep[]> = {
|
|||
"dot-drug-alcohol": ["review"],
|
||||
"dot-audit-prep": ["review"],
|
||||
"dot-full-compliance": ["review"],
|
||||
|
||||
// ── State-Level Trucking Compliance ─────────────────────────────────
|
||||
// Admin-assisted: info collected at checkout, no intake form needed.
|
||||
"irp-registration": ["review"],
|
||||
"ifta-application": ["review"],
|
||||
"ifta-quarterly": ["review"],
|
||||
"or-weight-mile-tax": ["review"],
|
||||
"ny-hut-registration": ["review"],
|
||||
"ky-kyu-registration": ["review"],
|
||||
"nm-weight-distance": ["review"],
|
||||
"ct-highway-use-fee": ["review"],
|
||||
"ca-mcp-carb": ["review"],
|
||||
"state-dot-registration":["review"],
|
||||
"intrastate-authority": ["review"],
|
||||
"osow-permit": ["review"],
|
||||
"state-trucking-bundle": ["review"],
|
||||
};
|
||||
|
||||
// Category-gated dynamic steps. The Wizard inserts these after the `category`
|
||||
|
|
@ -155,6 +171,20 @@ export const SERVICE_META: Record<string, { name: string; price_cents: number }>
|
|||
"dot-drug-alcohol": { name: "DOT Drug & Alcohol Compliance Program", price_cents: 14900 },
|
||||
"dot-audit-prep": { name: "New Entrant Safety Audit Preparation", price_cents: 39900 },
|
||||
"dot-full-compliance": { name: "DOT Full Compliance Bundle", price_cents: 49900 },
|
||||
// State-level trucking
|
||||
"irp-registration": { name: "IRP Registration Assistance", price_cents: 19900 },
|
||||
"ifta-application": { name: "IFTA Application + Decals", price_cents: 14900 },
|
||||
"ifta-quarterly": { name: "IFTA Quarterly Filing", price_cents: 9900 },
|
||||
"or-weight-mile-tax": { name: "Oregon Weight-Mile Tax Setup", price_cents: 19900 },
|
||||
"ny-hut-registration": { name: "NY Highway Use Tax Registration", price_cents: 19900 },
|
||||
"ky-kyu-registration": { name: "KY Weight-Distance Tax Setup", price_cents: 19900 },
|
||||
"nm-weight-distance": { name: "NM Weight-Distance Tax Setup", price_cents: 19900 },
|
||||
"ct-highway-use-fee": { name: "CT Highway Use Fee Setup", price_cents: 19900 },
|
||||
"ca-mcp-carb": { name: "California MCP + CARB Compliance", price_cents: 34900 },
|
||||
"state-dot-registration": { name: "State DOT Registration", price_cents: 14900 },
|
||||
"intrastate-authority": { name: "Intrastate Operating Authority", price_cents: 24900 },
|
||||
"osow-permit": { name: "Oversize/Overweight Permit", price_cents: 9900 },
|
||||
"state-trucking-bundle": { name: "State Compliance Bundle", price_cents: 59900 },
|
||||
};
|
||||
|
||||
export function formatUSD(cents: number): string {
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "Designate a process agent in all 48 states plus DC.";
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "Prepare for your 18-month FMCSA safety audit.";
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "Consortium enrollment, written policy, and DER designation.
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "MCS-150 + BOC-3 + UCR + Drug & Alcohol + Audit Prep.";
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "Register a new USDOT number with FMCSA.";
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "Apply for common or contract carrier operating authority.";
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "FMCSA biennial update of company profile, fleet size, and m
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ const description = "Unified Carrier Registration for interstate carriers.";
|
|||
<Wizard service_slug={slug} steps={steps ?? ["entity", "review", "payment"]} title={meta?.name ?? slug} />
|
||||
</main>
|
||||
</Base>
|
||||
|
||||
<style>
|
||||
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
.pw-order-intro { margin-bottom: 1.5rem; }
|
||||
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
||||
.pw-price { font-size: 1.5rem; font-weight: 700; color: var(--pw-green, #059669); margin: 0 0 0.75rem; }
|
||||
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue