diff --git a/aethex-dev-docs.zip b/aethex-dev-docs.zip new file mode 100644 index 00000000..fa7cebf5 Binary files /dev/null and b/aethex-dev-docs.zip differ diff --git a/client/App.tsx b/client/App.tsx index 1547582c..2801331a 100644 --- a/client/App.tsx +++ b/client/App.tsx @@ -56,6 +56,11 @@ import GameJoltIntegration from "./pages/docs/integrations/GameJolt"; import ItchIoIntegration from "./pages/docs/integrations/ItchIo"; import DocsCurriculum from "./pages/docs/DocsCurriculum"; import DocsCurriculumEthos from "./pages/docs/DocsCurriculumEthos"; +import DocsLangOverview from "./pages/docs/lang/DocsLangOverview"; +import DocsLangQuickstart from "./pages/docs/lang/DocsLangQuickstart"; +import DocsLangSyntax from "./pages/docs/lang/DocsLangSyntax"; +import DocsLangCli from "./pages/docs/lang/DocsLangCli"; +import DocsLangExamples from "./pages/docs/lang/DocsLangExamples"; import EthosGuild from "./pages/community/EthosGuild"; import TrackLibrary from "./pages/ethos/TrackLibrary"; import ArtistProfile from "./pages/ethos/ArtistProfile"; @@ -179,6 +184,7 @@ import MarketplaceItemDetail from "./pages/dev-platform/MarketplaceItemDetail"; import CodeExamples from "./pages/dev-platform/CodeExamples"; import ExampleDetail from "./pages/dev-platform/ExampleDetail"; import DeveloperPlatform from "./pages/dev-platform/DeveloperPlatform"; +import AethexLang from "./pages/dev-platform/AethexLang"; const queryClient = new QueryClient(); @@ -663,6 +669,12 @@ const App = () => ( path="integrations/itchio" element={} /> + {/* AeThex Language Docs */} + } /> + } /> + } /> + } /> + } /> } /> } /> @@ -891,6 +903,7 @@ const App = () => ( } /> } /> } /> + } /> {/* Explicit 404 route for static hosting fallbacks */} } /> diff --git a/client/components/docs/DocsLayout.tsx b/client/components/docs/DocsLayout.tsx index 4ec7457b..3600ee0f 100644 --- a/client/components/docs/DocsLayout.tsx +++ b/client/components/docs/DocsLayout.tsx @@ -81,6 +81,12 @@ const docNavigation: DocNavItem[] = [ icon: , description: "Learning paths", }, + { + title: "AeThex Language", + path: "/docs/lang", + icon: , + description: "AeThex programming language", + }, ]; interface DocsLayoutProps { diff --git a/client/pages/dev-platform/AethexLang.tsx b/client/pages/dev-platform/AethexLang.tsx new file mode 100644 index 00000000..367a414e --- /dev/null +++ b/client/pages/dev-platform/AethexLang.tsx @@ -0,0 +1,436 @@ +import Layout from "@/components/Layout"; +import SEO from "@/components/SEO"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { Link } from "react-router-dom"; +import { + Package, + Shield, + Users, + Zap, + Copy, + CheckCircle2, + ArrowRight, + ExternalLink, + Github, + Terminal, + Code, + Lock, + Globe, + FileText, +} from "lucide-react"; +import { useState } from "react"; + +const PACKAGE_VERSION = "1.0.0"; + +const features = [ + { + icon: Users, + title: "Passport", + description: "Universal identity across platforms - authenticate users seamlessly on Roblox, web, and more", + color: "text-blue-500", + bgColor: "bg-blue-500/10", + }, + { + icon: Zap, + title: "DataSync", + description: "Cross-platform data synchronization for real-time state management", + color: "text-yellow-500", + bgColor: "bg-yellow-500/10", + }, + { + icon: Shield, + title: "SafeInput", + description: "PII detection and scrubbing - critical for CODEX and child safety compliance", + color: "text-green-500", + bgColor: "bg-green-500/10", + }, + { + icon: Lock, + title: "Compliance", + description: "Built-in COPPA/FERPA compliance checks with audit trail logging", + color: "text-purple-500", + bgColor: "bg-purple-500/10", + }, +]; + +const platforms = [ + { name: "Roblox", supported: true }, + { name: "UEFN", supported: true }, + { name: "Unity", supported: true }, + { name: "Web", supported: true }, + { name: "Node.js", supported: true }, +]; + +const codeExamples = { + passport: `const { Passport } = require('@aethex.os/core'); + +const passport = new Passport('user123', 'PlayerOne'); +await passport.verify(); +await passport.syncAcross(['roblox', 'web']);`, + safeinput: `const { SafeInput } = require('@aethex.os/core'); + +// Detect PII +const detected = SafeInput.detectPII('Call me at 555-1234'); +// Returns: ['phone'] + +// Scrub PII +const clean = SafeInput.scrub('My email is user@example.com'); +// Returns: 'My email is [EMAIL_REDACTED]' + +// Validate input +const result = SafeInput.validate('PlayerName123'); +if (result.valid) { + console.log('Safe to use'); +}`, + compliance: `const { Compliance } = require('@aethex.os/core'); + +// Age gate +if (Compliance.isCOPPACompliant(userAge)) { + // User is 13+ +} + +// Check data collection permission +if (Compliance.canCollectData(user)) { + // Safe to collect +} + +// Log compliance check for audit +Compliance.logCheck(userId, 'leaderboard_submission', true);`, + datasync: `const { DataSync } = require('@aethex.os/core'); + +// Sync data across platforms +await DataSync.sync({ + inventory: playerInventory, + progress: gameProgress +}, ['roblox', 'web']); + +// Pull data from specific platform +const data = await DataSync.pull(userId, 'roblox');`, +}; + +function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + + const handleCopy = async () => { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + + return ( + + ); +} + +function CodeBlock({ code, language = "javascript" }: { code: string; language?: string }) { + return ( +
+ +
+        {code}
+      
+
+ ); +} + +export default function AethexLang() { + return ( + + +
+ {/* Hero Section */} +
+
+ + v{PACKAGE_VERSION} + + + MIT License + +
+

+ @aethex.os/core +

+

+ AeThex Language Standard Library — Cross-platform utilities for authentication, + data sync, and compliance across the metaverse. +

+ + {/* Install Command */} +
+
+ + + npm install @aethex.os/core + + +
+
+ + +
+ + {/* Platform Support */} +
+

Works everywhere you build

+
+ {platforms.map((platform) => ( + + + {platform.name} + + ))} +
+
+ + {/* Features Grid */} +
+

Core Modules

+

+ Everything you need to build safe, compliant, cross-platform experiences +

+
+ {features.map((feature) => ( + +
+ +
+

{feature.title}

+

{feature.description}

+
+ ))} +
+
+ + {/* Code Examples */} +
+

Quick Examples

+

+ Get started in minutes with these production-ready code snippets +

+ + + + Passport + SafeInput + Compliance + DataSync + + + + + + + Passport - Universal Identity + + + Authenticate users once, verify them everywhere + + + + + + + + + + + + + SafeInput - PII Detection + + + Detect and scrub personally identifiable information automatically + + + + + + + + + + + + + Compliance - COPPA/FERPA + + + Built-in compliance checks with audit trail logging + + + + + + + + + + + + + DataSync - Cross-Platform State + + + Synchronize data across all supported platforms + + + + + + + + +
+ + {/* API Reference */} +
+ + +
+
+

API Reference

+
+
+

Passport

+
    +
  • new Passport(userId, username) - Create passport
  • +
  • verify() - Verify identity
  • +
  • syncAcross(platforms) - Sync across platforms
  • +
  • toJSON() - Export as JSON
  • +
+
+
+

SafeInput

+
    +
  • SafeInput.detectPII(input) - Detect PII types
  • +
  • SafeInput.scrub(input) - Scrub PII from string
  • +
  • SafeInput.validate(input) - Validate input safety
  • +
+
+
+
+
+
+
+

DataSync

+
    +
  • DataSync.sync(data, platforms) - Sync data
  • +
  • DataSync.pull(userId, platform) - Pull data
  • +
+
+
+

Compliance

+
    +
  • Compliance.isCOPPACompliant(age) - Check if 13+
  • +
  • Compliance.requiresParentConsent(age) - Check if <13
  • +
  • Compliance.canCollectData(user) - Check permission
  • +
  • Compliance.logCheck(userId, type, result) - Audit log
  • +
+
+
+
+
+
+
+
+ + {/* Keywords/Use Cases */} +
+

Built for

+
+ {["metaverse", "cross-platform", "roblox", "uefn", "unity", "coppa", "compliance", "pii-detection"].map((keyword) => ( + + {keyword} + + ))} +
+
+ + {/* CTA */} +
+

Ready to Build?

+

+ Start building safer, compliant cross-platform experiences today. +

+
+ + + + + + +
+
+ + {/* Footer Info */} +
+

+ Maintained by{" "} + + AeThex Foundation + + {" · "} + + Report Issues + +

+
+
+
+ ); +} diff --git a/client/pages/docs/lang/DocsLangCli.tsx b/client/pages/docs/lang/DocsLangCli.tsx new file mode 100644 index 00000000..59c88321 --- /dev/null +++ b/client/pages/docs/lang/DocsLangCli.tsx @@ -0,0 +1,379 @@ +import { Link } from "react-router-dom"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { + Terminal, + CheckCircle2, + Copy, + ExternalLink, + Package, +} from "lucide-react"; +import { useState } from "react"; + +function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + const handleCopy = async () => { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + return ( + + ); +} + +function CodeBlock({ code, language = "bash" }: { code: string; language?: string }) { + return ( +
+ +
+        {code}
+      
+
+ ); +} + +const installCode = `npm install -g @aethex.os/cli`; + +const compileBasicCode = `aethex compile myfile.aethex`; + +const compileTargetCode = `# JavaScript (default) +aethex compile myfile.aethex --target javascript + +# Roblox/Lua +aethex compile myfile.aethex --target roblox + +# UEFN/Verse (coming soon) +aethex compile myfile.aethex --target uefn + +# Unity/C# (coming soon) +aethex compile myfile.aethex --target unity`; + +const outputCode = `aethex compile myfile.aethex -o output.js +aethex compile myfile.aethex -t roblox -o game.lua`; + +const watchCode = `aethex compile myfile.aethex --watch`; + +const newProjectCode = `# Basic project +aethex new my-project + +# With template +aethex new my-game --template passport`; + +const initCode = `aethex init`; + +const helloAethexCode = `reality HelloWorld { + platforms: all +} + +journey Greet(name) { + platform: all + notify "Hello, " + name + "!" +}`; + +const commands = [ + { + name: "compile", + syntax: "aethex compile ", + description: "Compile an AeThex file to the target platform", + options: [ + { flag: "-t, --target ", description: "Target platform (javascript, roblox, uefn, unity)" }, + { flag: "-o, --output ", description: "Output file path" }, + { flag: "-w, --watch", description: "Watch for changes and recompile" }, + ], + }, + { + name: "new", + syntax: "aethex new ", + description: "Create a new AeThex project", + options: [ + { flag: "--template ", description: "Project template (basic, passport, game)" }, + ], + }, + { + name: "init", + syntax: "aethex init", + description: "Initialize AeThex in the current directory", + options: [], + }, + { + name: "--help", + syntax: "aethex --help", + description: "Show help information", + options: [], + }, + { + name: "--version", + syntax: "aethex --version", + description: "Show CLI version", + options: [], + }, +]; + +const targets = [ + { name: "javascript", language: "JavaScript", platform: "Web, Node.js", status: "ready" }, + { name: "roblox", language: "Lua", platform: "Roblox", status: "ready" }, + { name: "uefn", language: "Verse", platform: "Fortnite", status: "coming" }, + { name: "unity", language: "C#", platform: "Unity, VRChat", status: "coming" }, +]; + +export default function DocsLangCli() { + return ( +
+ {/* Header */} +
+ + @aethex.os/cli + +

CLI Reference

+

+ AeThex Language Command Line Interface - Compile .aethex files + to JavaScript, Lua, Verse, and C#. +

+
+ + {/* Installation */} +
+

Installation

+ +

+ + View on npm + +

+
+ + {/* Usage */} +
+

Usage

+ +
+ + + + + Compile a file + + + + + + + + + + Compile to specific target + + + + + + + + + Save to file + + + + + + + + + Watch mode + Auto-recompile on file changes + + + + + + + + + Create new project + + + + + + + + + Initialize in existing directory + + + + + +
+
+ + {/* Example */} +
+

Example

+

+ Create hello.aethex: +

+ +

Compile and run:

+ +
+ + {/* Commands Reference */} +
+

Commands

+
+ {commands.map((cmd) => ( + + + {cmd.syntax} + {cmd.description} + + {cmd.options.length > 0 && ( + +
+ {cmd.options.map((opt) => ( +
+ {opt.flag} + {opt.description} +
+ ))} +
+
+ )} +
+ ))} +
+
+ + {/* Options */} +
+

Global Options

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
OptionDescription
-t, --target <platform>Target platform (javascript, roblox, uefn, unity)
-o, --output <file>Output file path
-w, --watchWatch for changes
--template <type>Project template (basic, passport, game)
+
+
+ + {/* Targets */} +
+

Targets

+
+ + + + + + + + + + + {targets.map((target) => ( + + + + + + + ))} + +
TargetLanguagePlatformStatus
+ {target.name} + {target.language}{target.platform} + {target.status === "ready" ? ( + + Ready + + ) : ( + Coming Soon + )} +
+
+
+ + {/* Learn More */} +
+

Learn More

+
+ + + + +

Language Guide

+

Full documentation

+
+
+ + + + + +

Examples

+

Code samples

+
+
+ + + + + +

@aethex.os/core

+

Standard Library

+
+
+
+
+
+ + {/* Navigation */} +
+ + ← Language Syntax + + + Examples → + +
+
+ ); +} diff --git a/client/pages/docs/lang/DocsLangExamples.tsx b/client/pages/docs/lang/DocsLangExamples.tsx new file mode 100644 index 00000000..80c7f01d --- /dev/null +++ b/client/pages/docs/lang/DocsLangExamples.tsx @@ -0,0 +1,414 @@ +import { Link } from "react-router-dom"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { + CheckCircle2, + Copy, + Shield, + Users, + Award, + Zap, + Lock, +} from "lucide-react"; +import { useState } from "react"; + +function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + const handleCopy = async () => { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + return ( + + ); +} + +function CodeBlock({ code }: { code: string }) { + return ( +
+ +
+        {code}
+      
+
+ ); +} + +const helloWorldCode = `# AeThex Hello World Example + +reality HelloWorld { + platforms: all +} + +journey Greet(name) { + platform: all + notify "Hello, " + name + " from AeThex!" +}`; + +const crossPlatformAuthCode = `import { Passport, DataSync } from "@aethex.os/core" + +reality UniversalAuth { + platforms: [roblox, uefn, web] +} + +journey Login(username, password) { + platform: all + + let passport = new Passport(username) + + when passport.verify() { + sync passport across [roblox, uefn, web] + + # Pull existing data from any platform + let playerData = DataSync.pull(passport.userId, "roblox") + + notify "Logged in across all platforms!" + reveal passport + } +}`; + +const secureLeaderboardCode = `# The Foundry Certification Exam +# Task: Build a COPPA-compliant, PII-safe leaderboard +# +# Requirements: +# 1. Must accept player scores +# 2. Must detect and block PII (phone numbers, emails, etc.) +# 3. Must work on Roblox (Lua) +# 4. Must display safely without exposing sensitive data + +import { SafeInput, Compliance } from "@aethex.os/core" + +reality SecureLeaderboard { + platforms: [roblox] + type: "compliance-exam" +} + +# CRITICAL: This is the exam +# If PII gets through to the leaderboard, you FAIL + +journey SubmitScore(player, playerName, score) { + platform: roblox + + # STEP 1: Validate player age (COPPA compliance) + when !Compliance.isCOPPACompliant(player.age) { + notify "Players under 13 cannot submit scores publicly" + return + } + + # STEP 2: Validate player name for PII + let nameValidation = SafeInput.validate(playerName) + + when !nameValidation.valid { + notify "Invalid name: " + nameValidation.message + notify "Blocked PII types: " + nameValidation.blocked + + # Log security incident + Compliance.logCheck(player.userId, "leaderboard_name_check", false) + + return + } + + # STEP 3: Validate score value for PII + let scoreValidation = SafeInput.validate(score.toString()) + + when !scoreValidation.valid { + notify "Invalid score: contains sensitive data" + + # Log security incident + Compliance.logCheck(player.userId, "leaderboard_score_check", false) + + return + } + + # STEP 4: All validations passed - safe to submit + Compliance.logCheck(player.userId, "leaderboard_submission", true) + notify "Score submitted successfully!" + + reveal { + player: nameValidation.clean, + score: scoreValidation.clean + } +} + +# Test function: Attempts to inject PII +journey TestPIIDetection() { + platform: roblox + + notify "=== FOUNDRY EXAM TEST SUITE ===" + + # Test 1: Phone number in name + let test1 = SafeInput.validate("John 555-1234") + when test1.valid { + notify "❌ FAIL: Phone number not detected" + } otherwise { + notify "✅ PASS: Phone number blocked" + } + + # Test 2: Email in name + let test2 = SafeInput.validate("player@email.com") + when test2.valid { + notify "❌ FAIL: Email not detected" + } otherwise { + notify "✅ PASS: Email blocked" + } + + # Test 3: Clean name + let test3 = SafeInput.validate("PlayerOne") + when test3.valid { + notify "✅ PASS: Clean name accepted" + } otherwise { + notify "❌ FAIL: Clean name rejected" + } + + # Test 4: SSN in score + let test4 = SafeInput.validate("123-45-6789") + when test4.valid { + notify "❌ FAIL: SSN not detected" + } otherwise { + notify "✅ PASS: SSN blocked" + } +}`; + +const coppaRegistrationCode = `import { Compliance, Passport } from "@aethex.os/core" + +journey RegisterUser(username, age) { + platform: all + + when Compliance.isCOPPACompliant(age) { + # User is 13+, can proceed + let passport = new Passport(username) + passport.verify() + notify "Account created!" + } otherwise { + # Under 13, require parent consent + notify "Parent permission required" + # Send email to parent (implementation omitted) + } +}`; + +const dataSyncCode = `import { Passport, DataSync } from "@aethex.os/core" + +reality CrossPlatformProgress { + platforms: [roblox, uefn, web] +} + +journey SaveProgress(player, progress) { + platform: all + + # Sync progress data across all platforms + DataSync.sync({ + level: progress.level, + experience: progress.xp, + inventory: progress.items + }, [roblox, uefn, web]) + + notify "Progress saved!" +} + +journey LoadProgress(player) { + platform: all + + # Pull latest progress from any platform + let data = DataSync.pull(player.userId, "web") + + reveal data +}`; + +const examples = [ + { + id: "hello-world", + title: "Hello World", + description: "Your first AeThex program", + icon: Zap, + color: "text-yellow-500", + code: helloWorldCode, + difficulty: "Beginner", + }, + { + id: "cross-platform-auth", + title: "Cross-Platform Authentication", + description: "Login once, authenticated everywhere", + icon: Users, + color: "text-blue-500", + code: crossPlatformAuthCode, + difficulty: "Intermediate", + }, + { + id: "secure-leaderboard", + title: "Secure Leaderboard (Foundry Exam)", + description: "COPPA-compliant, PII-safe leaderboard - the certification exam", + icon: Award, + color: "text-purple-500", + code: secureLeaderboardCode, + difficulty: "Advanced", + }, + { + id: "coppa-registration", + title: "COPPA-Compliant Registration", + description: "User registration with age verification", + icon: Lock, + color: "text-green-500", + code: coppaRegistrationCode, + difficulty: "Intermediate", + }, + { + id: "data-sync", + title: "Cross-Platform Data Sync", + description: "Sync player progress across all platforms", + icon: Shield, + color: "text-cyan-500", + code: dataSyncCode, + difficulty: "Intermediate", + }, +]; + +const difficultyColors: Record = { + Beginner: "bg-green-500/20 text-green-400 border-green-500/30", + Intermediate: "bg-yellow-500/20 text-yellow-400 border-yellow-500/30", + Advanced: "bg-red-500/20 text-red-400 border-red-500/30", +}; + +export default function DocsLangExamples() { + const [activeExample, setActiveExample] = useState("hello-world"); + const currentExample = examples.find((e) => e.id === activeExample) || examples[0]; + + return ( +
+ {/* Header */} +
+ + Code Examples + +

Examples

+

+ Real-world code examples and patterns for AeThex development. +

+
+ + {/* Examples Grid for Quick Navigation */} +
+

Browse Examples

+
+ {examples.map((example) => ( + + ))} +
+
+ + {/* Active Example Display */} +
+ + +
+
+ + {currentExample.title} +
+ + {currentExample.difficulty} + +
+ {currentExample.description} +
+ + + +
+
+ + {/* All Examples (Tabbed) */} +
+

All Examples

+ + + {examples.map((example) => ( + + {example.title.split(" ")[0]} + + ))} + + {examples.map((example) => ( + + + +
+ + {example.title} + + {example.difficulty} + +
+ {example.description} +
+ + + +
+
+ ))} +
+
+ + {/* The Foundry Note */} +
+ + +
+ +
+

The Foundry Certification

+

+ The Secure Leaderboard example above is the actual Foundry certification exam. + If you can implement a COPPA-compliant, PII-safe leaderboard that passes all validation tests, + you're ready for professional metaverse development. +

+ + Learn more about The Foundry → + +
+
+
+
+
+ + {/* Navigation */} +
+ + ← CLI Reference + + + Back to Overview → + +
+
+ ); +} diff --git a/client/pages/docs/lang/DocsLangOverview.tsx b/client/pages/docs/lang/DocsLangOverview.tsx new file mode 100644 index 00000000..f34af2f7 --- /dev/null +++ b/client/pages/docs/lang/DocsLangOverview.tsx @@ -0,0 +1,380 @@ +import { Link } from "react-router-dom"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { + Package, + Terminal, + BookOpen, + Code, + Zap, + Shield, + Users, + ExternalLink, + ArrowRight, + CheckCircle2, + FileText, + Github, + Globe, + Lock, + Copy, +} from "lucide-react"; +import { useState } from "react"; + +function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + const handleCopy = async () => { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + return ( + + ); +} + +function CodeBlock({ code, language = "aethex" }: { code: string; language?: string }) { + return ( +
+ +
+        {code}
+      
+
+ ); +} + +const docSections = [ + { + title: "Quick Start", + description: "Get up and running in 5 minutes", + icon: Zap, + href: "/docs/lang/quickstart", + color: "text-yellow-500", + bgColor: "bg-yellow-500/10", + }, + { + title: "Language Syntax", + description: "Learn realities, journeys, and cross-platform sync", + icon: Code, + href: "/docs/lang/syntax", + color: "text-blue-500", + bgColor: "bg-blue-500/10", + }, + { + title: "CLI Reference", + description: "Command line compiler and tools", + icon: Terminal, + href: "/docs/lang/cli", + color: "text-green-500", + bgColor: "bg-green-500/10", + }, + { + title: "Examples", + description: "Real-world code examples and patterns", + icon: FileText, + href: "/docs/lang/examples", + color: "text-purple-500", + bgColor: "bg-purple-500/10", + }, +]; + +const features = [ + { + icon: Globe, + title: "Cross-Platform Native", + description: "Deploy to Roblox, UEFN, Unity, VRChat, Spatial, and Web", + }, + { + icon: Users, + title: "Universal Passport", + description: "Single identity system across all metaverse platforms", + }, + { + icon: Shield, + title: "Compliance-First", + description: "Built-in COPPA/FERPA/PII protection", + }, + { + icon: Package, + title: "Standard Library", + description: "Battle-tested utilities for auth, data sync, and safety", + }, +]; + +const platforms = [ + { name: "JavaScript", status: "ready" }, + { name: "Roblox (Lua)", status: "ready" }, + { name: "UEFN (Verse)", status: "coming" }, + { name: "Unity (C#)", status: "coming" }, +]; + +const helloWorldCode = `reality HelloWorld { + platforms: all +} + +journey Greet(name) { + platform: all + notify "Hello, " + name + "!" +}`; + +const crossPlatformCode = `import { Passport } from "@aethex.os/core" + +reality MyGame { + platforms: [roblox, uefn, web] +} + +journey AuthenticatePlayer(username) { + platform: all + + let passport = new Passport(username) + + when passport.verify() { + sync passport across [roblox, uefn, web] + notify "Welcome, " + username + "!" + } +}`; + +export default function DocsLangOverview() { + return ( +
+ {/* Hero Section */} +
+
+ + v1.0.0 + + + MIT License + +
+

AeThex Language

+

+ Write once. Build everywhere. Comply by default. +

+

+ AeThex is a programming language for cross-platform metaverse development. + Write your game logic, authentication, and compliance rules once, then compile + to JavaScript, Lua (Roblox), Verse (UEFN), and C# (Unity). +

+ + {/* Install Command */} +
+
+ + + npm install -g @aethex.os/cli + + +
+
+ +
+ + + + + + +
+
+ + {/* Platform Support */} +
+

Compilation Targets

+
+ {platforms.map((platform) => ( + + {platform.status === "ready" && } + {platform.name} + {platform.status === "coming" && " (Coming Soon)"} + + ))} +
+
+ + {/* Documentation Sections */} +
+

Documentation

+
+ {docSections.map((section) => ( + + + +
+ +
+
+ {section.title} + {section.description} +
+
+
+ + ))} +
+
+ + {/* Hello World Example */} +
+

Hello World

+

+ Create hello.aethex: +

+ +
+ + aethex compile hello.aethex + + + node hello.js + +
+
+ + {/* Cross-Platform Example */} +
+

Cross-Platform Authentication

+

+ One codebase, deployed everywhere: +

+ +
+ + {/* Features */} +
+

Why AeThex?

+
+ {features.map((feature) => ( +
+
+ +
+
+

{feature.title}

+

{feature.description}

+
+
+ ))} +
+
+ + {/* npm Packages */} +
+

npm Packages

+
+ + + + + @aethex.os/cli + + Command line compiler + + + + View on npm + + + + + + + + @aethex.os/core + + Standard library + + + + View on npm + + + +
+
+ + {/* The Foundry */} +
+ + + +

The Foundry Certification

+

+ AeThex is the official language taught at The AeThex Foundry certification program. + Learn to build compliant, cross-platform metaverse experiences. +

+
+ + + +
+
+
+
+ + {/* Quick Links */} +
+

+ + GitHub + + + + Report Issues + + + + Community + +

+
+
+ ); +} diff --git a/client/pages/docs/lang/DocsLangQuickstart.tsx b/client/pages/docs/lang/DocsLangQuickstart.tsx new file mode 100644 index 00000000..c4018137 --- /dev/null +++ b/client/pages/docs/lang/DocsLangQuickstart.tsx @@ -0,0 +1,354 @@ +import { Link } from "react-router-dom"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { + Terminal, + CheckCircle2, + Copy, + ArrowRight, + FileText, + Folder, + ExternalLink, +} from "lucide-react"; +import { useState } from "react"; + +function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + const handleCopy = async () => { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + return ( + + ); +} + +function CodeBlock({ code, language = "bash" }: { code: string; language?: string }) { + return ( +
+ +
+        {code}
+      
+
+ ); +} + +function StepCard({ number, title, children }: { number: number; title: string; children: React.ReactNode }) { + return ( + +
+ {number} +
+ + {title} + + + {children} + +
+ ); +} + +const installCode = `# Install the CLI globally +npm install -g @aethex.os/cli + +# Verify installation +aethex --version`; + +const newProjectCode = `aethex new my-first-game +cd my-first-game +npm install`; + +const mainAethexCode = `reality MyFirstGame { + platforms: [roblox, web] +} + +journey WelcomePlayer(username) { + platform: all + notify "Welcome, " + username + "!" +}`; + +const compileCode = `# Compile to JavaScript +npm run build + +# Run it +node build/main.js + +# Or compile to Roblox +npm run build:roblox`; + +const authExampleCode = `import { Passport } from "@aethex.os/core" + +journey Login(username) { + let passport = new Passport(username) + + when passport.verify() { + sync passport across [roblox, web] + notify "Logged in everywhere!" + } +}`; + +const piiExampleCode = `import { SafeInput } from "@aethex.os/core" + +journey SubmitScore(player, score) { + let validation = SafeInput.validate(score) + + when validation.valid { + # Safe to submit + notify "Score: " + score + } otherwise { + # PII detected! + notify "Error: " + validation.message + } +}`; + +const projectStructure = `my-project/ +├── aethex.config.json # Config file +├── package.json # npm dependencies +├── src/ +│ ├── main.aethex # Your code +│ ├── auth.aethex +│ └── game.aethex +└── build/ + ├── main.js # Compiled JavaScript + └── main.lua # Compiled Lua`; + +const stdlibCode = `# Import from @aethex.os/core +import { Passport, DataSync, SafeInput, Compliance } from "@aethex.os/core" + +# Import from @aethex.os/roblox (platform-specific) +import { RemoteEvent, Leaderboard } from "@aethex.os/roblox"`; + +const commonPatterns = { + auth: `journey Login(user) { + when user.verify() { + sync user.passport across [roblox, web] + } +}`, + datasync: `journey SaveProgress(player) { + sync player.stats across [roblox, uefn, web] +}`, + pii: `let result = SafeInput.validate(userInput) +when result.valid { + # Safe to use +}`, + coppa: `when Compliance.isCOPPACompliant(user.age) { + # User is 13+ +}`, +}; + +export default function DocsLangQuickstart() { + return ( +
+ {/* Header */} +
+ + 5 Minute Guide + +

Quick Start

+

+ Get up and running with AeThex in 5 minutes. +

+
+ + {/* Installation */} +
+

Installation

+ +
+ + {/* Steps */} +
+

Your First AeThex Program

+ + + + + + + + + + + + +
+ + {/* Example Projects */} +
+

Example Projects

+ +
+ + + Cross-Platform Authentication + Authenticate users across multiple platforms with one codebase + + + +
+ Compile and run: + aethex compile auth.aethex && node auth.js +
+
+
+ + + +
+ PII-Safe Leaderboard + Foundry Exam +
+ + This is the Foundry certification exam - if you can build this correctly, + you're ready to work in metaverse development. + +
+ + + +
+
+
+ + {/* Compilation Targets */} +
+

Compilation Targets

+ +
+ + {/* Watch Mode */} +
+

Watch Mode

+

Auto-recompile on file save:

+ +
+ + {/* Project Structure */} +
+

Project Structure

+ +
+ + {/* Standard Library */} +
+

Standard Library

+ +
+ + {/* Common Patterns */} +
+

Common Patterns

+
+ + + Authentication + + + + + + + + Data Sync + + + + + + + + PII Protection + + + + + + + + COPPA Compliance + + + + + +
+
+ + {/* Next Steps */} +
+

Next Steps

+
+ + + + + + Language Syntax + + Learn realities, journeys, and more + + + + + + + + + Examples + + View more code examples + + + +
+
+ + {/* Getting Help */} +
+

Getting Help

+

+ + GitHub Issues + + + + Discord + + + + Support + +

+
+
+ ); +} diff --git a/client/pages/docs/lang/DocsLangSyntax.tsx b/client/pages/docs/lang/DocsLangSyntax.tsx new file mode 100644 index 00000000..948d4dc0 --- /dev/null +++ b/client/pages/docs/lang/DocsLangSyntax.tsx @@ -0,0 +1,365 @@ +import { Link } from "react-router-dom"; +import { Badge } from "@/components/ui/badge"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { + CheckCircle2, + Copy, + Code, + Layers, + Zap, + Globe, + GitBranch, +} from "lucide-react"; +import { useState } from "react"; + +function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + const handleCopy = async () => { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + return ( + + ); +} + +function CodeBlock({ code, language = "aethex" }: { code: string; language?: string }) { + return ( +
+ +
+        {code}
+      
+
+ ); +} + +const realitiesCode = `reality GameName { + platforms: [roblox, uefn, web] + type: "multiplayer" +}`; + +const journeysCode = `journey ProcessScore(player, score) { + platform: all + + # Automatically scrubs PII before processing + when score > 1000 { + notify "High score achieved!" + } +}`; + +const syncCode = `import { Passport } from "@aethex.os/core" + +journey SaveProgress(player) { + platform: all + + let passport = player.passport + sync passport across [roblox, uefn, web] +}`; + +const conditionalCode = `when player.age < 13 { + # COPPA compliance automatic + notify "Parent permission required" +} otherwise { + # Full features unlocked + reveal player.stats +}`; + +const platformSpecificCode = `journey DisplayLeaderboard() { + platform: roblox { + # Roblox-specific code + reveal leaderboardGUI + } + + platform: web { + # Web-specific code + reveal leaderboardHTML + } +}`; + +const coreLibraryCode = `import { Passport, DataSync, SafeInput, Compliance } from "@aethex.os/core" + +# Passport - Universal identity +let passport = new Passport(userId, username) +passport.verify() +passport.syncAcross([roblox, web]) + +# DataSync - Cross-platform data +DataSync.sync(playerData, [roblox, uefn]) + +# SafeInput - PII protection +let result = SafeInput.validate(userInput) +when result.valid { + # Input is safe +} + +# Compliance - COPPA/FERPA checks +when Compliance.isCOPPACompliant(user.age) { + # Can collect data +}`; + +const robloxLibraryCode = `import { RemoteEvent, Leaderboard } from "@aethex.os/roblox" + +# Roblox-specific features +let event = RemoteEvent.new("PlayerJoined") +event.FireAllClients(player) + +let stats = Leaderboard.new("Points", 0) +Leaderboard.updateScore(player, "Points", 100)`; + +const configCode = `{ + "targets": ["javascript", "roblox", "uefn"], + "srcDir": "src", + "outDir": "build", + "stdlib": true, + "compliance": { + "coppa": true, + "ferpa": true, + "piiDetection": true + } +}`; + +const projectStructureCode = `my-game/ +├── aethex.config.json # Compilation settings +├── package.json # npm dependencies +├── src/ +│ ├── main.aethex # Entry point +│ ├── auth.aethex # Authentication logic +│ └── game.aethex # Game logic +└── build/ + ├── main.js # JavaScript output + └── main.lua # Roblox output`; + +const syntaxSections = [ + { + id: "realities", + title: "Realities (Namespaces)", + icon: Layers, + description: "Define your game or application namespace", + code: realitiesCode, + }, + { + id: "journeys", + title: "Journeys (Functions)", + icon: Zap, + description: "Create functions that run across platforms", + code: journeysCode, + }, + { + id: "sync", + title: "Cross-Platform Sync", + icon: Globe, + description: "Synchronize data across all platforms with one line", + code: syncCode, + }, + { + id: "conditionals", + title: "Conditional Logic", + icon: GitBranch, + description: "Use when/otherwise for conditions with built-in compliance", + code: conditionalCode, + }, + { + id: "platform", + title: "Platform-Specific Code", + icon: Code, + description: "Write code that only runs on specific platforms", + code: platformSpecificCode, + }, +]; + +export default function DocsLangSyntax() { + return ( +
+ {/* Header */} +
+ + Language Reference + +

Language Syntax

+

+ Learn the AeThex syntax, from realities and journeys to cross-platform sync. +

+
+ + {/* Syntax Sections */} +
+ {syntaxSections.map((section) => ( + + + + + {section.title} + + {section.description} + + + + + + ))} +
+ + {/* Standard Library */} +
+

Standard Library

+ + + + @aethex.os/core + @aethex.os/roblox + + + + + Core Library + + Universal utilities for authentication, data sync, and compliance + + + + + + + + + + + Roblox Library + + Roblox-specific features and integrations + + + + + + + + +
+ + {/* Configuration */} +
+

Configuration

+

+ Configure your project with aethex.config.json: +

+ +
+ + {/* Project Structure */} +
+

Project Structure

+ +
+ + {/* Compilation Targets Table */} +
+

Compilation Targets

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TargetExtensionUse CaseStatus
JavaScript.jsWeb applications, Node.js backendsReady
Roblox (Lua).luaRoblox gamesReady
UEFN (Verse).verseFortnite CreativeComing Soon
Unity (C#).csUnity games, VRChatComing Soon
+
+
+ + {/* Keywords Reference */} +
+

Keywords Reference

+
+ + + Declarations + + +
reality - Define a namespace
+
journey - Define a function
+
let - Declare a variable
+
import - Import from libraries
+
+
+ + + Control Flow + + +
when - Conditional (if)
+
otherwise - Else clause
+
return - Return from journey
+
+
+ + + Cross-Platform + + +
sync ... across - Sync data
+
platform: - Target platforms
+
platforms: - Reality platforms
+
+
+ + + Actions + + +
notify - Output message
+
reveal - Return/expose data
+
new - Create instance
+
+
+
+
+ + {/* Navigation */} +
+ + ← Quick Start + + + CLI Reference → + +
+
+ ); +}