From 68ddb5ca8c0760caf58701d3c7164a57debd9189 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Tue, 11 Nov 2025 21:10:35 +0000 Subject: [PATCH] Prettier format pending files --- client/pages/community/EthosGuild.tsx | 6 +- client/pages/docs/DocsCurriculumEthos.tsx | 19 +- client/pages/docs/DocsEditorsGuide.tsx | 127 +++++-- client/pages/docs/DocsGettingStarted.tsx | 277 +++++++++++--- client/pages/docs/DocsPartnerProposal.tsx | 105 +++++- client/pages/docs/DocsPlatform.tsx | 84 ++++- client/pages/docs/DocsTutorials.tsx | 354 +++++++++--------- .../InternalDocsDiscordAdmin.tsx | 78 +++- .../internal-docs/InternalDocsLayout.tsx | 137 +++++-- docs/DISCORD-ACTIVITY-DEPLOYMENT.md | 1 + docs/DISCORD-ADMIN-COMMANDS-REGISTRATION.md | 1 + docs/DISCORD-LINKING-FIXES-APPLIED.md | 1 + docs/DISCORD-LINKING-FLOW-ANALYSIS.md | 1 + docs/DISCORD-OAUTH-SETUP-VERIFICATION.md | 1 + docs/ETHOS_GUILD_PHASE1_COMPLETE.md | 72 ++-- docs/ETHOS_GUILD_PHASE2_NEXUS_INTEGRATION.md | 26 +- docs/ETHOS_GUILD_QUICK_START.md | 79 ++-- 17 files changed, 970 insertions(+), 399 deletions(-) diff --git a/client/pages/community/EthosGuild.tsx b/client/pages/community/EthosGuild.tsx index d8c98082..24c5222e 100644 --- a/client/pages/community/EthosGuild.tsx +++ b/client/pages/community/EthosGuild.tsx @@ -235,7 +235,11 @@ export default function EthosGuild() { {/* Tabs: Overview, Features, Curriculum, etc */}
- + Four progressive modules from foundational synthwave to advanced - composition and licensing. Content coming soon—led by the community - under AeThex Foundation. + composition and licensing. Content coming soon—led by the + community under AeThex Foundation. diff --git a/client/pages/docs/DocsEditorsGuide.tsx b/client/pages/docs/DocsEditorsGuide.tsx index 8ec44573..537ba111 100644 --- a/client/pages/docs/DocsEditorsGuide.tsx +++ b/client/pages/docs/DocsEditorsGuide.tsx @@ -1,5 +1,11 @@ import { Link } from "react-router-dom"; -import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; +import { + Card, + CardContent, + CardHeader, + CardTitle, + CardDescription, +} from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { GitBranch, ExternalLink, CheckCircle2 } from "lucide-react"; @@ -8,38 +14,87 @@ export default function DocsEditorsGuide() { return (
- Docs Editing -

Editing Public Docs (Builder → GitHub PR workflow)

-

This guide explains how staff can edit public documentation using Builder CMS and publish changes through a GitHub pull request. Internal operational docs must remain under /internal-docs and are not editable from the public docs workflow.

+ + Docs Editing + +

+ Editing Public Docs (Builder → GitHub PR workflow) +

+

+ This guide explains how staff can edit public documentation using + Builder CMS and publish changes through a GitHub pull request. + Internal operational docs must remain under{" "} + /internal-docs and are not editable from the public docs + workflow. +

Edit in Builder - Use the Builder (MCP) editor for content changes, layout tweaks, and page composition. + + Use the Builder (MCP) editor for content changes, layout tweaks, + and page composition. +
    -
  1. Open the app and click Open MCP popover (#open-mcp-popover).
  2. -
  3. Select Builder.io and edit the desired public doc entry (e.g. Getting Started, Platform).
  4. -
  5. Use the preview mode to validate across themes (Brand / Professional).
  6. -
  7. Save drafts and request review from the Docs team (assign reviewer in Builder).
  8. +
  9. + Open the app and click Open MCP popover ( + + #open-mcp-popover + + ). +
  10. +
  11. + Select Builder.io and edit the desired public + doc entry (e.g. Getting Started, Platform). +
  12. +
  13. + Use the preview mode to validate across themes (Brand / + Professional). +
  14. +
  15. + Save drafts and request review from the Docs team (assign + reviewer in Builder). +
- Export & Publish (GitHub PR) - After Builder review, export or commit changes to the docs repo and open a GitHub PR. + + Export & Publish (GitHub PR) + + + After Builder review, export or commit changes to the docs repo + and open a GitHub PR. +
    -
  1. From Builder, use the export feature to get Markdown/JSX content, or copy the updated component code.
  2. -
  3. Create a branch in the repository named docs/{`your-change`} and add the changes under code/client/pages/docs or code/docs.
  4. -
  5. Open a GitHub Pull Request describing the change, link the Builder draft, and assign the Docs reviewer team.
  6. -
  7. CI will run lint & build checks. After approval, merge to main and the docs will be deployed automatically.
  8. +
  9. + From Builder, use the export feature to get Markdown/JSX + content, or copy the updated component code. +
  10. +
  11. + Create a branch in the repository named{" "} + docs/{`your-change`} and add the changes under{" "} + code/client/pages/docs or code/docs. +
  12. +
  13. + Open a GitHub Pull Request describing the change, link the + Builder draft, and assign the Docs reviewer team. +
  14. +
  15. + CI will run lint & build checks. After approval, merge to main + and the docs will be deployed automatically. +
@@ -48,15 +103,34 @@ export default function DocsEditorsGuide() {
- Public docs policy & safety checks - Ensure no internal APIs or sensitive operational details are exposed publicly. + + Public docs policy & safety checks + + + Ensure no internal APIs or sensitive operational details are + exposed publicly. +
    -
  • Do not include internal admin endpoints, service role keys, or SQL migrations in public docs.
  • -
  • When in doubt, link to an internal doc (under /internal-docs) instead of copying operational procedures to public docs.
  • -
  • For partner-facing API documentation, create a gated partner docs area (contact the Docs lead).
  • -
  • Security checklist: remove any /api/discord/role-mappings, admin-register endpoints, or internal-only debug examples before publishing.
  • +
  • + Do not include internal admin endpoints, service role keys, or + SQL migrations in public docs. +
  • +
  • + When in doubt, link to an internal doc (under{" "} + /internal-docs) instead of copying operational + procedures to public docs. +
  • +
  • + For partner-facing API documentation, create a gated partner + docs area (contact the Docs lead). +
  • +
  • + Security checklist: remove any{" "} + /api/discord/role-mappings, admin-register + endpoints, or internal-only debug examples before publishing. +
@@ -70,13 +144,20 @@ export default function DocsEditorsGuide() {
  • Builder draft created and reviewed.
  • -
  • GitHub PR open with Builder draft link and reviewer assigned.
  • +
  • + GitHub PR open with Builder draft link and reviewer assigned. +
  • CI passes (lint, build).
  • Final review & merge by Docs lead.
diff --git a/client/pages/docs/DocsGettingStarted.tsx b/client/pages/docs/DocsGettingStarted.tsx index 710b0ca8..b646186d 100644 --- a/client/pages/docs/DocsGettingStarted.tsx +++ b/client/pages/docs/DocsGettingStarted.tsx @@ -213,28 +213,50 @@ export default function DocsGettingStarted() {
-

Create an AeThex account (full)

+

+ Create an AeThex account (full) +

- Step 1 — Choose sign-in method - AeThex supports Email/password, OAuth providers, and Web3 wallet sign-in. + + Step 1 — Choose sign-in method + + + AeThex supports Email/password, OAuth providers, and Web3 wallet + sign-in. +
  1. - Email sign-up: go to /signup, provide your email and a secure password. A verification email will be sent — click the link to confirm. + Email sign-up: go to{" "} + + /signup + + , provide your email and a secure password. A verification + email will be sent — click the link to confirm.
  2. - Google / GitHub: click the provider button on /login. The first time you sign in we'll create your account automatically using the provider email. + Google / GitHub: click the provider button on{" "} + + /login + + . The first time you sign in we'll create your account + automatically using the provider email.
  3. - Discord: use "Continue with Discord" on the login page. Existing accounts with the same email will be linked, otherwise a new account is created. For linking flows for existing staff, see the Dashboard → Connections. + Discord: use "Continue with Discord" on the login page. + Existing accounts with the same email will be linked, + otherwise a new account is created. For linking flows for + existing staff, see the Dashboard → Connections.
  4. - Web3 (optional): sign-in with Ethereum wallet via MetaMask — used only for wallet verification and account linking (no custody). + Web3 (optional): sign-in with Ethereum wallet via MetaMask — + used only for wallet verification and account linking (no + custody).
@@ -242,15 +264,38 @@ export default function DocsGettingStarted() { - Step 2 — Verify & complete profile - After initial login you'll be prompted to complete onboarding (profile, bio, primary arm). + + Step 2 — Verify & complete profile + + + After initial login you'll be prompted to complete onboarding + (profile, bio, primary arm). +
    -
  1. Check your email and follow the verification link (email provider flow).
  2. -
  3. Complete the onboarding steps including name, bio, interests, and primary arm selection.
  4. -
  5. Link any additional providers from Dashboard → Connections if needed.
  6. -
  7. Once finished click "Finish & Go to Dashboard" to start using the platform.
  8. +
  9. + Check your email and follow the verification link (email + provider flow). +
  10. +
  11. + Complete the onboarding steps including name, bio, interests, + and primary arm selection. +
  12. +
  13. + Link any additional providers from{" "} + + Dashboard → Connections + {" "} + if needed. +
  14. +
  15. + Once finished click "Finish & Go to Dashboard" to start using + the platform. +
@@ -259,29 +304,52 @@ export default function DocsGettingStarted() {
Notes & troubleshooting
    -
  • If an OAuth provider reports "account exists", sign in using the original provider and then link the new provider from Dashboard → Connections.
  • -
  • If you don't receive verification emails, check spam and ensure no company email filtering blocks support@aethex.tech.
  • -
  • Staff accounts (aethex.dev emails) may receive additional role access; contact HR if you expect staff access and it doesn't appear after login.
  • +
  • + If an OAuth provider reports "account exists", sign in using the + original provider and then link the new provider from Dashboard → + Connections. +
  • +
  • + If you don't receive verification emails, check spam and ensure no + company email filtering blocks support@aethex.tech. +
  • +
  • + Staff accounts (aethex.dev emails) may receive additional role + access; contact HR if you expect staff access and it doesn't + appear after login. +
-

Documentation categories

+

+ Documentation categories +

- Jump into the area you need most. Each category below is mirrored in Builder CMS for collaborative editing. + Jump into the area you need most. Each category below is mirrored in + Builder CMS for collaborative editing.

{docCategories.map((category) => ( - + -
+
{category.docs} docs
- {category.title} - {category.description} + + {category.title} + + + {category.description} +
    @@ -308,9 +376,16 @@ export default function DocsGettingStarted() { - {item.description} + + {item.description} + + ))} diff --git a/client/pages/docs/DocsPartnerProposal.tsx b/client/pages/docs/DocsPartnerProposal.tsx index 261aaab7..45151bde 100644 --- a/client/pages/docs/DocsPartnerProposal.tsx +++ b/client/pages/docs/DocsPartnerProposal.tsx @@ -1,4 +1,10 @@ -import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"; +import { + Card, + CardContent, + CardHeader, + CardTitle, + CardDescription, +} from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Link } from "react-router-dom"; import { Lock, Users, GitBranch } from "lucide-react"; @@ -7,22 +13,44 @@ export default function DocsPartnerProposal() { return (
    -

    Partner Docs & Gated Area Proposal

    -

    This document outlines a proposal for a gated partner documentation area, intended for partners and external integrators who require more detailed API and integration guides than the public docs expose. The gated area will be accessible to approved partners after authentication and agreement to terms.

    +

    + Partner Docs & Gated Area Proposal +

    +

    + This document outlines a proposal for a gated partner documentation + area, intended for partners and external integrators who require more + detailed API and integration guides than the public docs expose. The + gated area will be accessible to approved partners after + authentication and agreement to terms. +

    Scope - Content that belongs in the gated partner area + + Content that belongs in the gated partner area +
      -
    • Partner API endpoints and sample requests that include partner keys or elevated scopes.
    • -
    • Operational integration instructions (webhooks, role mappings, admin endpoints).
    • -
    • Deployment scripts, secrets management guidance (redacted for public), and verification flows.
    • -
    • Commercial and SLA information, onboarding steps for partner accounts.
    • +
    • + Partner API endpoints and sample requests that include partner + keys or elevated scopes. +
    • +
    • + Operational integration instructions (webhooks, role mappings, + admin endpoints). +
    • +
    • + Deployment scripts, secrets management guidance (redacted for + public), and verification flows. +
    • +
    • + Commercial and SLA information, onboarding steps for partner + accounts. +
    @@ -30,18 +58,34 @@ export default function DocsPartnerProposal() { Access & Workflow - How partners request and receive access + + How partners request and receive access +
    1. Partner signs NDA and registers interest via sales team.
    2. -
    3. Docs team creates a partner account and assigns a partner role in Supabase.
    4. -
    5. Partner gets access to the gated docs area (passwordless SSO or invite link).
    6. -
    7. Partner changes and feedback are managed via Support or a private Builder space.
    8. +
    9. + Docs team creates a partner account and assigns a partner role + in Supabase. +
    10. +
    11. + Partner gets access to the gated docs area (passwordless SSO or + invite link). +
    12. +
    13. + Partner changes and feedback are managed via Support or a + private Builder space. +
    @@ -52,13 +96,24 @@ export default function DocsPartnerProposal() { Security & Controls - Minimum controls for gated content + + Minimum controls for gated content +
      -
    • Partner accounts are RBAC-limited and issued short-lived credentials for API testing.
    • -
    • Audit logs for partner doc accesses are retained and reviewed monthly.
    • -
    • Automation prevents copying internal operational docs into public pages; editors must follow the PR checklist.
    • +
    • + Partner accounts are RBAC-limited and issued short-lived + credentials for API testing. +
    • +
    • + Audit logs for partner doc accesses are retained and reviewed + monthly. +
    • +
    • + Automation prevents copying internal operational docs into + public pages; editors must follow the PR checklist. +
    @@ -71,9 +126,19 @@ export default function DocsPartnerProposal() {
      -
    • Implement partner role and gated content routing (Auth + middleware).
    • -
    • Create Builder space for partner docs drafts and approval workflow.
    • -
    • Update CI to only publish public docs from code/client/pages/docs and prevent internal docs from being included.
    • +
    • + Implement partner role and gated content routing (Auth + + middleware). +
    • +
    • + Create Builder space for partner docs drafts and approval + workflow. +
    • +
    • + Update CI to only publish public docs from{" "} + code/client/pages/docs and prevent internal docs + from being included. +
    diff --git a/client/pages/docs/DocsPlatform.tsx b/client/pages/docs/DocsPlatform.tsx index b1054dd6..b53be9f8 100644 --- a/client/pages/docs/DocsPlatform.tsx +++ b/client/pages/docs/DocsPlatform.tsx @@ -365,23 +365,47 @@ export default function DocsPlatform() {
    -

    Architecture overview

    +

    + Architecture overview +

    - AeThex is composed of a lightweight React + Vite frontend, a Node.js backend that - exposes API endpoints (under /api/*), and a Supabase-backed PostgreSQL - database. The system integrates several services: + AeThex is composed of a lightweight React + Vite frontend, a + Node.js backend that exposes API endpoints (under{" "} + /api/*), and a Supabase-backed PostgreSQL database. + The system integrates several services:

      -
    • Frontend: React + TypeScript, Docs and Internal hubs use a separate layout and access control.
    • -
    • Backend: Node/Express handlers for public APIs, Discord webhooks, and OAuth flows.
    • -
    • Database: Supabase (Postgres) stores user profiles, creator data, and operational tables. Migrations live under code/supabase/migrations.
    • -
    • Integrations: OAuth providers (Google, GitHub, Discord, Roblox), Discord bot for role mapping & verification, and optional Web3 wallet linking.
    • -
    • Docs & CMS: Public docs are rendered with DocsLayout and editable in Builder CMS (MCP). Internal docs live under /internal-docs and require authentication.
    • +
    • + Frontend: React + TypeScript, Docs and Internal + hubs use a separate layout and access control. +
    • +
    • + Backend: Node/Express handlers for public APIs, + Discord webhooks, and OAuth flows. +
    • +
    • + Database: Supabase (Postgres) stores user + profiles, creator data, and operational tables. Migrations live + under code/supabase/migrations. +
    • +
    • + Integrations: OAuth providers (Google, GitHub, + Discord, Roblox), Discord bot for role mapping & verification, + and optional Web3 wallet linking. +
    • +
    • + Docs & CMS: Public docs are rendered with + DocsLayout and editable in Builder CMS (MCP). Internal docs live + under /internal-docs and require authentication. +
    -

    This arrangement lets staff operate private operational processes while exposing curated platform docs publicly.

    +

    + This arrangement lets staff operate private operational processes + while exposing curated platform docs publicly. +

    @@ -390,16 +414,42 @@ export default function DocsPlatform() {
    -

    Common troubleshooting

    +

    + Common troubleshooting +

    -

    OAuth redirect issues

    -

    If an OAuth provider returns an invalid_redirect_uri error, verify that the callback URL configured in the provider matches the deployed app's API base (e.g. https://aethex.dev/api/discord/oauth/callback for Discord). For local development use the configured VITE_API_BASE when available.

    -

    Session/linking problems

    -

    If a linking flow (e.g. linking Discord) redirects to login or loses session, check cookie SameSite settings and ensure the redirect URI domain matches where cookies are set. Staff can consult internal docs under /internal-docs/onboarding for detailed diagnostic steps.

    -

    Missing emails

    -

    Verification and notification emails are sent from support@aethex.tech. If emails are not arriving, check spam filters and outbound SMTP logs (Hostinger) for delivery failures.

    +

    + OAuth redirect issues +

    +

    + If an OAuth provider returns an invalid_redirect_uri{" "} + error, verify that the callback URL configured in the provider + matches the deployed app's API base (e.g.{" "} + https://aethex.dev/api/discord/oauth/callback for + Discord). For local development use the configured VITE_API_BASE + when available. +

    +

    + Session/linking problems +

    +

    + If a linking flow (e.g. linking Discord) redirects to login or + loses session, check cookie SameSite settings and ensure the + redirect URI domain matches where cookies are set. Staff can + consult internal docs under /internal-docs/onboarding{" "} + for detailed diagnostic steps. +

    +

    + Missing emails +

    +

    + Verification and notification emails are sent from{" "} + support@aethex.tech. If emails are not arriving, + check spam filters and outbound SMTP logs (Hostinger) for delivery + failures. +

    diff --git a/client/pages/docs/DocsTutorials.tsx b/client/pages/docs/DocsTutorials.tsx index 5b312dcd..dc680113 100644 --- a/client/pages/docs/DocsTutorials.tsx +++ b/client/pages/docs/DocsTutorials.tsx @@ -225,192 +225,194 @@ export default function DocsTutorials() { return ( -
    - {/* Header */} -
    -

    - Documentation Tutorials -

    -

    - Step-by-step guides and interactive tutorials to help you master - AeThex -

    +
    + {/* Header */} +
    +

    + Documentation Tutorials +

    +

    + Step-by-step guides and interactive tutorials to help you master + AeThex +

    - {/* Filters */} -
    -
    -
    - - setSearchTerm(e.target.value)} - className="pl-10 bg-slate-800/50 border-slate-600 text-white" - /> + {/* Filters */} +
    +
    +
    + + setSearchTerm(e.target.value)} + className="pl-10 bg-slate-800/50 border-slate-600 text-white" + /> +
    +
    +
    + +
    -
    - - -
    -
    -
    - -
    - {/* Categories Sidebar */} -
    - - - - - Categories - - - - {categories.map((category) => { - const Icon = category.icon; - return ( - - ); - })} - -
    - {/* Tutorials Grid */} -
    -
    -

    - Showing {filteredTutorials.length} tutorials -

    -
    - -
    - {filteredTutorials.map((tutorial) => { - const TypeIcon = getTypeIcon(tutorial.type); - return ( - - -
    -
    -
    - - - {tutorial.category} - - - {tutorial.difficulty} - - {tutorial.isNew && ( - - New - - )} -
    - -

    - {tutorial.title} -

    - -

    - {tutorial.description} -

    - -
    -
    -
    - - {tutorial.duration} -
    -
    - - {tutorial.author} -
    -
    - - {tutorial.rating} -
    -
    - - {tutorial.views} -
    -
    - - {tutorial.likes} -
    -
    - - -
    -
    -
    -
    -
    - ); - })} -
    - - {filteredTutorials.length === 0 && ( +
    + {/* Categories Sidebar */} +
    - - -

    - No tutorials found -

    -

    - Try adjusting your search terms or filters to find what you're - looking for. -

    + + + + Categories + + + + {categories.map((category) => { + const Icon = category.icon; + return ( + + ); + })}
    - )} +
    + + {/* Tutorials Grid */} +
    +
    +

    + Showing {filteredTutorials.length} tutorials +

    +
    + +
    + {filteredTutorials.map((tutorial) => { + const TypeIcon = getTypeIcon(tutorial.type); + return ( + + +
    +
    +
    + + + {tutorial.category} + + + {tutorial.difficulty} + + {tutorial.isNew && ( + + New + + )} +
    + +

    + {tutorial.title} +

    + +

    + {tutorial.description} +

    + +
    +
    +
    + + {tutorial.duration} +
    +
    + + {tutorial.author} +
    +
    + + {tutorial.rating} +
    +
    + + {tutorial.views} +
    +
    + + {tutorial.likes} +
    +
    + + +
    +
    +
    +
    +
    + ); + })} +
    + + {filteredTutorials.length === 0 && ( + + + +

    + No tutorials found +

    +

    + Try adjusting your search terms or filters to find what + you're looking for. +

    +
    +
    + )} +
    -
    ); } diff --git a/client/pages/internal-docs/InternalDocsDiscordAdmin.tsx b/client/pages/internal-docs/InternalDocsDiscordAdmin.tsx index c7ab9a66..1f5cce47 100644 --- a/client/pages/internal-docs/InternalDocsDiscordAdmin.tsx +++ b/client/pages/internal-docs/InternalDocsDiscordAdmin.tsx @@ -3,31 +3,89 @@ import { Link } from "react-router-dom"; export default function InternalDocsDiscordAdmin() { return ( - +
    -

    This internal page aggregates operational references for Discord integrations, bot operations, and admin tasks. These resources are for staff only.

    +

    + This internal page aggregates operational references for Discord + integrations, bot operations, and admin tasks. These resources are for + staff only. +

    Operational docs

    Quick links

    - Reminder: Do not copy operational steps to public docs. Use the Builder → PR process for any partner-facing content and consult Security before publishing sensitive integration details. + Reminder: Do not copy operational steps to public + docs. Use the Builder → PR process for any partner-facing content and + consult Security before publishing sensitive integration details.
    diff --git a/client/pages/internal-docs/InternalDocsLayout.tsx b/client/pages/internal-docs/InternalDocsLayout.tsx index 831822c2..5efba125 100644 --- a/client/pages/internal-docs/InternalDocsLayout.tsx +++ b/client/pages/internal-docs/InternalDocsLayout.tsx @@ -154,25 +154,44 @@ interface InternalDocsLayoutProps { // Map routes -> source file path so "Edit this page" can link to the component in the repo const SOURCE_MAP: Record = { "/internal-docs": "code/client/pages/internal-docs/Space1Welcome.tsx", - "/internal-docs/axiom-model": "code/client/pages/internal-docs/Space1AxiomModel.tsx", - "/internal-docs/find-your-role": "code/client/pages/internal-docs/Space1FindYourRole.tsx", - "/internal-docs/code-of-conduct": "code/client/pages/internal-docs/Space2CodeOfConduct.tsx", - "/internal-docs/communication": "code/client/pages/internal-docs/Space2Communication.tsx", - "/internal-docs/meetings": "code/client/pages/internal-docs/Space2MeetingCadence.tsx", - "/internal-docs/brand": "code/client/pages/internal-docs/Space2BrandVoice.tsx", - "/internal-docs/tech-stack": "code/client/pages/internal-docs/Space2TechStack.tsx", - "/internal-docs/foundation-governance": "code/client/pages/internal-docs/Space3FoundationGovernance.tsx", - "/internal-docs/foundation-protocol": "code/client/pages/internal-docs/Space3OpenSourceProtocol.tsx", - "/internal-docs/foundation-programs": "code/client/pages/internal-docs/Space3CommunityPrograms.tsx", - "/internal-docs/corp-product": "code/client/pages/internal-docs/Space4ProductOps.tsx", - "/internal-docs/corp-blueprints": "code/client/pages/internal-docs/Space4CorpBlueprints.tsx", - "/internal-docs/corp-clients": "code/client/pages/internal-docs/Space4ClientOps.tsx", - "/internal-docs/corp-platform": "code/client/pages/internal-docs/Space4PlatformStrategy.tsx", - "/internal-docs/onboarding": "code/client/pages/internal-docs/Space5Onboarding.tsx", + "/internal-docs/axiom-model": + "code/client/pages/internal-docs/Space1AxiomModel.tsx", + "/internal-docs/find-your-role": + "code/client/pages/internal-docs/Space1FindYourRole.tsx", + "/internal-docs/code-of-conduct": + "code/client/pages/internal-docs/Space2CodeOfConduct.tsx", + "/internal-docs/communication": + "code/client/pages/internal-docs/Space2Communication.tsx", + "/internal-docs/meetings": + "code/client/pages/internal-docs/Space2MeetingCadence.tsx", + "/internal-docs/brand": + "code/client/pages/internal-docs/Space2BrandVoice.tsx", + "/internal-docs/tech-stack": + "code/client/pages/internal-docs/Space2TechStack.tsx", + "/internal-docs/foundation-governance": + "code/client/pages/internal-docs/Space3FoundationGovernance.tsx", + "/internal-docs/foundation-protocol": + "code/client/pages/internal-docs/Space3OpenSourceProtocol.tsx", + "/internal-docs/foundation-programs": + "code/client/pages/internal-docs/Space3CommunityPrograms.tsx", + "/internal-docs/corp-product": + "code/client/pages/internal-docs/Space4ProductOps.tsx", + "/internal-docs/corp-blueprints": + "code/client/pages/internal-docs/Space4CorpBlueprints.tsx", + "/internal-docs/corp-clients": + "code/client/pages/internal-docs/Space4ClientOps.tsx", + "/internal-docs/corp-platform": + "code/client/pages/internal-docs/Space4PlatformStrategy.tsx", + "/internal-docs/onboarding": + "code/client/pages/internal-docs/Space5Onboarding.tsx", "/internal-docs/finance": "code/client/pages/internal-docs/Space5Finance.tsx", }; -export default function InternalDocsLayout({ children, title, description }: InternalDocsLayoutProps) { +export default function InternalDocsLayout({ + children, + title, + description, +}: InternalDocsLayoutProps) { const { user, loading } = useAuth(); const [sidebarOpen, setSidebarOpen] = useState(false); const location = useLocation(); @@ -184,10 +203,12 @@ export default function InternalDocsLayout({ children, title, description }: Int if ((pre as HTMLElement).dataset.hasCopy === "true") return; (pre as HTMLElement).dataset.hasCopy = "true"; const btn = document.createElement("button"); - btn.className = "copy-code-btn absolute right-3 top-3 bg-slate-800/70 text-slate-200 text-xs px-2 py-1 rounded-md hover:bg-slate-800"; + btn.className = + "copy-code-btn absolute right-3 top-3 bg-slate-800/70 text-slate-200 text-xs px-2 py-1 rounded-md hover:bg-slate-800"; btn.innerText = "Copy"; btn.onclick = async () => { - const code = pre.querySelector("code")?.textContent || pre.textContent || ""; + const code = + pre.querySelector("code")?.textContent || pre.textContent || ""; try { await navigator.clipboard.writeText(code); btn.innerText = "Copied"; @@ -208,10 +229,14 @@ export default function InternalDocsLayout({ children, title, description }: Int container.querySelectorAll("h2, h3").forEach((el) => { if ((el as HTMLElement).querySelector(".heading-anchor")) return; const text = (el.textContent || "").trim(); - const id = text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, ""); + const id = text + .toLowerCase() + .replace(/[^a-z0-9]+/g, "-") + .replace(/(^-|-$)/g, ""); (el as HTMLElement).id = id; const anchor = document.createElement("a"); - anchor.className = "heading-anchor ml-2 text-slate-500 text-sm opacity-0 hover:opacity-100 transition-opacity"; + anchor.className = + "heading-anchor ml-2 text-slate-500 text-sm opacity-0 hover:opacity-100 transition-opacity"; anchor.href = `#${id}`; anchor.innerText = "#"; (el as HTMLElement).appendChild(anchor); @@ -225,7 +250,10 @@ export default function InternalDocsLayout({ children, title, description }: Int addCopyButtons(); addAnchors(); }); - obs.observe(document.querySelector(".internal-docs-content") || document.body, { childList: true, subtree: true }); + obs.observe( + document.querySelector(".internal-docs-content") || document.body, + { childList: true, subtree: true }, + ); return () => obs.disconnect(); }, []); @@ -266,7 +294,11 @@ export default function InternalDocsLayout({ children, title, description }: Int > {/* Header */}
    - setSidebarOpen(false)}> + setSidebarOpen(false)} + >
    Internal Hub
    @@ -274,7 +306,10 @@ export default function InternalDocsLayout({ children, title, description }: Int
    - + Back to Site @@ -287,8 +322,12 @@ export default function InternalDocsLayout({ children, title, description }: Int
    {space.emoji}
    -
    {space.title}
    -
    {space.description}
    +
    + {space.title} +
    +
    + {space.description} +
    @@ -299,11 +338,17 @@ export default function InternalDocsLayout({ children, title, description }: Int to={page.path} onClick={() => setSidebarOpen(false)} className={`block px-3 py-2 rounded-lg text-sm transition-all group ${ - isCurrentPage(page.path) ? "bg-blue-600 text-white font-medium" : "text-slate-400 hover:text-slate-200 hover:bg-slate-800" + isCurrentPage(page.path) + ? "bg-blue-600 text-white font-medium" + : "text-slate-400 hover:text-slate-200 hover:bg-slate-800" }`} >
    {page.title}
    - {page.description &&
    {page.description}
    } + {page.description && ( +
    + {page.description} +
    + )} ))}
    @@ -322,10 +367,20 @@ export default function InternalDocsLayout({ children, title, description }: Int
    {/* Mobile Header */}
    - - + ← Back
    @@ -335,29 +390,41 @@ export default function InternalDocsLayout({ children, title, description }: Int
    {title && (
    -

    {title}

    - {description &&

    {description}

    } +

    + {title} +

    + {description && ( +

    {description}

    + )}
    )}
    {editUrl && ( - + Edit this page )}
    -
    {children}
    +
    + {children} +
    {/* Footer */}

    - © 2025 AeThex. This is an internal operations hub. Information here is confidential and for authorized personnel only. + © 2025 AeThex. This is an internal operations hub. Information + here is confidential and for authorized personnel only.

    diff --git a/docs/DISCORD-ACTIVITY-DEPLOYMENT.md b/docs/DISCORD-ACTIVITY-DEPLOYMENT.md index 45432c66..1d98f8f0 100644 --- a/docs/DISCORD-ACTIVITY-DEPLOYMENT.md +++ b/docs/DISCORD-ACTIVITY-DEPLOYMENT.md @@ -1,4 +1,5 @@ + # Discord Activity Deployment Guide ## For Web-Based Development (No Terminal Access) diff --git a/docs/DISCORD-ADMIN-COMMANDS-REGISTRATION.md b/docs/DISCORD-ADMIN-COMMANDS-REGISTRATION.md index 3cd8a62a..f4f0123e 100644 --- a/docs/DISCORD-ADMIN-COMMANDS-REGISTRATION.md +++ b/docs/DISCORD-ADMIN-COMMANDS-REGISTRATION.md @@ -1,4 +1,5 @@ + # Discord Commands Registration - Admin Panel ## Overview diff --git a/docs/DISCORD-LINKING-FIXES-APPLIED.md b/docs/DISCORD-LINKING-FIXES-APPLIED.md index 90fd8dee..ebc5cfe5 100644 --- a/docs/DISCORD-LINKING-FIXES-APPLIED.md +++ b/docs/DISCORD-LINKING-FIXES-APPLIED.md @@ -1,4 +1,5 @@ + # Discord Linking Fixes - Summary of Changes ## Overview diff --git a/docs/DISCORD-LINKING-FLOW-ANALYSIS.md b/docs/DISCORD-LINKING-FLOW-ANALYSIS.md index 39728b42..b5f5bbd1 100644 --- a/docs/DISCORD-LINKING-FLOW-ANALYSIS.md +++ b/docs/DISCORD-LINKING-FLOW-ANALYSIS.md @@ -1,4 +1,5 @@ + # Discord Linking Flow - Complete Issue Analysis & Fix ## Current Broken Flows diff --git a/docs/DISCORD-OAUTH-SETUP-VERIFICATION.md b/docs/DISCORD-OAUTH-SETUP-VERIFICATION.md index cbacd412..7bd74806 100644 --- a/docs/DISCORD-OAUTH-SETUP-VERIFICATION.md +++ b/docs/DISCORD-OAUTH-SETUP-VERIFICATION.md @@ -1,4 +1,5 @@ + # Discord OAuth Setup Verification Checklist ## 🔴 CRITICAL: OAuth Redirect URI Registration diff --git a/docs/ETHOS_GUILD_PHASE1_COMPLETE.md b/docs/ETHOS_GUILD_PHASE1_COMPLETE.md index 311ae2c1..8ad933b2 100644 --- a/docs/ETHOS_GUILD_PHASE1_COMPLETE.md +++ b/docs/ETHOS_GUILD_PHASE1_COMPLETE.md @@ -13,18 +13,20 @@ ## Phase 1 Deliverables ### 1. ✅ Database Schema (Supabase Migration) + **File:** `code/supabase/migrations/20250206_add_ethos_guild.sql` **Tables Created:** -| Table | Purpose | Key Fields | -|-------|---------|-----------| -| `ethos_tracks` | Music & SFX assets uploaded by artists | user_id, title, genre[], file_url, license_type, bpm, download_count | -| `ethos_artist_profiles` | Extended artist profiles with skills & pricing | user_id, skills[], for_hire, bio, sample_price_track, sample_price_sfx, verified | -| `ethos_guild_members` | Guild membership tracking | user_id, role (member/curator/admin), joined_at | -| `ethos_licensing_agreements` | Commercial licensing contracts | track_id, licensee_id, license_type, agreement_url, approved, expires_at | +| Table | Purpose | Key Fields | +| ---------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------- | +| `ethos_tracks` | Music & SFX assets uploaded by artists | user_id, title, genre[], file_url, license_type, bpm, download_count | +| `ethos_artist_profiles` | Extended artist profiles with skills & pricing | user_id, skills[], for_hire, bio, sample_price_track, sample_price_sfx, verified | +| `ethos_guild_members` | Guild membership tracking | user_id, role (member/curator/admin), joined_at | +| `ethos_licensing_agreements` | Commercial licensing contracts | track_id, licensee_id, license_type, agreement_url, approved, expires_at | **Features:** + - Full RLS policies (row-level security) - Proper indexes for performance - Triggers for `updated_at` maintenance @@ -35,11 +37,13 @@ --- ### 2. ✅ Community Group Page + **File:** `code/client/pages/community/EthosGuild.tsx` **Route:** `/community/groups/ethos` **Features:** + - Synthwave-themed hero with neon pink/purple/cyan gradients - Guild mission and value propositions for three audiences: - Musicians & Producers @@ -55,6 +59,7 @@ --- ### 3. ✅ Curriculum Skeleton + **File:** `code/client/pages/docs/DocsCurriculumEthos.tsx` **Route:** `/docs/curriculum/ethos` @@ -62,6 +67,7 @@ **Structure:** 4 progressive modules 1. **Synthwave Foundations** (4 hrs) + - The Synthwave Sound - DAW Setup & Workflow - Synth Basics: Oscillators & Filters @@ -69,6 +75,7 @@ - Capstone: Your First Synthwave Track 2. **Game Audio & SFX Design** (5 hrs) + - SFX Categories for Games - Layering & Processing Techniques - Procedural Audio with SFX Tools @@ -77,6 +84,7 @@ - Capstone: Design an SFX Pack 3. **Composition & Scoring** (6 hrs) + - Music Theory Essentials - Writing Memorable Melodies - Arranging & Orchestration @@ -96,15 +104,18 @@ --- ### 4. ✅ App Routes & Navigation + **File:** `code/client/App.tsx` **Routes Added:** + ``` /community/groups/ethos → EthosGuild component /docs/curriculum/ethos → DocsCurriculumEthos component (wrapped in DocsLayout) ``` **Navigation Linkage:** + - Ethos Guild page links to curriculum: "Learn Music Production" - Curriculum page links back to guild: "Join the Guild" - Both pages link to NEXUS marketplace: "Browse Audio Services" @@ -153,24 +164,27 @@ LABS (Yellow) ### Licensing Model (The "Firewall") **Ecosystem License** (Non-Commercial, Free) + - Artists upload tracks to the library - AeThex community (GameForge, Foundation) use for free - Non-exclusive (artist can sell on Spotify, etc.) - Royalty-free for internal AeThex projects -- *Protects artists from exploitation* +- _Protects artists from exploitation_ **Commercial License** (Paid, For-Profit) + - CORP wants to use a track for client video/product - Artist must negotiate & sign separate contract - Via NEXUS marketplace: "Custom Track $500", "SFX Pack $150" - Manages payment & IP rights -- *Creates Funnel 3 (Talent Flywheel) revenue stream* +- _Creates Funnel 3 (Talent Flywheel) revenue stream_ --- ## What Happens Next: Phase 2 & 3 ### Phase 2: MVP Build (Q1 2025 - ~4 weeks) + **Goal:** Make Ethos operational - Track upload interface (MP3/WAV, metadata) @@ -182,12 +196,14 @@ LABS (Yellow) **Owner:** CTO/Engineering Team **Key Deliverables:** + - 4 API endpoints (tracks, artists, licensing) - 5 new pages (upload, library, artist profile, settings, licensing dashboard) - 6 reusable components (upload modal, track card, artist card, etc.) - Full error handling & validation ### Phase 3: Content & Community (Q1-Q2 2025) + **Goal:** Populate with founding artists and curriculum - Community writes music production curriculum @@ -199,6 +215,7 @@ LABS (Yellow) **Owner:** Community Team (Dylan & Foundation) **Key Actions:** + - Identify 5-10 founding artists to seed the guild - Schedule curriculum writing sprints - Create artist guidelines & COC @@ -211,12 +228,14 @@ LABS (Yellow) **Your Responsibility This Week:** 1. Draft **AeThex Ecosystem License** template + - Non-exclusive, royalty-free for AeThex internal use - Attribution requirements - IP ownership clarification - Term: perpetual or limited duration? 2. Draft **Commercial License Agreement** template + - One-time use, exclusive/non-exclusive options - Broadcast/sync/mechanical rights - Pricing negotiation guidance @@ -266,15 +285,15 @@ Phase 2 integration roadmap ## Metrics & Success Criteria (Phase 1) -| Metric | Target | Status | -|--------|--------|--------| -| Database migration created | ✅ Yes | DONE | -| Community group page live | ✅ Yes | DONE | -| Curriculum structure complete | ✅ Yes | DONE | -| Routes wired in App.tsx | ✅ Yes | DONE | -| Synthwave aesthetic implemented | ✅ Yes | DONE | -| Legal templates drafted | ⏳ Pending | CEO ownership | -| Phase 2 technical plan documented | ✅ Yes | DONE | +| Metric | Target | Status | +| --------------------------------- | ---------- | ------------- | +| Database migration created | ✅ Yes | DONE | +| Community group page live | ✅ Yes | DONE | +| Curriculum structure complete | ✅ Yes | DONE | +| Routes wired in App.tsx | ✅ Yes | DONE | +| Synthwave aesthetic implemented | ✅ Yes | DONE | +| Legal templates drafted | ⏳ Pending | CEO ownership | +| Phase 2 technical plan documented | ✅ Yes | DONE | --- @@ -283,17 +302,20 @@ Phase 2 integration roadmap ### Strategic Value 1. **Sound Brand Identity** + - Every AeThex game has "the sound of AeThex" - Synthwave aesthetic = competitive advantage - Professional quality, instantly recognizable 2. **Talent Pipeline** + - Foundation nurtures emerging musicians - NEXUS connects them to paid work - CORP profits from client projects - DEV-LINK gets cost-effective game audio 3. **Community Engagement** + - Attracts musicians, producers, sound designers - Mentorship program grows talent - Monthly events & spotlights build loyalty @@ -309,12 +331,14 @@ Phase 2 integration roadmap ## Known Limitations & Future Enhancements ### Phase 1 Limitations (By Design) + - No real user data in gallery (will populate in Phase 3) - Licensing workflow not fully operational (awaiting legal templates) - Curriculum content not written (community-driven in Phase 3) - No monetization or payment processing (Phase 2+) ### Future Enhancements (Post-Phase 3) + - Royalty tracking & payment automation - AI-powered track recommendations - Live jam sessions & collaboration tools @@ -326,13 +350,13 @@ Phase 2 integration roadmap ## Action Items Summary -| Owner | Task | Deadline | Status | -|-------|------|----------|--------| -| **CEO (You)** | Draft 3 legal templates (ecosystem, commercial, artist) | This week | ⏳ In progress | -| **CTO (Braden)** | Deploy Phase 1 database migration | This sprint | ✅ Ready | -| **CTO (Braden)** | Plan Phase 2 sprint (4 weeks, ~20 hrs) | Next week | Ready to schedule | -| **Community (Dylan)** | Identify founding artists | Next month | ⏳ Pending | -| **Community (Dylan)** | Schedule curriculum writing sprints | Next month | ⏳ Pending | +| Owner | Task | Deadline | Status | +| --------------------- | ------------------------------------------------------- | ----------- | ----------------- | +| **CEO (You)** | Draft 3 legal templates (ecosystem, commercial, artist) | This week | ⏳ In progress | +| **CTO (Braden)** | Deploy Phase 1 database migration | This sprint | ✅ Ready | +| **CTO (Braden)** | Plan Phase 2 sprint (4 weeks, ~20 hrs) | Next week | Ready to schedule | +| **Community (Dylan)** | Identify founding artists | Next month | ⏳ Pending | +| **Community (Dylan)** | Schedule curriculum writing sprints | Next month | ⏳ Pending | --- diff --git a/docs/ETHOS_GUILD_PHASE2_NEXUS_INTEGRATION.md b/docs/ETHOS_GUILD_PHASE2_NEXUS_INTEGRATION.md index 6be530cf..c0009e54 100644 --- a/docs/ETHOS_GUILD_PHASE2_NEXUS_INTEGRATION.md +++ b/docs/ETHOS_GUILD_PHASE2_NEXUS_INTEGRATION.md @@ -22,6 +22,7 @@ This document outlines the Phase 2 technical implementation plan for integrating **Technical Scope:** - **File Upload Component** + - Location: `code/client/components/ethos/TrackUploadModal.tsx` - Features: - Support MP3, WAV file formats @@ -31,6 +32,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - Storage: Supabase Storage (`ethos-tracks/{user_id}/{track_id}.{ext}`) - **Track Metadata Form** + - Location: `code/client/components/ethos/TrackMetadataForm.tsx` - Fields: - `title` (required, text) @@ -41,6 +43,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - `is_published` (optional, toggle) - **Track Library Page** + - Location: `code/client/pages/ethos/TrackLibrary.tsx` - Features: - Grid view of all published tracks @@ -67,6 +70,7 @@ This document outlines the Phase 2 technical implementation plan for integrating **Technical Scope:** - **Artist Profile Page** + - Location: `code/client/pages/ethos/ArtistProfile.tsx` - Route: `/ethos/artists/:userId` or `/passport/:username/ethos` - Displays: @@ -80,6 +84,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - CTA: "Contact Artist", "Hire for Project" - **Artist Settings Page** + - Location: `code/client/pages/ethos/ArtistSettings.tsx` - Route: `/ethos/settings` (authenticated) - Features: @@ -105,6 +110,7 @@ This document outlines the Phase 2 technical implementation plan for integrating **Technical Scope:** - **NEXUS Audio Category** + - New service category on `/nexus` - Display: Audio Production (alongside existing categories) - Filter options: @@ -114,6 +120,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - By rating: sort by downloads, artist rating - **Ethos Service Card** (in NEXUS grid) + - Artist name, avatar, verified badge - Sample pricing preview: "Custom Track $500 • SFX Pack $150" - Skills tags: [Synthwave] [SFX Design] [Electronic] @@ -122,6 +129,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - CTA: "View Portfolio" → `/ethos/artists/:userId` - **Integration Points** + - Location: `code/client/pages/Nexus.tsx` - Modify: - Add "Audio Production" filter/category button @@ -144,6 +152,7 @@ This document outlines the Phase 2 technical implementation plan for integrating **Technical Scope:** - **Contact Artist Flow** + - Location: `code/client/components/ethos/ContactArtistModal.tsx` - When user clicks "Contact Artist" on a track or profile: - Modal asks: "What's your project about?" @@ -154,6 +163,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - Email: Notify artist that someone wants to license their track - **Artist Licensing Dashboard** + - Location: `code/client/pages/ethos/LicensingDashboard.tsx` - Tab 1: "Pending Agreements" (awaiting response) - Card per agreement: licensee name, track, project desc, created date @@ -165,6 +175,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - Archive of declined agreements - **Approval Flow** + - Artist clicks "Review & Approve" - Modal shows: - Licensee info, project description @@ -185,11 +196,13 @@ This document outlines the Phase 2 technical implementation plan for integrating ## UI/UX Design Principles ### Color Palette + - Primary: Neon pink (#ec4899), purple (#a855f7), cyan (#06b6d4) - Synthwave aesthetic: dark backgrounds, glowing accents - Consistent with NEXUS (purple) and existing AeThex arms ### Components + - Reuse existing UI components (Button, Card, Badge, Input, Textarea) - Create new Ethos-specific components: - `TrackUploadModal.tsx` @@ -200,6 +213,7 @@ This document outlines the Phase 2 technical implementation plan for integrating - `LicensingAgreementCard.tsx` ### Navigation + - Add Ethos link to main nav: "Ethos Guild" - Link to: `/ethos` or `/community/groups/ethos` (Phase 1 page) - From Ethos Guild page, link to: @@ -212,6 +226,7 @@ This document outlines the Phase 2 technical implementation plan for integrating ## Database Queries & Indexing ### Optimized Queries + ```sql -- Get all published tracks (with artist info) SELECT t.*, p.full_name as artist_name, p.avatar_url @@ -241,6 +256,7 @@ ORDER BY la.created_at DESC; ``` ### Index Strategy + - `ethos_tracks`: index on (is_published, created_at), (user_id), (genre) - `ethos_artist_profiles`: index on (for_hire, verified) - `ethos_licensing_agreements`: index on (track_id, approved), (licensee_id) @@ -252,6 +268,7 @@ ORDER BY la.created_at DESC; ### Tracks API **POST /api/ethos/tracks** + ``` Headers: Authorization: Bearer Body: FormData { @@ -267,12 +284,14 @@ Response: { id, user_id, title, file_url, ... } ``` **GET /api/ethos/tracks** + ``` Query: ?genre=Synthwave&license_type=ecosystem&page=1&limit=20&sort=downloads Response: { tracks: [...], total, page, limit } ``` **PUT /api/ethos/tracks/:id** + ``` Headers: Authorization: Bearer Body: Partial track update (title, description, genre, license_type, is_published) @@ -280,6 +299,7 @@ Response: Updated track ``` **DELETE /api/ethos/tracks/:id** + ``` Headers: Authorization: Bearer Response: { success: true } @@ -288,17 +308,20 @@ Response: { success: true } ### Artists API **GET /api/ethos/artists** + ``` Query: ?for_hire=true&verified=true&page=1&limit=20&skills=Synthwave Response: { artists: [...], total } ``` **GET /api/ethos/artists/:userId** + ``` Response: { id, user_id, full_name, avatar_url, bio, skills, for_hire, pricing, stats } ``` **PUT /api/ethos/artists/:userId** + ``` Headers: Authorization: Bearer Body: { bio, skills, for_hire, portfolio_url, sample_price_track, ... } @@ -308,6 +331,7 @@ Response: Updated artist profile ### Licensing API **POST /api/ethos/licensing-agreements** + ``` Headers: Authorization: Bearer Body: { track_id, project_description } @@ -315,6 +339,7 @@ Response: { id, track_id, licensee_id, status: 'pending', ... } ``` **PUT /api/ethos/licensing-agreements/:id** + ``` Headers: Authorization: Bearer (artist only) Body: { approved: boolean, message?: string } @@ -403,4 +428,3 @@ Once Phase 2 MVP is live: - `code/supabase/migrations/20250206_add_ethos_guild.sql` - Database schema - `/community/groups/ethos` - Community group landing page - `/docs/curriculum/ethos` - Curriculum skeleton - diff --git a/docs/ETHOS_GUILD_QUICK_START.md b/docs/ETHOS_GUILD_QUICK_START.md index 9bf73813..dc974ffd 100644 --- a/docs/ETHOS_GUILD_QUICK_START.md +++ b/docs/ETHOS_GUILD_QUICK_START.md @@ -14,24 +14,24 @@ ### Public Pages (Live Now) -| Page | Route | Purpose | -|------|-------|---------| -| **Guild Community** | `/community/groups/ethos` | Overview, features, roadmap | -| **Curriculum** | `/docs/curriculum/ethos` | Learning path (content coming Phase 3) | +| Page | Route | Purpose | +| ------------------- | ------------------------- | -------------------------------------- | +| **Guild Community** | `/community/groups/ethos` | Overview, features, roadmap | +| **Curriculum** | `/docs/curriculum/ethos` | Learning path (content coming Phase 3) | ### Admin Pages (Phase 2) -| Page | Route | Purpose | -|------|-------|---------| -| Track Library | `/ethos/library` | Browse all published tracks | -| Artist Profiles | `/ethos/artists/:userId` | View artist portfolio | -| Artist Settings | `/ethos/settings` | Manage profile & pricing (authenticated) | -| Licensing Dashboard | `/ethos/licensing` | Manage commercial agreements (authenticated) | +| Page | Route | Purpose | +| ------------------- | ------------------------ | -------------------------------------------- | +| Track Library | `/ethos/library` | Browse all published tracks | +| Artist Profiles | `/ethos/artists/:userId` | View artist portfolio | +| Artist Settings | `/ethos/settings` | Manage profile & pricing (authenticated) | +| Licensing Dashboard | `/ethos/licensing` | Manage commercial agreements (authenticated) | ### Marketplace Integration (Phase 2) -| Page | Feature | Purpose | -|------|---------|---------| +| Page | Feature | Purpose | +| --------- | -------- | ---------------------------------------------- | | **NEXUS** | `/nexus` | "Audio Production" category with Ethos artists | --- @@ -39,9 +39,11 @@ ## 🗂️ What Was Built (Phase 1) ### 1. Database Schema ✅ + **File:** `code/supabase/migrations/20250206_add_ethos_guild.sql` 4 tables: + - `ethos_tracks` - Music & SFX files - `ethos_artist_profiles` - Artist info & pricing - `ethos_guild_members` - Membership tracking @@ -50,10 +52,12 @@ **Status:** Ready to deploy. Run migration on Supabase. ### 2. Community Page ✅ + **File:** `code/client/pages/community/EthosGuild.tsx` **Route:** `/community/groups/ethos` Features: + - Synthwave branding (neon pink/purple/cyan) - Mission statement & value props - 3 tabs: Overview, Features, Roadmap @@ -63,10 +67,12 @@ Features: **Status:** Live and public. Share with community. ### 3. Curriculum Page ✅ + **File:** `code/client/pages/docs/DocsCurriculumEthos.tsx` **Route:** `/docs/curriculum/ethos` 4 modules: + - Synthwave Foundations (4 hrs) - Game Audio & SFX Design (5 hrs) - Composition & Scoring (6 hrs) @@ -75,9 +81,11 @@ Features: **Status:** Skeleton ready. Content writing in Phase 3. ### 4. Routes & Navigation ✅ + **File:** `code/client/App.tsx` (updated) Routes added: + ``` /community/groups/ethos → EthosGuild /docs/curriculum/ethos → DocsCurriculumEthos (with DocsLayout) @@ -86,7 +94,9 @@ Routes added: **Status:** Wired and accessible. ### 5. Documentation ✅ + **Files:** + - `ETHOS_GUILD_PHASE1_COMPLETE.md` - Full Phase 1 summary - `ETHOS_GUILD_PHASE2_NEXUS_INTEGRATION.md` - Phase 2 technical plan - `ETHOS_GUILD_QUICK_START.md` - This guide @@ -133,22 +143,26 @@ LABS (Yellow) ### Tech Team (CTO) - 4 weeks, ~20 hours **Week 1:** APIs + database + - `POST /api/ethos/tracks` - Upload track - `GET /api/ethos/tracks` - List tracks - `GET /api/ethos/artists` - List artists - `POST /api/ethos/licensing-agreements` - Create licensing request **Week 2:** Upload UI + - `TrackUploadModal.tsx` - File upload + progress - `TrackMetadataForm.tsx` - Title, genre, license type, BPM, etc. - `code/pages/ethos/TrackLibrary.tsx` - Browse all tracks **Week 3:** Artist profiles + NEXUS + - `ArtistProfile.tsx` - View artist portfolio - `ArtistSettings.tsx` - Manage profile & pricing - Update `/nexus` to show "Audio Production" category **Week 4:** Licensing + testing + - `LicensingDashboard.tsx` - Manage agreements - Error handling & validation - Performance testing @@ -158,6 +172,7 @@ LABS (Yellow) ### CEO - This Week ⏳ **Draft 3 legal templates:** + 1. **Ecosystem License** - Free non-exclusive use (internal AeThex projects) 2. **Commercial License** - Paid (CORP client projects) 3. **Artist Agreement** - Rights, ownership, guidelines @@ -167,15 +182,18 @@ LABS (Yellow) ### Community Team (Dylan) - Phase 3 **Identify founding artists** + - 5-10 seed artists to launch with - Reach out & onboard to guild **Write curriculum** + - Schedule writing sprints - Covers: synthwave, SFX design, composition, licensing - Target: Live by Q2 2025 **Community management** + - Guild leadership roles (curator, admin) - Monthly spotlights & events - Artist guidelines & COC @@ -184,32 +202,35 @@ LABS (Yellow) ## 🚀 Launching Ethos (Timeline) -| Date | Phase | Milestone | -|------|-------|-----------| -| **This week** | Phase 1 → 2 | CEO approves legal templates | -| **Next week** | Phase 2 Start | CTO schedules 4-week sprint | -| **Week 1-4** | Phase 2 Build | API endpoints + upload UI | -| **Week 5** | Phase 2 QA | Testing & final polish | -| **Week 6** | Phase 2 Launch | MVP live, founding artists invited | -| **Month 2-3** | Phase 3 | Curriculum writing, community growth | +| Date | Phase | Milestone | +| ------------- | -------------- | ------------------------------------ | +| **This week** | Phase 1 → 2 | CEO approves legal templates | +| **Next week** | Phase 2 Start | CTO schedules 4-week sprint | +| **Week 1-4** | Phase 2 Build | API endpoints + upload UI | +| **Week 5** | Phase 2 QA | Testing & final polish | +| **Week 6** | Phase 2 Launch | MVP live, founding artists invited | +| **Month 2-3** | Phase 3 | Curriculum writing, community growth | --- ## 💡 Key Design Decisions ### Why Synthwave? + - '80s retro-futuristic aesthetic = AeThex brand - Neon pink, purple, cyan visuals - Instantly recognizable, culturally cool - Differentiates from other game studios ### Why Not a Separate Venture? + - Ethos is **for the ecosystem**, not profits alone - Foundation owns & nurtures it - Revenue flows back to CORP client work - Talent pipeline strengthens all arms ### Why NEXUS Integration? + - Makes artists discoverable across AeThex - Unifies creator economy (designers, devs, musicians) - Enables CORP to hire for commercial projects @@ -219,29 +240,32 @@ LABS (Yellow) ## 📊 Success Metrics (Phase 2+) -| Metric | Q1 2025 Target | Q2+ Target | -|--------|----------------|-----------| -| Guild members | 10 founding | 100+ active | -| Tracks uploaded | 50 | 500+ | -| Commercial licensing agreements | 2-3 | 20+ | -| CORP revenue from Ethos (licensing) | $5K | $50K+ | -| GameForge games using Ethos audio | 3-5 | 15+ | +| Metric | Q1 2025 Target | Q2+ Target | +| ----------------------------------- | -------------- | ----------- | +| Guild members | 10 founding | 100+ active | +| Tracks uploaded | 50 | 500+ | +| Commercial licensing agreements | 2-3 | 20+ | +| CORP revenue from Ethos (licensing) | $5K | $50K+ | +| GameForge games using Ethos audio | 3-5 | 15+ | --- ## 🔗 Quick Links **Documentation:** + - Phase 1 Summary: `code/docs/ETHOS_GUILD_PHASE1_COMPLETE.md` - Phase 2 Plan: `code/docs/ETHOS_GUILD_PHASE2_NEXUS_INTEGRATION.md` - Database: `code/supabase/migrations/20250206_add_ethos_guild.sql` **Code:** + - Community page: `code/client/pages/community/EthosGuild.tsx` - Curriculum page: `code/client/pages/docs/DocsCurriculumEthos.tsx` - Routes: `code/client/App.tsx` (search "ethos" or "EthosGuild") **Team Responsibilities:** + - **CEO:** Legal templates (this week) - **CTO:** Phase 2 sprint planning & build - **Community:** Founding artist outreach & curriculum @@ -258,6 +282,7 @@ A: Yes! The ecosystem license is non-exclusive. Artists can sell on Spotify, Ban **Q: How do artists make money?** A: Three ways: + 1. CORP hires them for commercial projects (via NEXUS) 2. Streaming revenue on other platforms 3. (Future) Royalty share on successful games using their music