Internal — Eyes Only — Do Not Share
Estate Audit & Operating Reference

Vivere Web Development

Screenshot & Report

Everything you have built, where it lives, how it gets updated, what it costs, what is exposed, and what to do when you start the next one. Produced from a six-agent read-only audit of the entire estate.

Prepared for: Joseph Sutliff · Vivere
Audit date: August 16, 2026  ·  Method: 6 parallel read-only agents · 23,846 files · 97 hostnames

78
Cloudflare Pages projects
97
live hostnames
~20
client relationships
32GB
total estate
2
copies · 0 offsite

Read this first. Three things matter more than everything else in this document:

  1. Your admin OS is on the public internet with its passwords inside it. vivian-admin.pages.dev serves the whole Vivian app with no Cloudflare Access, and both account credentials sit in plaintext in /vivian.js. Verified live. PARTLY FIXED Passwords removed and an origin gate committed (a3cc616) — but the app still renders on that ungated pages.dev origin. Closing it needs the Cloudflare dashboard.
  2. You have exactly one copy of everything. The backup script has run every 15 minutes for four months and done nothing — it exits successfully when the drive is missing. There is no cloud copy. FIXED Script repaired and now stale-based; T7 verified at 67,954 files / 32 GB. Now 2 copies — still no offsite.
  3. Nothing is leaking to the web. Every .env probe returned 404. Your exposure is on-disk and in git, not on the internet. That is a much better problem to have.

This page is a live snapshot, not a frozen report. The findings below are the audit as it stood on August 16, 2026 and are kept verbatim as the record. Anything remediated since carries a status chip like the ones above. Section 15 regenerates from disk on every run of Update-EstateIndex.ps1 — it always reflects the current state of every project, including ones created in any session since.

Where to start

01

What you've built

Every live site, what it is, and whether it's healthy.

02

Where it lives

The folder map, and which folder maps to which live URL.

03

How to update

Deploy procedures — and the one site you must never deploy directly.

04

Starting a new project

The checklist that prevents every problem in this report.

05

What's at risk

Exposed, unversioned, and unrebuildable.

06

The backup plan

Cloudflare R2 + restic. $0.15/month.

Contents

Part I — The Estate
In one line78 Cloudflare Pages projects across 97 hostnames. 91 return 200 with real content. Availability is not your problem — exposure is.

1. What you have built

You have built considerably more than a typical solo shop, and the scale is the first thing worth internalising. When this audit started, the working assumption was around 30 projects. The real number is 78 Pages projects serving 97 hostnames.

CategoryCountWhat it is
Live client production sites~15Real businesses with real customers — Mimi's, GVEC, The Yard, Jireh, SOL, Carniceria, TruVue, Top it off
Client reports & proposals~25Pitch decks, strategy reports, value reports — the sales engine
Review hubs & pilots~20Campaign reviews, SIGNAL pilots, showcase builds
Internal tools~10Vivian admin, playbooks, capability catalog, agent docs
Staging & placeholders~8Staging twins, intentional takedowns

Why you couldn't hold this in your head. That's not a failing — it's roughly 78 deployments built across two years while also running the client work. The problem this report solves isn't that you forgot; it's that nothing was enumerating it for you. That's now fixed, and §7 gives you the process so the next 78 stay documented.

2. Live client sites

Sec = security headers present: F X-Frame-Options · C X-Content-Type · R Referrer-Policy · H HSTS · P CSP.

SiteStatusSecNote
mimissweettreats.comHealthyFCRHPThe only fully-hardened site you own — and the best pipeline. Copy this everywhere.
gveventcenter.com200-CR--No HSTS/CSP/XFO. Staging twin is cannibalising its SEO.
theyardfuncenter.com200-CR--No HSTS/CSP/XFO.
jirehcafeandbakery.com200FCR--Git Provider = Yes — GitHub is in this deploy path. Folder idle 109 days.
soleverydaybs.com200FCRH-Missing only CSP. Deploy script omits .env from its exclude list.
vivereweb.com200FCR--Git Provider = Yes. 17 files uncommitted for a month.
carneceria-senora200FCR--Deploys raw from repo root — ships admin/, SETUP.md, node_modules/.
truvu-pilot200-CR--Live client site with an unversioned source folder.
true-nord-photography200FCRHPFull header set.
topitoffgj.comComing Soon-CR--2.7 KB holding page despite notes saying the build is live.
vivere-colorado200FCR--Trailer site. noindex deliberate until the name is final.
tentacle-tide200-CR--Void Tide β.

