What we are building, what is committed for this quarter, and what we are exploring.
For agency directors and event teams both. No "coming soon." Three honest buckets — in flight, this quarter, exploring. If a commitment isn't backed by a published spec or a continuation-plan line, it sits in "exploring" with no promise. We will move things up as they ship. Agency-relevant work is in flight now: Stripe checkout for the Activation tier, the public API portal, and the image CDN behind festival-scale walls.
What is actively being built right now.
These four items are in active development this week. Each has a published spec or a tracked continuation-plan line. Expect movement on /changelog within the next month.
-
Stripe self-serve checkout
All paid plansAccepting payments for per-event purchases (Essential, Signature, Premier) and the Activation tier as a one-time payment. Webhook-driven subscription lifecycle, Customer Portal for self-serve plan changes. Phased rollout per the integration plan; Enterprise stays manual-quoted.
Source: STRIPE_INTEGRATION_PLAN.md
-
Public API endpoints portal
All plans (read access); writes require an API keyDeveloper-facing documentation portal for the existing Cloud Function callables plus the public webhook system that already ships. First pass covers events, photos, guests, webhooks, and admin endpoints — same content the embed and integration partners use today, just discoverable in one place.
Source: /api-docs (parallel)
-
Accessibility audit + WCAG 2.1 AA tightening
Whole platformTargeted fixes from a fresh Lighthouse + axe-core pass across the five most-indexed marketing pages plus the admin dashboard. Lifts the CI assertion from warn to error on the accessibility score and adds independent third-party audit kickoff to the trust center.
Source: CONTINUATION_PLAN.md §T0.4
-
External HTTP probes on status.fotowall.io
PublicWire UptimeRobot or Better Uptime (free tier) probes against app.fotowall.io, fotowall.io, /r.html (5-min HTTP 200) plus runHealthCheck (15-min). Replaces the inferred-status components removed in PR #69 with externally-verified signal.
Source: CONTINUATION_PLAN.md §T1.5
Committed for the next 90 days.
Tier label tells you the plan you need to be on. Some items are platform-wide (App Check, image CDN); others are tier-gated (custom apex domain, custom sending email). All are scoped against a spec — no aspirational pitches here.
-
Custom apex domain — Enterprise (Phase 2 subdomain)
Enterprise — available on requestphotos.your-company.com points at your Fotowall events instead of the wildcard subdomain. Per-tenant CNAME + cert provisioning. Enterprise-only — the $25K floor justifies the per-tenant provisioning + cert renewal ops.
Source: SUBDOMAIN_BUILD_SPEC.md §1
-
Custom sending email domain — Enterprise (Phase 3 subdomain)
Enterprise — available on requestLifecycle emails (welcome, first-event, pre-event, post-event, photo-approved) send from [email protected] instead of from the Fotowall domain. SPF/DKIM/DMARC handoff documented. Enterprise-only.
Source: SUBDOMAIN_BUILD_SPEC.md §1
-
App Check on every callable
Whole platform — security improvement, no user-facing changeCurrently every Cloud Function callable has App Check set to non-enforcing — any actor with a valid Firebase ID token can call any callable. App Check binds clients to known origins. Phased per-callable rollout behind a feature flag, 7-day telemetry per surface, then made required.
Source: CONTINUATION_PLAN.md §T1.2
-
Image transforms + CDN in front of photo bucket
Whole platform — performance + cost workCloud Function trigger on photo approval generates 3 sizes (480 thumb / 1080 wall / 1920 fullscreen) into the photo bucket. Signed Cloud CDN in front of the public bucket; admin / wall / gallery surfaces request the right size for their viewport. Cuts storage egress + cold-load latency for photo-wall TVs.
Source: CONTINUATION_PLAN.md §T2.5
-
Denormalized event counters + admin list virtualization
Whole platform — performance + cost workonPhotoWrite trigger maintains events/{id}.counts.{photos, approved, pending, guests} as a denormalized aggregate. Admin event-list switches to read the event doc only (vs N events × P photos per visit today). Pairs with .limit(50) + IntersectionObserver pagination on the event-list and tenants-list.
Source: CONTINUATION_PLAN.md §T2.1
-
Playwright e2e expansion (4 critical flows)
Whole platform — testing depthToday only 1 Playwright smoke. Unskip the happy-path spec, then add: superadmin tenant impersonation, gallery-password gate, guest delete via DSAR, bulk photo moderation. Today's 28-PR refactor + Phase 8 platform consolidation added enormous surface area with no e2e coverage.
Source: CONTINUATION_PLAN.md §T0.3
Things we have thought about. No commitment.
These get built when a customer (or a fundraising conversation) makes them worth the engineering. Phrasing is intentionally vague — we will not promise a quarter we cannot back. If one of these is critical for you, tell us — that is the trigger.
-
Native iOS + Android apps
No commitmentCapacitor 6 scaffold exists in mobile/ but the deeper question — whether a guest needs a native app to upload a photo when the QR-flow already works without one — is unresolved. Exploring. Trigger: enough Enterprise customers asking that the App Store presence matters more than the in-browser UX matters.
-
EU region (eur3) deployment for data residency
Enterprise — when an EU customer asksSeparate Firebase project at eur3 multi-region. Tenant-region selector at signup. Cloud Functions become region-aware via a thin router. Data never crosses regions for EU-flagged tenants. Triggered by the first serious EU customer in pipeline — not pre-built. We have a written plan answer for sales today.
-
SOC 2 Type I observation period kickoff
When fundraising calendar demands itAuditor selection (Vanta / Drata / Secureframe are the usual three), 3-month observation period, then attestation. Calendar-bound, not engineering-bound. Target window: aligned with fundraising calendar so the Type I report is in hand for a Series B conversation.
-
Customer-managed encryption keys (CMEK)
Enterprise — when a contract requires itEnterprise customers bring their own KMS key. Firestore + Storage + secrets encrypted with the customer key. Revocation = customer self-service offboarding. ~2 weeks of work; trigger is an Enterprise contract that explicitly requires it.
-
Native integrations (HubSpot, Salesforce, Mailchimp, Klaviyo)
When a customer asksEvery "coming-soon" badge on integration pages was removed in PR #79; HubSpot would land first (largest TAM intersection), then Salesforce, then Mailchimp + Klaviyo. Each is 1-2 weeks of engineering. Built when a customer asks during contract negotiation, not speculatively.
-
WordPress.org plugin submission
Distribution — when demand justifiesPlugin exists at wordpress-plugin/ and works (private beta — referenced from /integrations/wordpress). Submission to wordpress.org is a 2-8 week review window plus PNG screenshots + banner from the existing SVG sources. We will submit once we have a customer asking specifically for the wordpress.org listing.
-
Multi-region active-active photo bucket
Series B+ scaleUS + EU + APAC public buckets, GeoDNS routing, replication-lag tolerance baked into the SLO. Series B+ scale. Today's single-region GCS handles the load fine.
Tell us what is blocking you and we will tell you what we can commit to in writing.
We move items out of "exploring" when a paying customer makes the case. Especially on Enterprise — the $25K floor exists to fund per-tenant engineering work like custom domains, CMEK, EU residency. Talk to us.