coulomb-social/docs/bubble-inventory/2026-08-12-surface-inventory.md
tegwick b773ae885f Map live Bubble coulomb.social capabilities and features
Hierarchical capability/feature tree from Bubble client packages and design
extract: spaces/pages/chunks, Abstractor/Visual/Title, social, ventures,
challenges, monetization; tagged against stage-1 rebuild cut.
2026-08-12 18:46:42 +02:00

186 lines
8.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bubble surface inventory — 2026-08-12
| Field | Value |
|-------|--------|
| Workplan | CSOC-WP-0001-T01 |
| Live product host | `https://coulomb.social` (Bubble) |
| Rebuild host | `https://app.coulomb.social` (Railiance) |
| Sources | Public HTTP, Bubble `/api/1.1/meta`, design extract 2026-08-09, INTENT/SEO copy |
| Not available this pass | Bubble editor access, Data API types (empty public meta), production DB export |
## 1. Platform identity
| Item | Value | Provenance |
|------|--------|------------|
| Bubble appname | `coulomb` | `GET /api/1.1/meta``app_data.appname` |
| Domain | `coulomb.social` | meta + DNS |
| App version (live) | `live` | meta `app_data.app_version` |
| CDN / file host | `13a55be71f3a6a4c9ea356833df823c4.cdn.bubble.io` | HTML + SEO image URLs |
| Development path | `/version-test/` (robots Disallow) | `robots.txt`, HTTP 200 |
| Public Data API types | **empty** (`types: {}`, no get/post) | meta 2026-08-12 — API not exposed for inventory |
```json
{
"appname": "coulomb",
"app_version": "live",
"domain": "coulomb.social",
"types": {},
"get": [],
"post": []
}
```
**Implication:** lossless data inventory requires Bubble **editor export** or an
authenticated admin path — not the public Data API.
## 2. Product intent (marketing surface)
From Open Graph / SEO extract (`docs/design-extract/coulomb-social-seo.json`):
> A tool to brainstorm, discuss, refine implement and promote ideas.
> A social network for building stuff and influencing how stuff is built.
> A marketplace for challenges, methods and solutions.
> A platform to monetize curiosity.
Brand title variants seen: **Research \| Coulomb**, **Index \| Coulomb**,
**An Ideas Come To Life Community!**, **Coulomb Social**.
## 3. Public / semi-public pages (HTTP probe 2026-08-12)
| Path | HTTP | Title / notes |
|------|------|----------------|
| `/` | 200 | Index \| Coulomb — main entry (Bubble SPA shell ~17KB HTML) |
| `/vw_pages` | 200 | Research \| Coulomb — primary authenticated content surface (design extract probe) |
| `/version-test` | 200 | Index \| Coulomb — Bubble development version |
| `/reset_pw` | 200 | Reset password \| Coulomb — Bubble built-in auth recovery |
| `/login`, `/signup`, `/spaces`, … | 404 | No conventional REST-style routes; Bubble uses app pages / params |
| `/api/1.1/meta` | 200 | App identity only; no types |
| `/robots.txt` | 200 | Disallows `/version-test/` |
Bubble routes content via internal page names and `pg_chunk/<id>` URLs rather
than clean public paths. Design extract crawled **7 routes** (index + 6
`pg_chunk/*` pages) under an authenticated Playwright session
(`docs/design-extract/PROVENANCE.md`).
### Design-extract routes (authenticated crawl)
| Route | Role (inferred) |
|-------|-----------------|
| `/` | Landing / index shell |
| `/pg_chunk/1767965374100x901547861536145400` | In-app content chunk (Research family) |
| `/pg_chunk/1784305925912x322414739506593800` | content chunk |
| `/pg_chunk/1784904857383x503270614975381500` | content chunk |
| `/pg_chunk/1785501127011x363256181345746940` | content chunk |
| `/pg_chunk/1785501151364x921456713843343400` | content chunk |
| `/pg_chunk/1786106348475x662489469743530000` | content chunk (+ spacing token delta) |
Session probe documented as **`/vw_pages`** titled **Research \| Coulomb**.
**Gap:** human-readable Bubble **page names** (editor “Pages” list) and full
navigation graph are not in the extract artefacts — only token diffs per
chunk URL. Next inventory pass should export page list from Bubble editor.
## 4. UI surfaces and components (from design extract)
| Signal | Observation | Rebuild mapping |
|--------|-------------|-----------------|
| Primary surface | Research / pages workspace | Space detail + markdown pages (ADR-0002) |
| CTA verbs | content, favorite, format, filter, add, note | Feature candidates for cut (T03) |
| Material icons | content_copy, favorite_border, filter_list, add_circle_outline, note_alt, … | App chrome icons |
| Forms | 10 textareas, 6 inputs in crawl sample | Authoring / filters |
| Stack signal | Bubble (+ webflow heuristic noise) | Rebuild is Django, not Bubble |
| Client libs in page | `marked`, `highlight.js`, `clipboard.min.js` | Markdown-oriented UX already present in Bubble |
Visual system is fully captured under `docs/design-extract/` (tokens, DESIGN.md,
preview). **Do not re-extract for inventory** unless pages change materially.
## 5. Content model hypothesis (spaces / pages → rebuild)
Prefer **spaces / pages / markdown-shaped content** for migration (workplan
guidance + ADR-0002).
| Bubble concept (hypothesized) | Evidence | Rebuild target |
|-------------------------------|----------|----------------|
| Research / `vw_pages` workspace | Title, extract probe | `Space` + `pages/*.md` in Forgejo |
| Page / chunk (`pg_chunk` ids) | 6 chunk URLs in extract | One markdown file per page slug under `content_root` |
| Rich text / markdown rendering | `marked` + highlight.js on live HTML | CommonMark + sanitized HTML in app |
| Favorites / likes | CTA verb counts | Later social feature; not required for content MVP |
| Filters / lists | filter CTA | Space list filters later |
| Binary assets | Bubble CDN file URLs | `assets/` in Forgejo repo or object store later |
| Users / members | Bubble account system + reset_pw | NetKingdom OIDC Members (done path) |
| Tenancy | Single Coulomb community today | `tenant:coulomb` instance |
**Confidence:** medium for “Research pages ≈ space content”; **low** for full
data-type graph until editor export.
## 6. Workflows (partial)
| Workflow area | Status | Notes |
|---------------|--------|--------|
| Member signup / login | Live on Bubble | Rebuild uses NetKingdom; Case B residual CSOC-IN-0001 |
| Password reset | `/reset_pw` | Platform-owned on rebuild |
| Page view / research | `/vw_pages` | Core product path |
| Content create/edit | Inferred from textareas + content CTAs | Rebuild: edit in Forgejo (T05 path) |
| Marketplace matching | Marketing claim only | **Feature-cut candidate** (T03) |
| Monetization | Marketing claim only | Out of v1 unless T03 expands |
Backend workflows (API workflows, backend triggers) are **not** inventoriable
without Bubble editor or API workflow listing.
## 7. Integrations and external services
| Service | Role | Rebuild ownership |
|---------|------|-------------------|
| Bubble.io hosting | App runtime, DB, CDN | Exit target |
| `cdn.bubble.io` | Images / static files | Migrate assets off CDN at cutover |
| Cloudflare (on Bubble CDN path) | Image resize (`cdn-cgi/image`) | Not required on rebuild |
| highlight.js (cdnjs) | Code block styling | Optional in app CSS |
| marked (jsDelivr) | Client markdown | Server-side markdown in Django instead |
| clipboard.js (Bubble CDN file) | Copy UX | Optional |
| (unknown) email provider | Bubble account mail | NetKingdom mail path for registration |
| (unknown) payment | Monetization claim | Not observed publicly |
## 8. Data types (blocked)
Public meta returned **no** `types`. Expected classes (to confirm on export):
- User / User profile
- Space / Project / Group (name TBD)
- Page / Chunk / Document
- Favorite / Follow / Membership
- Challenge / Method / Solution (marketplace — optional)
- Message / Comment (if present)
- File / Image references
**T02** owns dump + mapping once export is available.
## 9. Inventory completeness
| Area | Completeness | Next action |
|------|--------------|-------------|
| Public hosts & meta | high | refresh if domain changes |
| Visual design system | high | already in `docs/design-extract/` |
| Named Bubble pages list | low | editor screenshot/export |
| Workflows | low | editor Backend workflows list |
| Data types & fields | none public | Bubble CSV/JSON export or API key |
| Content corpus size | unknown | export pages → markdown rehearsal |
| Member count / PII volume | unknown | export under privacy rules |
## 10. Priority order for migration (recommended)
Aligned with **stage-1 cut** (`docs/capability/stage-1-cutover.md`):
1. **Members** → NetKingdom JIT / assisted transfer (no Bubble passwords)
2. **Spaces + pages** (Title, Abstract, Visual + markdown body) → app metadata + Forgejo
3. **Page copy / transfer** support data as needed
4. **Memberships** beyond tenant-wide defaults
5. **Favorites / marketplace / monetization** → later (not stage 1)
6. **Bubble workflows** → rewrite only if product need returns (`out` for parity)
## Related
- Capability map (live product): `docs/capability/existing-bubble-capability-map.md`
- Parallel hosts: `docs/deploy.md`
- Content model: `docs/adr/ADR-0002-space-content-forgejo-markdown.md`
- Auth extract: `docs/design-extract-auth.md`
- Workplan: `workplans/CSOC-WP-0001-bubble-io-exit-assessment.md`