The header gap is one file repeated. Mimi's has a good _headers file; it was never copied to the other ~90 hosts. That's a single-file fix, not 90 separate problems.

3. Reports, pilots & internal tools

Around 45 further hosts return 200 with correct titles and a noindex tag — the bulk of your report and review-hub estate, working as intended. The seven correctly-protected ones (sol-network-report, vivere-team-strategy, vivere-ip-record, vivere-film-review, nord-soundlabs, mimis-recipe-engine, mimis-internal-wholesale) send both an X-Robots-Tag header and a meta tag. That's the pattern to copy.

4. Broken & orphaned

HostIssue
mimis-wholesale-pack404, 0 bytes — believed live, is not
mimis-sweet-treats-staging404 — staging for your flagship client is dead while prod is live
vivere-production-bible, gj-pro-gym, elswr-tattoo"Deployment Not Found"
staging-dev-client-tripodi0 bytes

Two live sites cannot be rebuilt. mimis-catering-expansion (311 KB, titled CONFIDENTIAL) and mimis-internal-wholesale are live with no local source folder. If Cloudflare lost them tomorrow they're gone. Fix: wrangler pages deployment list, download the latest, re-home the source — or delete the projects.

Part II — The System
In one lineCode lives in Vivere Clients\, content lives in Media Channels\, everything deploys with wrangler from your machine — and one site has a special pipeline you must never bypass.

5. Where everything lives

C:\Users\sutli\Desktop\Developer\ │ ├── Vivere Clients\ ← ALL CLIENT WORK (code + sites) │ ├── Mimis Sweet Treats\ location #1 · LIVE · own repo · BEST PIPELINE │ ├── Mimis at Roadhouse\ location #2 · in progress │ ├── Vivere Colorado Food Trailer\ trailer + catering · own repo │ ├── Delta Expansion 2026\ umbrella program: master report + research │ ├── Grand View Event Center\ GVEC · own repo │ ├── The Yard Family Fun Center\ own repo │ ├── Jireh Cafe and Bakery\ own repo · Git Provider = Yes │ ├── TruVue\ Proscapeco\ Torta Roofing\ Moore Racing\ … │ └── _AUDIT-2026-08-16\ ← this audit's source files │ ├── Vivere Internal\ ← THE AGENCY ITSELF │ ├── Vivere Web Site\ vivereweb.com working tree │ ├── Finances\ ⚠ contains real financial data │ └── vivere-estate-report\ ← this report │ ├── Media Channels\ ← CONTENT (social, video, campaigns) │ ├── Mimis Sweet Treats\ the live social pipeline │ ├── Mimis at Roadhouse\ Vivere Colorado\ Vivere\ GVEC\ … │ └── mimis-menu-boards\ ← physical menu-board system (shipped product)

The split to remember: Vivere Clients\<client>\ is the website and code. Media Channels\<client>\ is the content — social cards, videos, campaign scripts. They're separate on purpose. A client with both has a folder in each.

The one thing that confused everything: your entire home folder C:\Users\sutli used to be a git repo pointed at github.com/MIMITREAT/allbizco. That's why every Claude Code session was labelled "allbizco" and why git status showed thousands of unrelated files. Archived 2026-08-16 to _git-archive-allbizco-2026-08-16 — all 135 commits preserved, reversible with a rename.

6. How to update a site

The standard case — most projects

# from the folder that holds the site files npx wrangler pages deploy . --project-name <project> --branch main --commit-dirty=true

Project names do not match domains. The Yard's domain is theyardfuncenter.com but its project is the-yard-family-fun-center. Always verify:

npx wrangler pages project list

Mimi's Sweet Treats is different. Never deploy it directly. It has a build step that strips internal docs out of the public bundle. A raw wrangler pages deploy . from that repo root would publish _docs/, internal reports, and .env.

