ActivityFox Dev

Project Tracker

Task checklist by person, decisions log, and naming conventions for the ActivityFox project.

ActivityFox — Project Tracker

Team

PersonRoleFocus
GregDeveloperFrontend, backend, infrastructure
NarayanaTech Clientn8n workflows, vendor data scraping, integrations
EricFounderProduct direction, business strategy, naming

Naming & Hierarchy

Platform Names

  • ActivityFox — the marketplace platform
  • CampScout — the consumer-facing planner/scheduler feature (formerly KAMp Planner)

Vendor → Activity → Session Hierarchy

%%{init: {'theme': 'neutral'}}%%
graph TD
    Org["Organisation<br/><i>e.g. City Sports Club Inc.</i>"]
    V1["Vendor Account<br/><i>e.g. John Smith (coach)</i>"]
    V2["Vendor Account<br/><i>e.g. Sarah Lee (manager)</i>"]
    A1["Activity<br/><i>After School Soccer</i>"]
    A2["Activity<br/><i>Weekend Art Workshop</i>"]
    S1["Session<br/><i>Term 1 Mon/Wed 3–5pm</i>"]
    S2["Session<br/><i>Term 1 Sat 9–11am</i>"]
    S3["Session<br/><i>Sunday 10am–12pm</i>"]

    Org -->|"has members"| V1
    Org -->|"has members"| V2
    V1 -->|"creates"| A1
    V2 -->|"creates"| A2
    A1 -->|"has sessions"| S1
    A1 -->|"has sessions"| S2
    A2 -->|"has sessions"| S3

    style Org fill:#e0e7ff,stroke:#4f46e5,color:#000
    style V1 fill:#fef3c7,stroke:#d97706,color:#000
    style V2 fill:#fef3c7,stroke:#d97706,color:#000
    style A1 fill:#d1fae5,stroke:#059669,color:#000
    style A2 fill:#d1fae5,stroke:#059669,color:#000
    style S1 fill:#fce7f3,stroke:#db2777,color:#000
    style S2 fill:#fce7f3,stroke:#db2777,color:#000
    style S3 fill:#fce7f3,stroke:#db2777,color:#000
LevelWhat it isExampleNotes
OrganisationLegal entity or businessCity Sports Club Inc.Optional — solo vendors don't need one
VendorPerson with an account who creates activitiesJohn SmithA vendor can belong to an organisation
ActivityA program/offeringAfter School SoccerHas category, age range, location, description
SessionA specific scheduled run of an activityTerm 1 Mon/Wed 3–5pmHas dates, times, capacity, price. Becomes a Sharetribe listing on publish

Purchase Model

  • Single purchase per session (not subscription)
  • Cart supports adding multiple sessions, checkout as one transaction
  • Each session booking = one Sharetribe transaction

Task Checklist

Greg (Developer)

StatusTaskPriorityNotes
:white_check_mark:Docs reorganisation (client/technical split + Mermaid)Done 2026-03-19
:black_square_button:Send Narayana n8n credentialsHighCoolify/Hetzner instance creds
:black_square_button:Send Narayana link to n8n public template examplesHighSee scraping resources below
:black_square_button:Cart functionality — single purchase flowHighDiscussed 2026-03-19 with Eric
:black_square_button:Organisation model — add org entity above vendorMediumNew Supabase table + API
:black_square_button:Session naming — finalise terminology (session vs class vs event)MediumAlign with Eric
:black_square_button:Sharetribe Console configurationMediumCategories, listing type, search schema
:black_square_button:Transaction process expansion (cancel/refund + EOI)MediumRequires flex-cli
:black_square_button:Port Replit design componentsLowVisual pass, Montserrat font, orange primary
:black_square_button:CampScout branding in planner/scheduler UILowRename from KAMp Planner

Narayana (Tech Client)

StatusTaskPriorityNotes
:black_square_button:Set up n8n scraping workflows for vendor/org discoveryHighWaiting on creds from Greg
:black_square_button:Identify target sources for activity vendor dataHighLocal directories, council sites, Google Maps
:black_square_button:n8n sync workflows (Supabase → Meilisearch)MediumFull sync, seat tracking, like counts
:black_square_button:Test scraping pipeline end-to-endMediumScrape → normalize → load to Supabase

Eric (Founder)

StatusTaskPriorityNotes
:black_square_button:Finalise session/class/event naming conventionHighWhat do parents call it?
:black_square_button:Confirm cart UX for single-purchase modelHighReview when Greg builds it
:black_square_button:Approve CampScout branding/positioningMediumConsumer-facing planner name
:black_square_button:Define organisation onboarding flowMediumHow do orgs claim their profile?
:black_square_button:Review vendor dashboard UXLowWhen Greg sends staging link

Scraping Resources for Narayana

n8n Credentials

Greg: Send Narayana the following:

  • n8n instance URL (Coolify/Hetzner)
  • Login credentials
  • Any API keys needed (Google Maps, etc.)

Example n8n Templates for Web Scraping

Public n8n templates useful for vendor/org scraping:

TemplateUse CaseLink
Web Scraping with HTTP RequestBasic page scrapingn8n.io/workflows/1385
Google Maps ScraperFind local businesses by category/arean8n.io/workflows/1980
Scrape & Store to DatabaseScrape → transform → insert to Postgres/Supabasen8n.io/workflows/1543
Pagination HandlerLoop through paginated result pagesn8n.io/workflows/1789

Custom Sharetribe n8n Templates (local)

Located at: ~/repos/n8n/n8n-nodes-sharetribe/workflows/public-templates/

Relevant for post-scrape workflows:

  • sync-new-users-to-mailchimp.json — pattern for syncing scraped vendors to external systems
  • auto-approve-users-by-type.json — auto-approve scraped vendor accounts

Suggested Scraping Pipeline

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    A["Source<br/>(Google Maps,<br/>council sites,<br/>directories)"] -->|"HTTP Request<br/>node"| B["Scrape<br/>Raw Data"]
    B -->|"Function<br/>node"| C["Normalize<br/>(name, category,<br/>address, contact)"]
    C -->|"Supabase<br/>node"| D["Insert to<br/>vendor_signups<br/>table"]
    D -->|"Manual review"| E["Approve &<br/>Create Vendor<br/>Account"]

Decisions Log (2026-03-19)

DecisionDetailDecided By
Platform nameActivityFoxEric
Planner nameCampScout (was KAMp Planner)Eric
Purchase modelSingle purchase per session, cart for multi-session checkoutEric + Greg
Vendor hierarchyOrganisation → Vendor → Activity → SessionAll
Vendor sourcingn8n scraping workflowsNarayana

On this page