import React, { useState, useMemo } from “react”;
import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from “recharts”;
import {
Search,
Rocket,
ShieldCheck,
ExternalLink,
Calendar,
Phone,
Mail,
Globe,
FileText,
Home,
Award,
Lock,
ChevronRight,
Zap,
Layout,
Clock
} from “lucide-react”;
/* ─── BRAND DESIGN TOKENS ─── */
const C = {
midnight: “#112030”,
amber: “#FF9900”,
amberHi: “#FFB740”,
cyan: “#00D2D3”,
white: “#FFFFFF”,
textMuted: “#9BADC4”,
divider: “rgba(255,255,255,0.1)”
};
/* ─── CALCULATOR DATA ─── */
const NBS = [
{ label: “South LA / Leimert Park”, hint: “Rising neighborhood”, rent: 1950, cost: 280, growth: 4.5 },
{ label: “Baldwin Hills / Crenshaw”, hint: “Views & high demand”, rent: 2200, cost: 288, growth: 4.8 },
{ label: “Inglewood / SoFi Area”, hint: “LA’s hottest zip codes”, rent: 2500, cost: 292, growth: 5.2 },
{ label: “West Adams / Jefferson Pk”, hint: “Rapid appreciation”, rent: 2900, cost: 312, growth: 5.0 },
{ label: “Compton / Watts”, hint: “Affordable building”, rent: 1800, cost: 275, growth: 4.2 },
];
const SIZES = [
{ label: “Studio”, sqft: 400, icon: “🛏️” },
{ label: “1 Bedroom”, sqft: 600, icon: “🏠” },
{ label: “2 Bedroom”, sqft: 850, icon: “🏘️” },
{ label: “3 Bedroom (ADU28)”, sqft: 1150, icon: “🏰” },
];
/* ─── FORMATTING ─── */
const fmt = (n) => “$” + Math.round(n).toLocaleString();
const fmtK = (n) => n >= 1000000 ? “$” + (n/1000000).toFixed(2) + “M” : “$” + Math.round(n/1000).toFixed(0) + “K”;
const yrs = (n) => n > 30 ? “30+ yrs” : n.toFixed(1) + ” yrs”;
const pct = (n) => n.toFixed(1) + “%”;
const CustomTooltip = ({ active, payload, label }) => {
if (!active || !payload || !payload.length) return null;
return (
{label}
{payload.map((p, i) => (
{p.name}: ${Math.abs(Math.round(p.value)).toLocaleString()}
))}
);
};
export default function App() {
const [nbIdx, setNbIdx] = useState(0);
const [sizeIdx, setSizeIdx] = useState(1);
const [financed, setFinanced] = useState(true);
const [downPct, setDownPct] = useState(30);
const [rentAdj, setRentAdj] = useState(0);
const [unlocked, setUnlocked] = useState(false);
const [fullName, setFullName] = useState(“”);
const [address, setAddress] = useState(“”);
const nb = NBS[nbIdx];
const size = SIZES[sizeIdx];
const rent = nb.rent + rentAdj;
const d = useMemo(() => {
const construction = size.sqft * nb.cost;
const soft = 33000;
const total = construction + soft;
const vac = 0.05;
const exp = 0.20;
const netMo = rent * (1 – vac) * (1 – exp);
const netYr = netMo * 12;
const cap = (netYr / total) * 100;
const payback = total / Math.max(netYr, 1);
const loan = total * ((100 – downPct) / 100);
const down = total – loan;
const r = 0.075 / 12;
const n = 240;
const debt = loan * (r * Math.pow(1+r,n)) / (Math.pow(1+r,n)-1);
const cfMo = netMo – debt;
const ret10 = (total * Math.pow(1 + nb.growth/100, 10)) + (netYr * 10);
const proj = Array.from({length: 11}, (_, yr) => ({
year: “Yr ” + yr,
“Property Value”: Math.round(total * Math.pow(1+nb.growth/100, yr)),
“Cumulative Income”: Math.round(netYr * yr),
}));
return { construction, soft, total, netMo, netYr, cap, payback, loan, down, debt, cfMo, ret10, proj };
}, [nbIdx, sizeIdx, financed, downPct, rent, nb, size]);
return (
{/* Navigation */}
{/* Hero Section */}
Strategic ADU Development
The Los Angeles ADU Master Guide.
We bridge the gap between complex City ordinances and your property potential with expert project management from start to finish.
{/* ─── SECTION 1: THE ROADMAP (Now at Top) ─── */}
The Methodology
Regulatory Roadmap
{[
{ step: “01”, title: “ZA Memo 143 Audit”, desc: “Technical zoning audit. Checking transit proximity for parking exemptions and verifying lot capacity for units up to 1,200 sq ft.”, color: “text-[#00D2D3]”, dot: “bg-[#00D2D3]” },
{ step: “02”, title: “LADBS Plan Check”, desc: “Preparation of Title Sheets and Plot Plans. We utilize LID Deferral Forms to bypass stormwater delays and secure permits faster.”, color: “text-[#FF9900]”, dot: “bg-[#FF9900]” },
{ step: “03”, title: “Construction Oversight”, desc: “Supervision of field milestones per IB P/BC 2023-150. Foundation, framing, and utility rough-ins managed for code precision.”, color: “text-white”, dot: “bg-white” },
{ step: “04”, title: “Certificate of Occupancy”, desc: “The final legal milestone. Securing your official CofO and transforming your project into a legal, income-generating asset.”, color: “text-[#00D2D3]”, dot: “bg-[#00D2D3]” }
].map((item, idx) => (
))}
{/* ─── SECTION 2: INTEGRATED VALUES ─── */}
Zoning Precision
Decoding ZA Memo 143 to maximize footprint and navigate setbacks without guesswork.
Permit Velocity
Leveraging the 60-day mandate and LID deferrals to accelerate your construction start date.
Turnkey Management
Direct oversight of LADBS field inspections through the final Certificate of Occupancy.
{/* ─── SECTION 3: STANDARD PLANS ─── */}
The Expert Shortcut
The LA Standard Plan Program
Featured Model: ADU28
1-story, 3 bedroom with mechanical room and custom options (1,149 sf). Skip the architecture wait—this plan is already pre-vetted for 2023 Residential Codes.
Browse All Approved Designs
{/* ─── SECTION 4: INCOME ESTIMATOR (Now at Bottom) ─── */}
Investment Analysis
ADU Income Estimator
Answer 3 questions to see the financial potential of your property.
{/* Controls Column */}
01 / Select Neighborhood
{NBS.map((n, i) => (
setNbIdx(i)} className={`w-full p-5 rounded-sm border transition text-left flex justify-between items-center ${nbIdx === i ? ‘bg-[#112030] border-[#FF9900]’ : ‘bg-white/5 border-transparent hover:border-white/10’}`}>
{fmt(n.rent)}
))}
02 / Select Configuration
{SIZES.map((s, i) => (
setSizeIdx(i)} className={`p-5 rounded-sm border transition text-center ${sizeIdx === i ? ‘bg-[#112030] border-[#00D2D3]’ : ‘bg-white/5 border-transparent hover:border-white/10’}`}>
{s.icon}
{s.label}
{s.sqft} SQ FT
))}
03 / Financing Method
setFinanced(true)} className={`flex-1 py-4 rounded-sm border text-xs font-bold uppercase tracking-widest transition ${financed ? ‘bg-white text-[#112030] border-white’ : ‘border-white/10 text-white’}`}>Loan
setFinanced(false)} className={`flex-1 py-4 rounded-sm border text-xs font-bold uppercase tracking-widest transition ${!financed ? ‘bg-white text-[#112030] border-white’ : ‘border-white/10 text-white’}`}>Cash
{financed && (
{[20, 25, 30, 40].map(p => (
setDownPct(p)} className={`py-2 rounded-sm border text-[10px] font-bold transition ${downPct === p ? ‘border-[#FF9900] bg-[#FF9900]/10 text-[#FF9900]’ : ‘border-white/5 text-[#9BADC4]’}`}>{p}%
))}
)}
{/* Results Column */}
{!unlocked ? (
) : (
Monthly Net
{fmt(d.netMo)}
10Yr Wealth
{fmtK(d.ret10)}
Wealth Potential Timeline
Financial Ledger
Total Project Cost
{fmt(d.total)}
Target Annual Rent
{fmt(rent * 12)}
{financed && (
Monthly Debt Service (7.5%)
({fmt(d.debt)})
)}
)}
{/* ─── SECTION 5: FINAL CTA ─── */}
Start Your Project
Let’s build your legacy.
Strategy Audit
Review property specifics and zoning constraints today.
{/* FOOTER */}
);
}