OverviewThis WebsiteHome LabTrading BotEcosimThe NomadStonewell Free Clinic
Source Code

src/pages/projects/shuttle_bus.rs

use leptos::*;
use leptos_meta::{Meta, Title};

use super::data::ALL_PROJECTS;
use super::super::seo::Seo;

#[component]
pub fn ShuttleBus() -> impl IntoView {
    let project = ALL_PROJECTS
        .iter()
        .find(|p| p.slug == "bus-conversion")
        .unwrap();
    let skills_view = project
        .skills
        .iter()
        .map(|&s| view! { <li>{s}</li> })
        .collect::<Vec<_>>();

    view! {
        <Title text="The Nomad – Peter Pinto"/>
        <Meta name="description" content="Converting a 2018 Chevy Express 3500 shuttle bus into a fully off-grid mobile home and remote workspace powered by solar and Starlink."/>
        <Seo title="The Nomad – Peter Pinto" description="Converting a 2018 Chevy Express 3500 shuttle bus into a fully off-grid mobile home and remote workspace powered by solar and Starlink." path="/projects/bus-conversion"/>
        <div class="page">
            <span class="eyebrow">"Projects"</span>
            <h1>"The " <em style="font-style:italic; color: var(--accent)">"Nomad"</em></h1>
            <p class="lead">
                "A 2018 Chevy Express 3500 shuttle bus — bought from a community center at
                government auction — being converted into a fully off-grid mobile home and
                remote workspace. Solar power, running water, a Starlink uplink, and enough
                headroom to stand up."
            </p>

            <ul class="skills-list" style="margin-top: 1.5rem;">
                {skills_view}
            </ul>

            <hr class="divider"/>

            // ── Acquisition ────────────────────────────────────────
            <section class="project-section">
                <span class="eyebrow">"Acquisition"</span>
                <h2>"The Find"</h2>
                <p>
                    "The bus came up on GovDeals — a government surplus auction site where
                    municipalities, schools, and public agencies offload fleet vehicles. This
                    one had spent its life as a community center shuttle before the center
                    downsized and listed it. A 2018 Chevy Express 3500 on a cutaway chassis,
                    fourteen seats, clean drivetrain."
                </p>
                <p style="margin-top: 1rem;">
                    "Government auctions are worth watching for conversion vehicles. Fleet units
                    are maintained on schedule and the service history is often documented. This
                    one had some water intrusion at the rear wall — visible in the listing photos
                    if you knew what to look for — but the chassis and mechanicals were solid.
                    The water damage was a negotiating point, not a dealbreaker."
                </p>
                <div class="photo-grid">
                    <img src="/bus/IMG_20250828_153022_301.jpg" alt="Pickup day" loading="lazy"/>
                    <img src="/bus/IMG_20250828_153018_248.jpg" alt="Exterior inspection on pickup day" loading="lazy"/>
                </div>
                <div class="photo-grid photo-grid--single" style="margin-top: 0.625rem;">
                    <img src="/bus/IMG_20250828_152955_068.jpg" alt="Original 14-seat interior" loading="lazy"/>
                </div>
            </section>

            <hr class="divider"/>

            // ── Strip-Down ──────────────────────────────────────────
            <section class="project-section">
                <span class="eyebrow">"Phase 1"</span>
                <h2>"The Strip-Down"</h2>
                <p>
                    "The first task was clearing everything non-structural: all fourteen passenger
                    seats, the ceiling headliner, sidewall panels, original flooring, and most of
                    the factory wiring harness. This exposed the bare metal ribs of the body and
                    made the scope of the water damage clear."
                </p>
                <p style="margin-top: 1rem;">
                    "Water had entered through the rear wall seam and worked behind the lower
                    sidewall panels, soaking the original foam insulation and rotting a section
                    of the plywood subfloor beneath it. The damage was contained to the rear
                    quarter — structural ribs unaffected. All compromised material came out;
                    exposed metal surfaces were cleaned and treated before anything new went back in."
                </p>
                <div class="photo-grid">
                    <img src="/bus/IMG_20250907_180351_682.jpg" alt="Demolition underway" loading="lazy"/>
                    <img src="/bus/IMG_20250907_180402_373.jpg" alt="Panels and insulation stripped" loading="lazy"/>
                </div>
                <div class="photo-grid" style="margin-top: 0.625rem;">
                    <img src="/bus/IMG_20250909_191112_371.jpg" alt="Interior debris mid-strip" loading="lazy"/>
                    <img src="/bus/IMG_20250914_183854_459.jpg" alt="Continuing the teardown" loading="lazy"/>
                </div>
                <div class="photo-grid" style="margin-top: 0.625rem;">
                    <img src="/bus/IMG_20250914_183904_621.jpg" alt="Stripped frame and original wiring" loading="lazy"/>
                    <img src="/bus/IMG_20250925_174856_888.jpg" alt="Cleaning salvageable insulation outside" loading="lazy"/>
                </div>
            </section>

            <hr class="divider"/>

            // ── Weatherproofing ─────────────────────────────────────
            <section class="project-section">
                <span class="eyebrow">"Phase 2"</span>
                <h2>"Seal Everything"</h2>
                <p>
                    "Before anything new goes in, the exterior has to be watertight. The rear
                    window that had allowed water ingress was sealed permanently — glass removed,
                    frame cleaned back to bare metal, opening filled with a layered butyl and
                    EPDM system. All remaining window frames were resealed with fresh butyl tape
                    where the factory compound had aged out."
                </p>
                <p style="margin-top: 1rem;">
                    "The roof was inspected from above and found structurally sound but showing
                    UV oxidation and minor crazing in the factory coating. Dicor self-leveling
                    lap sealant was applied over all roof seams and penetrations. The four
                    existing roof vents were pulled, reseated on new butyl, and reinstalled."
                </p>
                <div class="photo-grid">
                    <img src="/bus/IMG_20250930_175458_230.jpg" alt="Bare interior after full strip" loading="lazy"/>
                    <img src="/bus/IMG_20250930_175506_278.jpg" alt="Rear section assessed" loading="lazy"/>
                </div>
                <div class="photo-grid" style="margin-top: 0.625rem;">
                    <img src="/bus/IMG_20251005_155458_477.jpg" alt="Rear window opening modification" loading="lazy"/>
                    <img src="/bus/IMG_20251009_183033_716.jpg" alt="Sealed rear window exterior" loading="lazy"/>
                </div>
                <div class="photo-grid" style="margin-top: 0.625rem;">
                    <img src="/bus/IMG_20251013_075645_156.jpg" alt="Exterior sealant application" loading="lazy"/>
                    <img src="/bus/IMG_20251013_075649_354.jpg" alt="Roof seam detail" loading="lazy"/>
                </div>
                <div class="photo-grid" style="margin-top: 0.625rem;">
                    <img src="/bus/IMG_20251019_150131_524.jpg" alt="Roof inspection from above" loading="lazy"/>
                    <img src="/bus/IMG_20251019_150148_363.jpg" alt="Exterior overview" loading="lazy"/>
                </div>
            </section>

            <hr class="divider"/>

            // ── Subfloor ────────────────────────────────────────────
            <section class="project-section">
                <span class="eyebrow">"Phase 3"</span>
                <h2>"Subfloor"</h2>
                <p>
                    "With the interior sealed and the metal substrate treated, the first
                    construction step was laying a new subfloor. AdvanTech panels — a
                    high-density engineered flooring board with a moisture-resistant binder —
                    were cut to fit the factory floor ribs and glued down. The result is
                    a flat, rigid working surface across the full length of the cabin that
                    won't move or squeak and won't fail if moisture finds it again."
                </p>
                <div class="photo-grid photo-grid--single" style="margin-top: 1.25rem;">
                    <img src="/bus/IMG_20251127_144525_173.jpg" alt="AdvanTech subfloor panels installed" loading="lazy"/>
                </div>
            </section>

            <hr class="divider"/>

            // ── Layout ──────────────────────────────────────────────
            <section class="project-section">
                <span class="eyebrow">"Planned Interior"</span>
                <h2>"Floor Plan"</h2>
                <p>
                    "The cabin runs roughly eleven feet from the cab divider to the rear wall —
                    enough for a complete living and working space without compromising on any
                    one zone. The layout divides into three areas:"
                </p>
                <ol class="project-steps">
                    <li>
                        <strong>"Rear — Sleeping"</strong>
                        " — A fixed queen platform spanning the full interior width, raised
                        eighteen inches for under-bed storage. A privacy curtain on a track
                        separates it from the rest of the cabin when closed."
                    </li>
                    <li>
                        <strong>"Mid — Kitchen & Seating"</strong>
                        " — Driver side: a compact galley with a stainless steel sink, 12V
                        compressor refrigerator, and a two-burner induction cooktop. Passenger
                        side: a bench dinette with a fold-flat table that seats two or converts
                        to an extra sleeping surface for guests."
                    </li>
                    <li>
                        <strong>"Forward — Office"</strong>
                        " — A standing-height desk built against the cab divider with monitor
                        arm and wall-mounted cable management. The goal is a workstation that
                        actually functions as one, not a surface to balance a laptop on."
                    </li>
                </ol>
                <p style="margin-top: 1rem;">
                    "Sanitation is a composting toilet in a small enclosed cabinet near the
                    entry door — no black tank, no dump station. A rear-bumper mounted outdoor
                    shower pulls from the fresh water system for a rinse after a hike."
                </p>
            </section>

            <hr class="divider"/>

            // ── Electrical ──────────────────────────────────────────
            <section class="project-section">
                <span class="eyebrow">"Electrical System"</span>
                <h2>"Power"</h2>
                <p>
                    "The electrical design targets full off-grid self-sufficiency for multiple
                    days of typical use — laptop, external monitor, lighting, refrigerator,
                    water pump, and device charging — without engine run time or a campground
                    hookup. The core components:"
                </p>
                <ol class="project-steps">
                    <li>
                        <strong>"600W Solar Array"</strong>
                        " — Three 200W rigid monocrystalline panels mounted flat on the roof,
                        wired in series-parallel to the charge controller. Sized to fully
                        recharge the bank within a reasonable window even under partial cloud
                        cover."
                    </li>
                    <li>
                        <strong>"300Ah LiFePO4 Battery Bank"</strong>
                        " — Two 150Ah lithium iron phosphate batteries in parallel at 12V,
                        giving roughly 3.6kWh of usable capacity at 80% depth of discharge.
                        LiFePO4 was chosen for its thermal stability, flat discharge curve,
                        and ten-year-plus cycle life."
                    </li>
                    <li>
                        <strong>"Victron SmartSolar MPPT 100/30"</strong>
                        " — Charge controller handling solar-to-battery conversion with
                        Bluetooth monitoring via the VictronConnect app."
                    </li>
                    <li>
                        <strong>"Victron Phoenix 2000W Inverter"</strong>
                        " — Pure sine wave output for AC loads. Handles the induction cooktop
                        in short bursts and runs office equipment without issue."
                    </li>
                    <li>
                        <strong>"30A Shore Power Inlet"</strong>
                        " — For campground hookups or driveway charging when solar isn't
                        sufficient. A DC-DC converter also tops up the house bank from the
                        alternator while underway."
                    </li>
                </ol>
                <p style="margin-top: 1rem;">
                    "All circuits run through a Blue Sea fuse block with labeled breakers.
                    A Victron BMV-712 battery monitor tracks state of charge, voltage, and
                    current draw in real time."
                </p>
            </section>

            <hr class="divider"/>

            // ── Connectivity ────────────────────────────────────────
            <section class="project-section">
                <span class="eyebrow">"Connectivity"</span>
                <h2>"Starlink"</h2>
                <p>
                    "The core motivation for this project was a space to live and work from
                    without putting work on hold. That requires real internet. A Starlink
                    flat-panel antenna will be roof-mounted on a low-profile tilt bracket,
                    with the router and power supply in a vented cabinet inside. The
                    flat-panel draws 50–75W in normal operation — well within what the
                    solar system can sustain indefinitely."
                </p>
                <p style="margin-top: 1rem;">
                    "The goal isn't to find cell signal in a parking lot. It's to park
                    somewhere genuinely remote — a national forest road, a high desert flat,
                    a mountain pull-off — and still close a pull request."
                </p>
            </section>
        </div>
    }
}