edit files .\build-dist.ps1 # builds dist/, fails on LEAK DETECTED .\deploy-staging.ps1 # master.mimis-sweet-treats.pages.dev review the staging URL .\deploy-prod.ps1 # www.mimissweettreats.com

Verifying a deploy

  1. Check the unique hash URL from the deploy output first — the alias can lag by a minute.
  2. Confirm real content, not just HTTP 200. A 200 can be a stale cache.
  3. Bust cache when rechecking: curl -s "https://…/?cb=$(date +%s)"

7. Starting a new project

This checklist prevents essentially every problem in this report. Follow it and the next 78 projects stay clean.

Part III — Risk
In one lineNothing leaks to the web. But an admin app is public with its passwords inside, several confidential reports are indexable, and 8 GB of active work has no version history at all.

8. What is exposed

HostWhat it isSeverity
vivian-admin.pages.devInternal admin OS — CRM, client milestones, calendar — no Cloudflare Access, plaintext credentials in /vivian.jsCritical
gvec-value-reportGVEC value & pricing in a live negotiation — missed in the Jul 18 takedownFixed 8/16
vivere-client-reportsSonora Market build report + competitive analysis; text says confidentialHigh
elswr-proposalClient proposal with pricing; still branded "Allbizco"High
vivere-agent-playbook142 KB of core internal operating IPHigh
grand-view-event-center-stagingAllow: / + sitemap pointing at production — actively harming a live client's SEOHigh
mimis-campaign-report · proscape-staging · wandell-racing-signalConfidential or unreleased client material, indexableMedium

Already fixed in this session: gvec-value-report taken offline — 59,556 bytes → 775, noindex set, zero pricing data exposed. The original was preserved to Grand View Event Center\_docs\recovered-reports\ first, because that project had no local source.

9. What has no history

Now that the home-directory repo is archived, these folders have no version control at all. No history, no rollback, no undo.

FolderSizeCode filesWhy it matters
Media Channels\ — entire tree2.5 GB153Mimi's live social pipeline runs from here
Horn Venues Marketing\3.4 GB147Largest unversioned client folder; live deliverable
Proof of concept\1.8 GB448Has a fake .git — no objects/. Looks versioned to every automated check. Highest code-file count you own.
Vivere Web Site\313 MB279Live agency site working tree
mimis-menu-boards\372 MB57Shipped physical product
TruVue\21 MB13Live client site. Cheapest win here — minutes of work.
Delta Expansion 2026\4.4 MB36Best size-to-value ratio in the list

10. Where the secrets are

The good news, verified empirically: nothing is reachable from the web. /.env returned 404 across four Pages hosts — Cloudflare doesn't serve dotfiles. Every dist/ output is clean. All 8 live client .env files are correctly gitignored. Your .gitignore discipline is sound.

Every leak found arrived by a different route:

WhatWhereAction
3 Google Cloud service-account keys, non-expiringTwo loose .json in Reports & Proposals\…\unsorted\, one pasted into a notes fileDelete in GCP IAM. Nothing uses them.
Clover private token + QuickBooks client secretCommitted and pushed to the Mimi's GitHub repo (private, not public)Rotate — needs Naomi
2 GitHub PATs + 4 Cloudflare tokens.claude/settings.local.json across 9 filesRevoke all 6
1 Cloudflare token identical across 7 projectsGVEC, Mimi's, SOL, Carniceria, Jireh, viverewebSplit into per-project scoped tokens

The structural cause worth remembering. .claude/settings.local.json stores approved Bash commands verbatim. Every curl you once approved with a token inline wrote that token permanently into the permission allowlist. Your approvals became a credential log. Nobody thinks of a settings file as a secret store — that's why it went unnoticed. Fixed 8/16: .claude/ added to 9 .gitignore files; The Yard's tracked copy untracked.

Part IV — Resilience
In one line32 GB, ~20 client relationships, every live site's source — on exactly one SSD. This is the largest risk in the audit and the cheapest to fix.

11. The backup plan

The backup you thought you had has been lying to you for four months. Run-T7-Backup.ps1 fires every 15 minutes. All 61 retained logs say the same 64 bytes: "T7 not detected on D:. Skipping this run." The scheduled task reports SUCCESS while doing nothing, because the script exit 0s on a missing drive.

Windows File History's catalog for that drive was last written 2026-04-16. There is no cloud copy. Developer\ is not in OneDrive or Dropbox. A drive failure today is a total business loss.

Why git is not the answer

Git is for source code — text where line-by-line history matters. Most of your estate is not that. 12 files exceed GitHub's 100 MiB hard block and can't be pushed at all. And binaries in git are irreversible: your own Ten4Funding is a 20.8 MB website with a 320.5 MB .git — 15× bloat, because binaries were committed and deleted. Deleting from git does not shrink git.

Use both: git for source and history, restic for survival.

The 3-2-1 rule, and where you fail it

3 copies · 2 media types · 1 offsite. You currently have 1 copy, 1 medium, 0 offsite.

12. Cloudflare R2 + restic — your chosen setup

Your dataset is ~15–18 GB deduped (41% of your content is a second or third copy of itself; restic's content-addressed dedupe collapses it). At R2's $0.015/GB:

LineCost
restic → Cloudflare R2, encrypted, versioned~$0.15/mo
Private GitHub repos for the 514 MB source tier$0
T7 external drive (owned) as fast local restore tier$0
Total~$0.15/mo

Why restic specifically: client-side AES-256 means Cloudflare holds ciphertext only and never sees your key. That makes it the one destination your .env files and credentials are allowed to go — never git, never Drive/OneDrive/Dropbox. Point-in-time snapshots are ransomware-resistant in a way sync services are not; sync propagates a delete or an encryption straight to the cloud. R2 also has permanently zero egress fees, so a full restore costs nothing.

Setup

# 1. install winget install restic.restic # 2. In Cloudflare dashboard: R2 → Create bucket → "vivere-backup" # Then R2 → Manage API Tokens → Create (Object Read & Write, that bucket only) # 3. environment (use your real values) setx RESTIC_REPOSITORY "s3:https://<ACCOUNT_ID>.r2.cloudflarestorage.com/vivere-backup" setx AWS_ACCESS_KEY_ID "<R2 access key>" setx AWS_SECRET_ACCESS_KEY "<R2 secret>" # 4. initialise — STORE THIS PASSWORD IN YOUR PASSWORD MANAGER FIRST restic init # 5. first backup restic backup "C:\Users\sutli\Desktop\Developer" ^ --exclude "**/node_modules" --exclude "**/dist" --exclude "**/.wrangler" ^ --exclude "**/*.mp4.tmp" --exclude "**/_git-archive-*" # 6. verify it actually restores restic snapshots restic restore latest --target "C:\restore-test" --include "*/Delta Expansion 2026/*"

Three things that void the entire plan if skipped:

  1. Store the restic password and R2 keys OUTSIDE the backup — password manager plus a printed offline copy. If the password only exists on C:, losing C: loses the backup. This single failure mode defeats everything above.
  2. Use a scoped R2 token limited to that one bucket. Malware on C: then can't erase your offsite history.
  3. Run the restore drill before deleting anything. Log it in RESTORE-DRILLS.md. If that file has no entry in 90 days, you don't have a backup — you have an assumption.

Also: BitLocker To Go on the T7, because it will carry every client .env and your SSH keys in plaintext otherwise. And dev-tools\android-keystore — two tiny files — must be in the backup and the password manager. Lose them and you can never update an already-published Android app.

13. Action list

Done in this session

This week

Soon

15. Live project index

Auto-generated from disk on 2026-08-16 at 21:02. 21 projects under version control, 15 without, 1 with a broken .git. 9 carrying uncommitted work (93 files), 4 checked out off the mainline branch.

Read the Uncommitted and Branch columns before deploying. wrangler pages deploy ships whatever is checked out on disk — not what is on the mainline branch. Uncommitted work exists in exactly one place and is not on any backup that runs from git.

Vivere Clients

ProjectVersion controlTrackedUncommittedBranchLive URLLast touched
_AUDIT-2026-08-16none2026-08-16
_BACKUPSnone2026-05-20
_capability-catalognone2026-08-08
_RECOVERED-ORPHAN-SITESrepo4cleanmaster2026-08-16
_templatesrepo25cleanmaster2026-08-16
Carniceria Senorarepo76cleandevcarneceria-senora.pages.dev2026-05-21
Crosspost videonone2026-07-12
Delta Expansion 2026repo55cleanmasterdelta-expansion-plan.pages.dev2026-08-16
GJ Pro Gymrepo71 filesmaster2026-06-08
Grand View Event Centerrepo355cleanlanding-redesign-2026-04-29gveventcenter.com2026-08-13
Horn Venues Marketingrepo191cleanmaster2026-08-16
Jireh Cafe and Bakeryrepo98cleanmainjirehcafeandbakery.com2026-04-29
Mimis at Roadhouserepo5cleanmastermaster.mimis-sweet-treats.pages.dev/roadhouse2026-08-16
Mimis Sweet Treatsrepo72549 filesmasterwww.mimissweettreats.com2026-08-16
Moore Racingrepo135 filesmaster2026-07-22
Proof of conceptFAKE .git2026-07-01
Proscapecorepo81cleanmasterproscape-quote-report.pages.dev2026-07-12
SOL Everyday Bullshitrepo131cleanmastersoleverydaybs.com2026-05-21
Ten4Funding (paused)repo343 filesadd-bg-video-navtenfourfunding.pages.dev2026-07-17
The Yard Family Fun Centerrepo2312 filesmastertheyardfuncenter.com2026-08-11
Top it off Smoothie Caferepo3622 filesmaintopitoffgj.com2026-06-29
Torta Roofingrepo22 filesmaster2026-08-16
TruVuerepo29cleanmastertruvu-pilot.pages.dev2026-08-16
Vivere Colorado Food Trailerrepo171 filesrebuild/foundationvivere-colorado.pages.dev2026-08-16
Wandell Racingrepo208 filesmasterwandel-et-engine.pages.dev2026-07-23

Media Channels

ProjectVersion controlTrackedUncommittedBranchLive URLLast touched
Cosmic Calmnone2026-06-17
Grand View Event Centernonegveventcenter.com2026-07-21
Hidden Livesnone2026-06-16
Mimis at Roadhousenonemaster.mimis-sweet-treats.pages.dev/roadhouse2026-08-13
Mimis Sweet Treatsnonewww.mimissweettreats.com2026-08-16
report-deploynone2026-06-27
SOL Everyday BSnone2026-06-23
Viverenone2026-07-12
Vivere Coloradonone2026-08-13
Wanderers of the Cosmosnone2026-06-17

Top level

ProjectVersion controlTrackedUncommittedBranchLive URLLast touched
mimis-menu-boardsrepo255cleanmastermimis-menu-boards.pages.dev2026-08-16
Vivere Internalnonevivereweb.com2026-08-16

16. Client handoff documents

One print-ready handover document per client site, generated from each live codebase: handoffs/

Each covers what the client owns, the file inventory, how the site is hosted today, how to take over the Cloudflare account, how to move to Netlify / Vercel / GitHub Pages / FTP instead, domain ownership, and what is not included. Open one and use Print or save as PDF.

The handoff index lists every client together — do not send that page to a client. Send each client only their own document.

6 of 10 sites use Pages Functions and are therefore not portable to a plain static host without rebuilding the server-side features. Each document says so per-site rather than giving the client a generic “upload it anywhere.”

Code archives are not published here. Cloudflare Pages caps a single file at 25 MiB and six archives exceed it (largest 422 MB). They sit in Vivere Internal\client-handoffs\public\ and are delivered to clients directly.

14. What is fine — don't spend effort here

Verification limits. Live/revoked status of each credential was not tested — testing requires transmitting it, which was deliberately not done. Treat all as live. Duplicate detection used size + file count, not content hashing — hash-verify before deleting anything. Binary formats (PDF/DOCX) were not scanned, and Reports & Proposals\…\unsorted\ is mostly PDFs and is exactly where the loose GCP keys surfaced — it deserves a manual pass.

Vivere Web Development — Screenshot & Report
Estate audit · August 16, 2026 · 6 parallel read-only agents · 23,846 files · 97 hostnames

Internal — eyes only. Contains security findings, credential locations, and client-confidential context. Do not distribute. Source detail: Vivere Clients\_AUDIT-2026-08-16\ (files 01–06).