diff --git a/src/pages/docs.astro b/src/pages/docs.astro deleted file mode 100644 index fe3f39f..0000000 --- a/src/pages/docs.astro +++ /dev/null @@ -1,421 +0,0 @@ ---- -import MainLayout from '../layouts/MainLayout.astro'; - -const docCategories = [ - { - title: 'Getting Started', - icon: '🚀', - color: '#6cf', - docs: [ - { name: 'Introduction to AeThex', description: 'Overview of the ecosystem and core concepts', time: '5 min read' }, - { name: 'Quickstart Guide', description: 'Get up and running in under 10 minutes', time: '10 min read' }, - { name: 'Architecture Overview', description: 'Understanding the Trinity structure', time: '8 min read' }, - { name: 'Authentication Setup', description: 'Implement SSO and identity verification', time: '12 min read' }, - ] - }, - { - title: 'Core APIs', - icon: '⚡', - color: '#ff4d4d', - docs: [ - { name: 'Identity API', description: 'User authentication and profile management', time: '15 min read' }, - { name: 'Asset API', description: 'Digital asset creation and management', time: '12 min read' }, - { name: 'Events API', description: 'Real-time event streaming and webhooks', time: '10 min read' }, - { name: 'Analytics API', description: 'Usage metrics and insights', time: '8 min read' }, - ] - }, - { - title: 'SDKs & Tools', - icon: '🛠️', - color: '#ffc700', - docs: [ - { name: 'JavaScript SDK', description: 'Full-featured SDK for web applications', time: '20 min read' }, - { name: 'Python SDK', description: 'Backend integration and automation', time: '15 min read' }, - { name: 'Unity Plugin', description: 'Game engine integration guide', time: '25 min read' }, - { name: 'CLI Reference', description: 'Command-line tools documentation', time: '10 min read' }, - ] - }, - { - title: 'Advanced Topics', - icon: '🧠', - color: '#a855f7', - docs: [ - { name: 'Decentralized Storage', description: 'IPFS and distributed data patterns', time: '18 min read' }, - { name: 'Smart Contracts', description: 'On-chain asset management', time: '22 min read' }, - { name: 'AI Integration', description: 'Machine learning APIs and models', time: '20 min read' }, - { name: 'Security Best Practices', description: 'Hardening your implementation', time: '15 min read' }, - ] - } -]; - -const popularDocs = [ - { name: 'Quickstart Guide', views: '12.4k', icon: '📖' }, - { name: 'Authentication Setup', views: '8.2k', icon: '🔐' }, - { name: 'JavaScript SDK', views: '6.8k', icon: '💻' }, - { name: 'Identity API', views: '5.1k', icon: '👤' }, -]; ---- - - -
-
-
-

Documentation

-

Everything you need to build on the AeThex ecosystem. Comprehensive guides, API references, and tutorials.

- - - -
-
- - -
-
- 150+ - Documentation Pages -
-
- 4 - SDKs Available -
-
- 50+ - Code Examples -
-
- Weekly - Updates -
-
- - - - - -
- {docCategories.map(category => ( -
-
- {category.icon} -

{category.title}

-
-
- {category.docs.map(doc => ( - -

{doc.name}

-

{doc.description}

- {doc.time} -
- ))} -
-
- ))} -
- - -
-
-

Full API Reference

-

Dive into the complete API documentation with interactive examples, request/response schemas, and authentication guides.

- -
-
-
// Example: Authenticate a user
-const user = await aethex.auth.login({'{'}
-  email: 'user@example.com',
-  provider: 'sso'
-{'}'});
-
-// Access user profile
-console.log(user.profile);
-
-
- - -
diff --git a/src/pages/docs/[slug].astro b/src/pages/docs/[slug].astro index 179c2c0..8788c65 100644 --- a/src/pages/docs/[slug].astro +++ b/src/pages/docs/[slug].astro @@ -1,8 +1,8 @@ --- import MainLayout from '../../layouts/MainLayout.astro'; -// Document type definition -interface DocEntry { +// Document definitions with clean HTML content +const allDocs: Record = { +}> = { 'introduction': { title: 'Introduction to AeThex', category: 'Getting Started', @@ -24,37 +21,35 @@ const allDocs: Record = { prevDoc: undefined, nextDoc: { slug: 'quickstart', name: 'Quickstart Guide' }, content: ` -## Welcome to AeThex - -AeThex is the infrastructure layer for the metaverse. We provide the foundational tools, APIs, and services that developers need to build persistent, cross-platform digital experiences. - -### The Trinity Architecture - -AeThex is organized into three divisions, each serving a distinct purpose: - -**🔴 Foundation** — The nonprofit backbone maintaining authentication, security, and core open-source APIs. This is the critical infrastructure that the entire ecosystem depends on. - -**🔵 Corporation** — The commercial division delivering polished products and enterprise-grade infrastructure to developers and players worldwide. - -**🟡 Labs** — The innovation division pushing boundaries with experimental features, beta technologies, and next-generation R&D. - -### Core Principles - -1. **Security First** — Every system is built with security as a foundational requirement, not an afterthought. -2. **Open Standards** — We embrace and contribute to open protocols and standards. -3. **Developer Experience** — APIs and tools are designed to be intuitive and well-documented. -4. **Cross-Platform** — Build once, deploy everywhere across games, devices, and platforms. - -### What You Can Build - -- **Games** — Multiplayer games with real-time networking, matchmaking, and persistence -- **Virtual Worlds** — Persistent environments with user-generated content -- **Social Platforms** — Communities with identity, friends, and messaging -- **Digital Economies** — Marketplaces with assets, trading, and commerce - -### Next Steps - -Ready to dive in? Start with the [Quickstart Guide](/docs/quickstart) to get your first project running in under 10 minutes. +

Welcome to AeThex

+

AeThex is the infrastructure layer for the metaverse. We provide the foundational tools, APIs, and services that developers need to build persistent, cross-platform digital experiences.

+ +

The Trinity Architecture

+

AeThex is organized into three divisions, each serving a distinct purpose:

+ + +

Core Principles

+
    +
  1. Security First — Every system is built with security as a foundational requirement.
  2. +
  3. Open Standards — We embrace and contribute to open protocols and standards.
  4. +
  5. Developer Experience — APIs and tools are designed to be intuitive and well-documented.
  6. +
  7. Cross-Platform — Build once, deploy everywhere across games, devices, and platforms.
  8. +
+ +

What You Can Build

+ + +

Next Steps

+

Ready to dive in? Start with the Quickstart Guide to get your first project running in under 10 minutes.

` }, 'quickstart': { @@ -66,88 +61,57 @@ Ready to dive in? Start with the [Quickstart Guide](/docs/quickstart) to get you prevDoc: { slug: 'introduction', name: 'Introduction' }, nextDoc: { slug: 'architecture', name: 'Architecture Overview' }, content: ` -## Quickstart Guide - -Get your first AeThex project running in under 10 minutes. - -### Prerequisites - -- Node.js 18+ or Python 3.9+ -- An AeThex account ([sign up free](https://aethex.us/contribute)) -- A code editor (VS Code recommended) - -### Step 1: Install the SDK - -\`\`\`bash -# Using npm +

Quickstart Guide

+

Get your first AeThex project running in under 10 minutes.

+ +

Prerequisites

+ + +

Step 1: Install the SDK

+
# Using npm
 npm install @aethex/sdk
 
 # Using yarn
 yarn add @aethex/sdk
 
 # Using Python
-pip install aethex
-\`\`\`
-
-### Step 2: Initialize the Client
-
-\`\`\`javascript
-import { AeThex } from '@aethex/sdk';
+pip install aethex
+ +

Step 2: Initialize the Client

+
import { AeThex } from '@aethex/sdk';
 
 const aethex = new AeThex({
   projectId: 'your-project-id',
   apiKey: 'your-api-key'
-});
-\`\`\`
-
-### Step 3: Authenticate a User
-
-\`\`\`javascript
-// Using email/password
-const user = await aethex.auth.login({
-  email: 'user@example.com',
-  password: 'secure-password'
+});
+ +

Step 3: Authenticate a User

+
// Start OAuth flow
+const session = await aethex.auth.signIn({
+  provider: 'google' // or 'discord', 'github', etc.
 });
 
-// Using OAuth
-const user = await aethex.auth.loginWithOAuth('google');
+console.log('Welcome,', session.user.name);
+ +

Step 4: Make Your First API Call

+
// Get user profile
+const profile = await aethex.identity.getProfile();
 
-console.log('Welcome,', user.profile.displayName);
-\`\`\`
-
-### Step 4: Make Your First API Call
-
-\`\`\`javascript
-// Get user profile
-const profile = await aethex.users.getProfile();
-
-// Update profile
-await aethex.users.updateProfile({
-  displayName: 'New Name',
-  avatar: 'https://example.com/avatar.png'
-});
-\`\`\`
-
-### Step 5: Real-Time Events
-
-\`\`\`javascript
-// Subscribe to real-time updates
-aethex.realtime.subscribe('user:online', (event) => {
-  console.log('User came online:', event.userId);
-});
-
-// Send a real-time event
-aethex.realtime.emit('game:action', {
-  action: 'move',
-  position: { x: 10, y: 20 }
-});
-\`\`\`
-
-### What's Next?
-
-- Explore the [Architecture Overview](/docs/architecture) to understand how AeThex works
-- Set up [Authentication](/docs/authentication) for your app
-- Dive into the [Identity API](/docs/identity-api) reference
+// Update display name
+await aethex.identity.update({
+  displayName: 'NewPlayer123'
+});
+ +

Next Steps

+ ` }, 'architecture': { @@ -157,695 +121,448 @@ aethex.realtime.emit('game:action', { time: '8 min read', description: 'Understanding the Trinity structure', prevDoc: { slug: 'quickstart', name: 'Quickstart Guide' }, - nextDoc: { slug: 'authentication', name: 'Authentication Setup' }, + nextDoc: { slug: 'authentication', name: 'Authentication' }, content: ` -## Architecture Overview - -Understanding how AeThex is structured will help you make better decisions when building your applications. - -### The Trinity Model - -\`\`\` -┌─────────────┐ ┌─────────────┐ ┌─────────────┐ -│ Labs │ ──▶ │ Foundation │ ──▶ │ Corporation │ -│ (R&D) │ │ (Validate) │ │ (Production)│ -└─────────────┘ └─────────────┘ └─────────────┘ -\`\`\` - -1. **Labs** creates breakthrough technology and experimental features -2. **Foundation** validates, secures, and open-sources stable components -3. **Corporation** delivers production-ready products with enterprise support - -### Core Services - -| Service | Description | Division | -|---------|-------------|----------| -| Passport | Identity & authentication | Foundation | -| Shield | Security infrastructure | Foundation | -| Nexus | API gateway | Foundation | -| Studio | Development IDE | Corporation | -| Cloud | Hosting & deployment | Corporation | -| Forge | Game development tools | Labs | - -### Data Flow - -\`\`\` -Client App - │ - ▼ -┌─────────────────────────────────┐ -│ API Gateway (Nexus) │ -│ - Rate limiting │ -│ - Authentication │ -│ - Request routing │ -└─────────────────────────────────┘ - │ - ├──▶ Identity Service (Passport) - ├──▶ Asset Service - ├──▶ Events Service - └──▶ Analytics Service -\`\`\` - -### Security Layers - -1. **Transport** — TLS 1.3 encryption for all connections -2. **Authentication** — OAuth 2.0 / OIDC with MFA support -3. **Authorization** — Role-based access control (RBAC) -4. **Data** — AES-256 encryption at rest - -### Scaling - -AeThex is designed to scale horizontally: - -- **Edge nodes** in 50+ locations worldwide -- **Auto-scaling** based on demand -- **Global CDN** for static assets -- **Distributed databases** with eventual consistency +

Architecture Overview

+

Understanding how AeThex is structured will help you make better decisions when building your applications.

+ +

The Trinity Model

+
+
LabsR&D
+
+
FoundationValidate
+
+
CorporationProduction
+
+ +
    +
  1. Labs creates breakthrough technology and experimental features
  2. +
  3. Foundation validates, secures, and open-sources stable components
  4. +
  5. Corporation delivers production-ready products with enterprise support
  6. +
+ +

Core Services

+ + + + + + + + + + + + +
ServiceDescriptionDivision
PassportIdentity & authenticationFoundation
ShieldSecurity infrastructureFoundation
NexusAPI gatewayFoundation
StudioDevelopment IDECorporation
CloudHosting & deploymentCorporation
GameForgeGame development toolkitLabs
+ +

Data Flow

+

All requests flow through the following pipeline:

+
    +
  1. Client SDK — Your application makes a request
  2. +
  3. Edge Network — Global CDN routes to nearest region
  4. +
  5. API Gateway — Authentication and rate limiting
  6. +
  7. Service Mesh — Request routed to appropriate microservice
  8. +
  9. Response — Data returned through the same path
  10. +
` }, 'authentication': { - title: 'Authentication Setup', + title: 'Authentication', category: 'Getting Started', categoryColor: '#6cf', time: '12 min read', - description: 'Implement SSO and identity verification', + description: 'User authentication and session management', prevDoc: { slug: 'architecture', name: 'Architecture Overview' }, nextDoc: { slug: 'identity-api', name: 'Identity API' }, content: ` -## Authentication Setup +

Authentication

+

AeThex Passport provides secure, universal authentication across all your applications.

+ +

Supported Providers

+ + +

Basic Authentication

+
// Initialize auth
+const auth = aethex.auth;
 
-Implement secure authentication in your AeThex application.
-
-### Authentication Methods
-
-AeThex supports multiple authentication methods:
-
-- **Email/Password** — Traditional credentials
-- **OAuth 2.0** — Google, Discord, GitHub, Twitter
-- **Passkeys** — Biometric and hardware keys
-- **SSO** — Enterprise single sign-on
-
-### Basic Email Authentication
-
-\`\`\`javascript
-import { AeThex } from '@aethex/sdk';
-
-const aethex = new AeThex({ projectId: 'your-project' });
-
-// Sign up a new user
-const newUser = await aethex.auth.signUp({
-  email: 'user@example.com',
-  password: 'secure-password-123',
-  displayName: 'New User'
+// Sign in with OAuth
+const session = await auth.signIn({
+  provider: 'discord',
+  scopes: ['identity', 'email']
 });
 
-// Sign in existing user
-const user = await aethex.auth.signIn({
-  email: 'user@example.com',
-  password: 'secure-password-123'
-});
+// Check auth state
+if (auth.isAuthenticated) {
+  console.log('User:', auth.user.id);
+}
+ +

Session Management

+
// Get current session
+const session = await auth.getSession();
+
+// Refresh token
+await auth.refreshToken();
 
 // Sign out
-await aethex.auth.signOut();
-\`\`\`
-
-### OAuth Authentication
-
-\`\`\`javascript
-// Redirect to OAuth provider
-await aethex.auth.loginWithOAuth('google');
-
-// Handle OAuth callback
-const user = await aethex.auth.handleOAuthCallback();
-\`\`\`
-
-### Session Management
-
-\`\`\`javascript
-// Get current session
-const session = await aethex.auth.getSession();
-
-// Refresh session
-const newSession = await aethex.auth.refreshSession();
-
-// Check if authenticated
-if (await aethex.auth.isAuthenticated()) {
-  // User is logged in
-}
-\`\`\`
-
-### Multi-Factor Authentication
-
-\`\`\`javascript
-// Enable MFA
-const mfaSecret = await aethex.auth.enableMFA();
+await auth.signOut();
+ +

Multi-Factor Authentication

+
// Enable MFA
+await auth.mfa.enable({
+  method: 'totp' // or 'sms', 'email'
+});
 
 // Verify MFA code
-await aethex.auth.verifyMFA({
+await auth.mfa.verify({
   code: '123456'
-});
-\`\`\`
-
-### Security Best Practices
-
-1. **Always use HTTPS** in production
-2. **Implement rate limiting** on auth endpoints
-3. **Store tokens securely** (HttpOnly cookies recommended)
-4. **Enable MFA** for sensitive operations
-5. **Monitor for suspicious activity** using our analytics
+});
` }, 'identity-api': { title: 'Identity API', category: 'Core APIs', - categoryColor: '#ff4d4d', + categoryColor: '#0f0', time: '15 min read', - description: 'User authentication and profile management', - prevDoc: { slug: 'authentication', name: 'Authentication Setup' }, + description: 'User profiles, friends, and presence', + prevDoc: { slug: 'authentication', name: 'Authentication' }, nextDoc: { slug: 'asset-api', name: 'Asset API' }, content: ` -## Identity API +

Identity API

+

Manage user profiles, social connections, and online presence.

+ +

User Profiles

+
// Get current user profile
+const profile = await aethex.identity.getProfile();
 
-The Identity API provides comprehensive user management, authentication, and profile functionality.
-
-### Base URL
-
-\`\`\`
-https://api.aethex.us/v1/identity
-\`\`\`
-
-### Authentication
-
-All requests require a valid API key or user token:
-
-\`\`\`bash
-Authorization: Bearer 
-X-API-Key: 
-\`\`\`
-
-### Endpoints
-
-#### Get Current User
-
-\`\`\`http
-GET /v1/identity/me
-\`\`\`
-
-**Response:**
-\`\`\`json
-{
-  "id": "usr_abc123",
-  "email": "user@example.com",
-  "displayName": "John Doe",
-  "avatar": "https://cdn.aethex.us/avatars/abc123.png",
-  "createdAt": "2025-01-15T10:30:00Z",
-  "roles": ["user", "developer"]
-}
-\`\`\`
-
-#### Update Profile
-
-\`\`\`http
-PATCH /v1/identity/me
-Content-Type: application/json
-
-{
-  "displayName": "New Name",
-  "bio": "Game developer and metaverse enthusiast"
-}
-\`\`\`
-
-#### Get User by ID
-
-\`\`\`http
-GET /v1/identity/users/:userId
-\`\`\`
-
-#### Search Users
-
-\`\`\`http
-GET /v1/identity/users/search?q=john&limit=10
-\`\`\`
-
-### SDK Usage
-
-\`\`\`javascript
-// Get current user
-const me = await aethex.identity.me();
+// Get another user's profile
+const user = await aethex.identity.getUser('user_abc123');
 
 // Update profile
-await aethex.identity.updateProfile({
-  displayName: 'New Name',
-  avatar: 'https://example.com/avatar.png'
+await aethex.identity.update({
+  displayName: 'CoolPlayer42',
+  avatar: 'https://...',
+  bio: 'Gaming enthusiast'
+});
+ +

Friends System

+
// Send friend request
+await aethex.identity.friends.request('user_xyz');
+
+// Accept friend request
+await aethex.identity.friends.accept('request_id');
+
+// Get friends list
+const friends = await aethex.identity.friends.list();
+
+// Remove friend
+await aethex.identity.friends.remove('user_xyz');
+ +

Presence

+
// Set online status
+await aethex.identity.presence.set({
+  status: 'online', // 'online', 'away', 'dnd', 'offline'
+  activity: 'Playing GameForge'
 });
 
-// Get another user
-const user = await aethex.identity.getUser('usr_abc123');
-
-// Search users
-const results = await aethex.identity.search('john', { limit: 10 });
-\`\`\`
-
-### Webhooks
-
-Subscribe to identity events:
-
-- \`user.created\` — New user registration
-- \`user.updated\` — Profile changes
-- \`user.deleted\` — Account deletion
-- \`user.login\` — Successful authentication
+// Subscribe to friend presence
+aethex.identity.presence.subscribe((updates) => {
+  updates.forEach(u => {
+    console.log(\`\${u.userId} is now \${u.status}\`);
+  });
+});
` }, 'asset-api': { title: 'Asset API', category: 'Core APIs', - categoryColor: '#ff4d4d', + categoryColor: '#0f0', time: '12 min read', - description: 'Digital asset creation and management', + description: 'Digital assets and inventory management', prevDoc: { slug: 'identity-api', name: 'Identity API' }, nextDoc: { slug: 'events-api', name: 'Events API' }, content: ` -## Asset API - -Create, manage, and trade digital assets in the AeThex ecosystem. - -### Asset Types - -- **NFTs** — Unique digital collectibles -- **Tokens** — Fungible currencies and points -- **Items** — Game items and equipment -- **Avatars** — 3D character models - -### Create an Asset - -\`\`\`javascript -const asset = await aethex.assets.create({ - type: 'item', +

Asset API

+

Create, manage, and transfer digital assets across your applications.

+ +

Asset Types

+ + +

Creating Assets

+
// Create an asset definition
+const sword = await aethex.assets.create({
   name: 'Legendary Sword',
-  description: 'A powerful weapon forged in dragon fire',
-  image: 'https://cdn.example.com/sword.png',
+  type: 'non-fungible',
   attributes: {
-    damage: 150,
+    damage: 100,
     rarity: 'legendary',
     element: 'fire'
   },
-  maxSupply: 100
-});
-\`\`\`
+  metadata: {
+    image: 'https://...',
+    description: 'A powerful blade forged in dragon fire'
+  }
+});
+ +

Inventory Management

+
// Get user inventory
+const inventory = await aethex.assets.getInventory();
 
-### Query Assets
-
-\`\`\`javascript
-// Get user's assets
-const myAssets = await aethex.assets.list({
-  owner: 'me',
-  type: 'item'
-});
-
-// Get specific asset
-const asset = await aethex.assets.get('ast_xyz789');
-
-// Search assets
-const results = await aethex.assets.search({
-  query: 'sword',
-  rarity: 'legendary'
-});
-\`\`\`
-
-### Transfer Assets
-
-\`\`\`javascript
-await aethex.assets.transfer({
-  assetId: 'ast_xyz789',
-  to: 'usr_recipient123',
+// Grant asset to user
+await aethex.assets.grant({
+  userId: 'user_abc',
+  assetId: 'sword_legendary_001',
   quantity: 1
 });
-\`\`\`
 
-### Asset Metadata
-
-\`\`\`json
-{
-  "id": "ast_xyz789",
-  "type": "item",
-  "name": "Legendary Sword",
-  "owner": "usr_abc123",
-  "attributes": {
-    "damage": 150,
-    "rarity": "legendary"
-  },
-  "supply": {
-    "current": 45,
-    "max": 100
-  },
-  "createdAt": "2025-02-01T12:00:00Z"
-}
-\`\`\`
+// Transfer between users
+await aethex.assets.transfer({
+  from: 'user_abc',
+  to: 'user_xyz',
+  assetId: 'sword_legendary_001'
+});
` }, 'events-api': { title: 'Events API', category: 'Core APIs', - categoryColor: '#ff4d4d', + categoryColor: '#0f0', time: '10 min read', - description: 'Real-time event streaming and webhooks', + description: 'Real-time events and messaging', prevDoc: { slug: 'asset-api', name: 'Asset API' }, nextDoc: { slug: 'analytics-api', name: 'Analytics API' }, content: ` -## Events API - -Real-time event streaming and webhook functionality for building reactive applications. - -### WebSocket Connection - -\`\`\`javascript -const socket = aethex.realtime.connect(); - -socket.on('connected', () => { - console.log('Connected to real-time server'); -}); -\`\`\` - -### Subscribe to Channels - -\`\`\`javascript -// Subscribe to a channel -await aethex.realtime.subscribe('game:lobby:123'); - -// Listen for events -aethex.realtime.on('player:joined', (event) => { - console.log('Player joined:', event.playerId); -}); - -aethex.realtime.on('player:left', (event) => { - console.log('Player left:', event.playerId); -}); -\`\`\` - -### Publish Events - -\`\`\`javascript -await aethex.realtime.publish('game:lobby:123', { - type: 'chat:message', +

Events API

+

Real-time event streaming and pub/sub messaging for your applications.

+ +

Publishing Events

+
// Publish a custom event
+await aethex.events.publish({
+  channel: 'game:lobby',
+  event: 'player:ready',
   data: {
-    from: 'usr_abc123',
-    message: 'Hello everyone!'
+    playerId: 'user_abc',
+    character: 'warrior'
   }
-});
-\`\`\`
+});
+ +

Subscribing to Events

+
// Subscribe to a channel
+const subscription = aethex.events.subscribe('game:lobby');
 
-### Presence
-
-\`\`\`javascript
-// Track user presence
-await aethex.realtime.presence.enter('game:lobby:123', {
-  status: 'online',
-  character: 'warrior'
+subscription.on('player:ready', (data) => {
+  console.log('Player ready:', data.playerId);
 });
 
-// Get presence list
-const online = await aethex.realtime.presence.list('game:lobby:123');
-\`\`\`
+subscription.on('game:start', (data) => {
+  console.log('Game starting!');
+});
 
-### Webhooks
+// Unsubscribe
+subscription.unsubscribe();
+ +

Presence Channels

+
// Join a presence channel
+const room = await aethex.events.presence('room:123');
 
-Configure webhooks in your dashboard to receive HTTP callbacks:
+room.on('member:join', (member) => {
+  console.log(member.name, 'joined');
+});
 
-\`\`\`json
-POST https://your-server.com/webhook
-Content-Type: application/json
-X-AeThex-Signature: sha256=...
+room.on('member:leave', (member) => {
+  console.log(member.name, 'left');
+});
 
-{
-  "event": "user.created",
-  "timestamp": "2025-02-04T10:30:00Z",
-  "data": {
-    "userId": "usr_abc123",
-    "email": "new@example.com"
-  }
-}
-\`\`\`
+// Get current members
+const members = room.getMembers();
` }, 'analytics-api': { title: 'Analytics API', category: 'Core APIs', - categoryColor: '#ff4d4d', - time: '8 min read', - description: 'Usage metrics and insights', + categoryColor: '#0f0', + time: '10 min read', + description: 'Track events and analyze user behavior', prevDoc: { slug: 'events-api', name: 'Events API' }, nextDoc: { slug: 'javascript-sdk', name: 'JavaScript SDK' }, content: ` -## Analytics API - -Track usage metrics, user behavior, and performance data. - -### Track Events - -\`\`\`javascript -await aethex.analytics.track('game:started', { - gameId: 'game_123', - mode: 'multiplayer', - players: 4 +

Analytics API

+

Track custom events and analyze user behavior with powerful querying.

+ +

Tracking Events

+
// Track a custom event
+await aethex.analytics.track({
+  event: 'level_complete',
+  properties: {
+    level: 5,
+    score: 12500,
+    time_seconds: 180
+  }
 });
 
-await aethex.analytics.track('purchase:completed', {
-  itemId: 'item_abc',
-  amount: 9.99,
-  currency: 'USD'
+// Track with user context
+await aethex.analytics.track({
+  event: 'purchase',
+  userId: 'user_abc',
+  properties: {
+    item: 'premium_pack',
+    price: 9.99,
+    currency: 'USD'
+  }
+});
+ +

Querying Analytics

+
// Get event counts
+const data = await aethex.analytics.query({
+  event: 'level_complete',
+  groupBy: 'level',
+  timeframe: 'last_7_days'
 });
-\`\`\`
 
-### User Properties
-
-\`\`\`javascript
-await aethex.analytics.identify({
-  plan: 'pro',
-  signupDate: '2025-01-15',
-  referrer: 'twitter'
-});
-\`\`\`
-
-### Query Analytics
-
-\`\`\`javascript
-const metrics = await aethex.analytics.query({
-  metric: 'active_users',
-  period: '30d',
-  groupBy: 'day'
-});
-\`\`\`
-
-### Dashboard Metrics
-
-Access your analytics dashboard at:
-\`\`\`
-https://dashboard.aethex.us/analytics
-\`\`\`
-
-Available metrics:
-- Daily/Monthly Active Users (DAU/MAU)
-- Session duration
-- Retention rates
-- Conversion funnels
-- Revenue tracking
-- Geographic distribution
+// Funnel analysis
+const funnel = await aethex.analytics.funnel({
+  steps: [
+    { event: 'signup' },
+    { event: 'tutorial_complete' },
+    { event: 'first_purchase' }
+  ],
+  timeframe: 'last_30_days'
+});
` }, 'javascript-sdk': { title: 'JavaScript SDK', category: 'SDKs & Tools', categoryColor: '#ffc700', - time: '20 min read', - description: 'Full-featured SDK for web applications', + time: '15 min read', + description: 'Complete reference for the JavaScript/TypeScript SDK', prevDoc: { slug: 'analytics-api', name: 'Analytics API' }, nextDoc: { slug: 'python-sdk', name: 'Python SDK' }, content: ` -## JavaScript SDK - -The official AeThex SDK for JavaScript and TypeScript applications. - -### Installation - -\`\`\`bash -npm install @aethex/sdk +

JavaScript SDK

+

Full-featured SDK for Node.js, browsers, and modern JavaScript runtimes.

+ +

Installation

+
npm install @aethex/sdk
 # or
 yarn add @aethex/sdk
-\`\`\`
-
-### Quick Start
-
-\`\`\`javascript
-import { AeThex } from '@aethex/sdk';
+# or
+pnpm add @aethex/sdk
+ +

Configuration

+
import { AeThex } from '@aethex/sdk';
 
 const aethex = new AeThex({
   projectId: 'your-project-id',
-  apiKey: 'your-api-key'
-});
+  apiKey: 'your-api-key',
+  environment: 'production', // or 'staging'
+  region: 'auto' // or 'us', 'eu', 'asia'
+});
+ +

TypeScript Support

+

The SDK is written in TypeScript and provides full type definitions:

+
import { AeThex, User, Asset, Session } from '@aethex/sdk';
 
-// Authenticate
-const user = await aethex.auth.login({
-  email: 'user@example.com',
-  password: 'password'
-});
+const user: User = await aethex.identity.getProfile();
+const assets: Asset[] = await aethex.assets.getInventory();
+ +

Error Handling

+
import { AeThexError, RateLimitError } from '@aethex/sdk';
 
-// Use APIs
-const profile = await aethex.identity.me();
-const assets = await aethex.assets.list({ owner: 'me' });
-\`\`\`
-
-### TypeScript Support
-
-\`\`\`typescript
-import { AeThex, User, Asset } from '@aethex/sdk';
-
-const aethex = new AeThex({ projectId: 'xxx' });
-
-const user: User = await aethex.auth.login({ ... });
-const assets: Asset[] = await aethex.assets.list({ ... });
-\`\`\`
-
-### React Integration
-
-\`\`\`jsx
-import { AeThexProvider, useAeThex, useUser } from '@aethex/react';
-
-function App() {
-  return (
-    
-      
-    
-  );
-}
-
-function UserProfile() {
-  const { user, loading } = useUser();
-  
-  if (loading) return 
Loading...
; - if (!user) return
Not logged in
; - - return
Welcome, {user.displayName}!
; -} -\`\`\` - -### Browser Support - -- Chrome 80+ -- Firefox 75+ -- Safari 13+ -- Edge 80+ +try { + await aethex.assets.transfer({ ... }); +} catch (error) { + if (error instanceof RateLimitError) { + console.log('Rate limited, retry after:', error.retryAfter); + } else if (error instanceof AeThexError) { + console.log('API error:', error.code, error.message); + } +}
` }, 'python-sdk': { title: 'Python SDK', category: 'SDKs & Tools', categoryColor: '#ffc700', - time: '15 min read', - description: 'Backend integration and automation', + time: '12 min read', + description: 'Python library for server-side integration', prevDoc: { slug: 'javascript-sdk', name: 'JavaScript SDK' }, nextDoc: { slug: 'unity-plugin', name: 'Unity Plugin' }, content: ` -## Python SDK - -The official AeThex SDK for Python backend applications. - -### Installation - -\`\`\`bash -pip install aethex -\`\`\` - -### Quick Start - -\`\`\`python -from aethex import AeThex +

Python SDK

+

Async-first Python library for server-side integration.

+ +

Installation

+
pip install aethex
+# or with poetry
+poetry add aethex
+ +

Configuration

+
from aethex import AeThex
 
 client = AeThex(
     project_id="your-project-id",
     api_key="your-api-key"
-)
-
-# Verify a user token
-user = client.auth.verify_token(token)
-
-# Get user data
-profile = client.identity.get_user(user.id)
-\`\`\`
-
-### Async Support
-
-\`\`\`python
-import asyncio
+)
+ +

Async Usage

+
import asyncio
 from aethex import AsyncAeThex
 
 async def main():
-    client = AsyncAeThex(project_id="xxx", api_key="xxx")
+    client = AsyncAeThex(
+        project_id="your-project-id",
+        api_key="your-api-key"
+    )
     
-    users = await client.identity.search("john")
-    
-    for user in users:
-        print(user.display_name)
+    user = await client.identity.get_profile()
+    print(f"Hello, {user.display_name}")
 
-asyncio.run(main())
-\`\`\`
-
-### Django Integration
-
-\`\`\`python
-# settings.py
-AETHEX_PROJECT_ID = "your-project"
-AETHEX_API_KEY = "your-key"
+asyncio.run(main())
+ +

Django Integration

+
# settings.py
+AETHEX_PROJECT_ID = "your-project-id"
+AETHEX_API_KEY = "your-api-key"
 
 # views.py
-from aethex.django import aethex_login_required
+from aethex.django import aethex_client
 
-@aethex_login_required
-def protected_view(request):
-    user = request.aethex_user
-    return JsonResponse({"user": user.display_name})
-\`\`\`
-
-### Flask Integration
-
-\`\`\`python
-from flask import Flask
-from aethex.flask import AeThexFlask
-
-app = Flask(__name__)
-aethex = AeThexFlask(app)
-
-@app.route('/protected')
-@aethex.login_required
-def protected():
-    return f"Hello, {aethex.current_user.display_name}"
-\`\`\`
+def profile_view(request):
+    user = aethex_client.identity.get_user(request.user.aethex_id)
+    return render(request, 'profile.html', {'user': user})
` }, 'unity-plugin': { title: 'Unity Plugin', category: 'SDKs & Tools', categoryColor: '#ffc700', - time: '25 min read', - description: 'Game engine integration guide', + time: '15 min read', + description: 'Native Unity integration for games', prevDoc: { slug: 'python-sdk', name: 'Python SDK' }, nextDoc: { slug: 'cli', name: 'CLI Reference' }, content: ` -## Unity Plugin - -Integrate AeThex into your Unity games. - -### Installation - -1. Open Unity Package Manager (Window > Package Manager) -2. Click "+" and select "Add package from git URL" -3. Enter: \`https://github.com/AeThex-LABS/unity-sdk.git\` - -Or download the \`.unitypackage\` from the releases page. - -### Setup - -\`\`\`csharp -using AeThex; +

Unity Plugin

+

Native Unity SDK for seamless game integration.

+ +

Installation

+
    +
  1. Open Unity Package Manager
  2. +
  3. Add package from git URL: https://github.com/aethex/unity-sdk.git
  4. +
  5. Or download from the Asset Store
  6. +
+ +

Setup

+
using AeThex;
 
 public class GameManager : MonoBehaviour
 {
@@ -856,40 +573,17 @@ public class GameManager : MonoBehaviour
             ApiKey = "your-api-key"
         });
     }
-}
-\`\`\`
-
-### Authentication
-
-\`\`\`csharp
-using AeThex;
-using AeThex.Auth;
-
-public class AuthManager : MonoBehaviour
+}
+ +

Authentication

+
public async void SignIn()
 {
-    public async void Login()
-    {
-        var user = await AeThexSDK.Auth.Login(
-            email: "user@example.com",
-            password: "password"
-        );
-        
-        Debug.Log($"Welcome, {user.DisplayName}!");
-    }
-    
-    public async void LoginWithOAuth()
-    {
-        var user = await AeThexSDK.Auth.LoginWithOAuth(
-            OAuthProvider.Google
-        );
-    }
-}
-\`\`\`
-
-### Multiplayer
-
-\`\`\`csharp
-using AeThex.Realtime;
+    var session = await AeThexSDK.Auth.SignIn(AuthProvider.Discord);
+    Debug.Log($"Welcome, {session.User.DisplayName}!");
+}
+ +

Multiplayer

+
using AeThex.Realtime;
 
 public class MultiplayerManager : MonoBehaviour
 {
@@ -903,24 +597,7 @@ public class MultiplayerManager : MonoBehaviour
             Debug.Log($"{player.Name} joined!");
         };
     }
-    
-    public void SendPosition(Vector3 pos)
-    {
-        currentRoom.Send("position", new { x = pos.x, y = pos.y, z = pos.z });
-    }
-}
-\`\`\`
-
-### Assets
-
-\`\`\`csharp
-var inventory = await AeThexSDK.Assets.GetInventory();
-
-foreach (var item in inventory)
-{
-    Debug.Log($"Item: {item.Name}, Rarity: {item.Attributes["rarity"]}");
-}
-\`\`\`
+}
` }, 'cli': { @@ -932,343 +609,184 @@ foreach (var item in inventory) prevDoc: { slug: 'unity-plugin', name: 'Unity Plugin' }, nextDoc: { slug: 'storage', name: 'Decentralized Storage' }, content: ` -## CLI Reference - -The AeThex command-line interface for project management and deployment. - -### Installation - -\`\`\`bash -npm install -g @aethex/cli +

CLI Reference

+

The AeThex command-line interface for project management and deployment.

+ +

Installation

+
npm install -g @aethex/cli
 # or
-brew install aethex
-\`\`\`
-
-### Authentication
-
-\`\`\`bash
-# Login to your account
+brew install aethex
+ +

Authentication

+
# Login to your account
 aethex login
 
 # Check auth status
 aethex whoami
 
 # Logout
-aethex logout
-\`\`\`
-
-### Project Management
-
-\`\`\`bash
-# Create a new project
+aethex logout
+ +

Project Management

+
# Create a new project
 aethex init my-project
 
 # List your projects
 aethex projects list
 
 # Switch project
-aethex projects use my-project
-\`\`\`
-
-### Deployment
-
-\`\`\`bash
-# Deploy to production
+aethex projects use my-project
+ +

Deployment

+
# Deploy to production
 aethex deploy
 
 # Deploy to staging
 aethex deploy --env staging
 
 # View deployment logs
-aethex logs --follow
-\`\`\`
-
-### Development
-
-\`\`\`bash
-# Start local dev server
+aethex logs --follow
+ +

Development

+
# Start local dev server
 aethex dev
 
 # Run database migrations
-aethex db migrate
+aethex migrate
 
-# Generate types
-aethex generate types
-\`\`\`
-
-### Configuration
-
-Create an \`aethex.config.js\` file:
-
-\`\`\`javascript
-module.exports = {
-  projectId: 'your-project',
-  region: 'us-east-1',
-  build: {
-    command: 'npm run build',
-    output: 'dist'
-  }
-};
-\`\`\`
-
-### Environment Variables
-
-\`\`\`bash
-# Set a secret
-aethex env set API_SECRET="your-secret"
-
-# List env vars
-aethex env list
-
-# Pull env to local
-aethex env pull > .env.local
-\`\`\`
+# Generate types from schema
+aethex codegen
` }, 'storage': { title: 'Decentralized Storage', category: 'Advanced Topics', categoryColor: '#a855f7', - time: '18 min read', - description: 'IPFS and distributed data patterns', + time: '12 min read', + description: 'IPFS and distributed file storage', prevDoc: { slug: 'cli', name: 'CLI Reference' }, nextDoc: { slug: 'smart-contracts', name: 'Smart Contracts' }, content: ` -## Decentralized Storage - -Store and retrieve data using IPFS and distributed storage patterns. - -### Overview - -AeThex provides a unified API for decentralized storage: -- **IPFS** — Content-addressed file storage -- **Arweave** — Permanent storage for critical data -- **AeThex CDN** — Fast edge caching - -### Upload Files - -\`\`\`javascript -// Upload a file +

Decentralized Storage

+

Store and retrieve files using IPFS and our distributed storage network.

+ +

Uploading Files

+
// Upload a file
 const result = await aethex.storage.upload({
-  file: fileBlob,
-  name: 'my-asset.png'
+  file: fileBuffer,
+  name: 'game-asset.png',
+  type: 'image/png'
 });
 
-console.log(result.cid);  // IPFS content ID
-console.log(result.url);  // CDN URL
-\`\`\`
+console.log('IPFS CID:', result.cid);
+console.log('URL:', result.url);
+ +

Retrieving Files

+
// Get file by CID
+const file = await aethex.storage.get('QmXyz...');
 
-### Upload JSON
+// Get file URL for CDN access
+const url = aethex.storage.getUrl('QmXyz...');
+ +

Pinning

+
// Pin content to ensure persistence
+await aethex.storage.pin('QmXyz...');
 
-\`\`\`javascript
-const metadata = await aethex.storage.uploadJSON({
-  name: "Legendary Sword",
-  description: "A powerful weapon",
-  attributes: { damage: 150 }
-});
-
-console.log(metadata.url);
-\`\`\`
-
-### Retrieve Files
-
-\`\`\`javascript
-// By CID
-const data = await aethex.storage.get('Qm...');
-
-// By URL
-const file = await fetch('https://cdn.aethex.us/ipfs/Qm...');
-\`\`\`
-
-### Pinning
-
-\`\`\`javascript
-// Pin content to keep it available
-await aethex.storage.pin('Qm...');
+// Unpin content
+await aethex.storage.unpin('QmXyz...');
 
 // List pinned content
-const pins = await aethex.storage.listPins();
-\`\`\`
-
-### Best Practices
-
-1. **Use CDN URLs** for user-facing content (faster)
-2. **Store CIDs** for permanent references
-3. **Pin important content** to ensure availability
-4. **Use Arweave** for data that must be permanent
+const pins = await aethex.storage.listPins();
` }, 'smart-contracts': { title: 'Smart Contracts', category: 'Advanced Topics', categoryColor: '#a855f7', - time: '22 min read', - description: 'On-chain asset management', + time: '15 min read', + description: 'Blockchain integration and on-chain assets', prevDoc: { slug: 'storage', name: 'Decentralized Storage' }, nextDoc: { slug: 'ai-integration', name: 'AI Integration' }, content: ` -## Smart Contracts - -Deploy and interact with on-chain assets. - -### Supported Chains - -- Ethereum (mainnet & testnets) -- Polygon -- Arbitrum -- Base -- Solana - -### Deploy a Contract - -\`\`\`javascript -const contract = await aethex.contracts.deploy({ +

Smart Contracts

+

Integrate blockchain functionality for on-chain assets and transactions.

+ +

Supported Chains

+ + +

Minting NFTs

+
// Mint an NFT
+const nft = await aethex.blockchain.mint({
   chain: 'polygon',
-  template: 'erc721',
-  name: 'My Collection',
-  symbol: 'MC'
-});
-
-console.log(contract.address);
-\`\`\`
-
-### Mint NFTs
-
-\`\`\`javascript
-const nft = await aethex.contracts.mint({
-  contract: contract.address,
-  to: userWallet,
+  contract: '0x...',
+  recipient: '0x...',
   metadata: {
-    name: 'Item #1',
-    image: 'ipfs://...'
+    name: 'Epic Sword',
+    image: 'ipfs://...',
+    attributes: [
+      { trait_type: 'Damage', value: 100 }
+    ]
   }
-});
-\`\`\`
+});
+ +

Wallet Connection

+
// Connect user wallet
+const wallet = await aethex.blockchain.connectWallet();
 
-### Read Contract State
+// Get balance
+const balance = await wallet.getBalance();
 
-\`\`\`javascript
-const owner = await aethex.contracts.read({
-  address: contract.address,
-  method: 'ownerOf',
-  args: [tokenId]
-});
-\`\`\`
-
-### Write Transactions
-
-\`\`\`javascript
-const tx = await aethex.contracts.write({
-  address: contract.address,
-  method: 'transfer',
-  args: [to, tokenId],
-  signer: wallet
-});
-
-await tx.wait();
-\`\`\`
-
-### Gas Estimation
-
-\`\`\`javascript
-const gas = await aethex.contracts.estimateGas({
-  address: contract.address,
-  method: 'mint',
-  args: [to, metadata]
-});
-
-console.log(\`Estimated gas: \${gas}\`);
-\`\`\`
+// Sign message
+const signature = await wallet.signMessage('Verify ownership');
` }, 'ai-integration': { title: 'AI Integration', category: 'Advanced Topics', categoryColor: '#a855f7', - time: '20 min read', - description: 'Machine learning APIs and models', + time: '12 min read', + description: 'AI-powered features for your applications', prevDoc: { slug: 'smart-contracts', name: 'Smart Contracts' }, nextDoc: { slug: 'security', name: 'Security Best Practices' }, content: ` -## AI Integration - -Leverage AI capabilities in your applications. - -### Available Models - -| Model | Use Case | -|-------|----------| -| GPT-4 | Text generation, chat | -| DALL-E | Image generation | -| Whisper | Speech-to-text | -| Embeddings | Semantic search | - -### Text Generation - -\`\`\`javascript -const response = await aethex.ai.generate({ +

AI Integration

+

Leverage AI capabilities in your applications.

+ +

Available Models

+ + + + + + + + + + +
ModelUse Case
GPT-4Text generation, chat
DALL-EImage generation
WhisperSpeech-to-text
EmbeddingsSemantic search
+ +

Text Generation

+
const response = await aethex.ai.generate({
   model: 'gpt-4',
   prompt: 'Write a quest description for a fantasy RPG',
   maxTokens: 200
 });
 
-console.log(response.text);
-\`\`\`
-
-### Chat
-
-\`\`\`javascript
-const chat = await aethex.ai.chat({
-  model: 'gpt-4',
-  messages: [
-    { role: 'system', content: 'You are a helpful NPC guide.' },
-    { role: 'user', content: 'Where can I find the legendary sword?' }
-  ]
-});
-
-console.log(chat.message);
-\`\`\`
-
-### Image Generation
-
-\`\`\`javascript
-const image = await aethex.ai.generateImage({
-  prompt: 'A mystical forest with glowing mushrooms',
-  size: '1024x1024'
-});
-
-console.log(image.url);
-\`\`\`
-
-### Embeddings
-
-\`\`\`javascript
-// Create embeddings for semantic search
-const embedding = await aethex.ai.embed('magical sword');
-
-// Store and search
-await aethex.vectors.upsert({
-  id: 'item-1',
-  embedding: embedding,
-  metadata: { name: 'Excalibur' }
-});
-
-const results = await aethex.vectors.search({
-  query: 'powerful weapon',
-  limit: 10
-});
-\`\`\`
-
-### NPC Dialogue
-
-\`\`\`javascript
-const npc = await aethex.ai.createNPC({
+console.log(response.text);
+ +

NPC Dialogue

+
const npc = await aethex.ai.createNPC({
   personality: 'A wise old wizard who speaks in riddles',
   knowledge: ['game lore', 'quest hints']
 });
 
-const dialogue = await npc.respond('What dangers await in the dungeon?');
-\`\`\`
+const dialogue = await npc.respond('What dangers await in the dungeon?');
` }, 'security': { @@ -1280,74 +798,39 @@ const dialogue = await npc.respond('What dangers await in the dungeon?'); prevDoc: { slug: 'ai-integration', name: 'AI Integration' }, nextDoc: undefined, content: ` -## Security Best Practices - -Secure your AeThex implementation with these guidelines. - -### API Key Security - -\`\`\`javascript -// ❌ Never expose API keys in client-side code +

Security Best Practices

+

Secure your AeThex implementation with these guidelines.

+ +

API Key Security

+
// ❌ Never expose API keys in client-side code
 const aethex = new AeThex({ apiKey: 'sk_secret' });
 
-// ✅ Use environment variables
-const aethex = new AeThex({ apiKey: process.env.AETHEX_API_KEY });
-
 // ✅ Use public keys for client-side
-const aethex = new AeThex({ publicKey: 'pk_public' });
-\`\`\`
-
-### Authentication
-
-1. **Always verify tokens server-side**
-\`\`\`javascript
-// Server-side verification
-const user = await aethex.auth.verifyToken(token);
-if (!user) throw new Error('Invalid token');
-\`\`\`
-
-2. **Enable MFA for sensitive operations**
-3. **Implement session timeouts**
-4. **Use secure cookie settings**
-
-### Input Validation
-
-\`\`\`javascript
-// Validate all user input
-import { z } from 'zod';
-
+const aethex = new AeThex({ 
+  projectId: 'proj_xxx',
+  publicKey: 'pk_xxx'
+});
+ +

Input Validation

+
// Always validate user input
 const schema = z.object({
-  email: z.string().email(),
-  username: z.string().min(3).max(20).regex(/^[a-z0-9_]+$/)
+  displayName: z.string().min(3).max(30),
+  email: z.string().email()
 });
 
-const validated = schema.parse(userInput);
-\`\`\`
-
-### Rate Limiting
-
-Configure rate limits in your dashboard:
-- API requests: 1000/min per user
-- Auth attempts: 5/min per IP
-- File uploads: 100/hour per user
-
-### CORS Configuration
-
-\`\`\`javascript
-// Only allow specific origins
-aethex.config({
-  allowedOrigins: [
-    'https://yourgame.com',
-    'https://app.yourgame.com'
-  ]
-});
-\`\`\`
-
-### Audit Logging
-
-\`\`\`javascript
-// Enable audit logs for sensitive operations
-aethex.audit.enable({
+const validated = schema.parse(userInput);
+ +

Rate Limiting

+

Configure rate limits in your project settings:

+ + +

Audit Logging

+
// Enable audit logs
+await aethex.security.enableAuditLog({
   events: ['auth.login', 'asset.transfer', 'admin.action']
 });
 
@@ -1355,19 +838,17 @@ aethex.audit.enable({
 const logs = await aethex.audit.query({
   userId: 'usr_abc123',
   from: '2025-01-01'
-});
-\`\`\`
-
-### Security Checklist
-
-- [ ] API keys stored in environment variables
-- [ ] HTTPS enforced in production
-- [ ] Input validation on all endpoints
-- [ ] Rate limiting configured
-- [ ] CORS properly restricted
-- [ ] Audit logging enabled
-- [ ] Regular dependency updates
-- [ ] Security headers configured
+});
+ +

Security Checklist

+ ` } }; @@ -1380,317 +861,447 @@ export function getStaticPaths() { // Get the slug from the URL const { slug } = Astro.params; - -// Get the doc content const doc = allDocs[slug as string]; -// 404 if doc not found if (!doc) { return Astro.redirect('/docs'); } + +// Navigation items for sidebar +const navSections = [ + { + title: 'Getting Started', + items: [ + { slug: 'introduction', name: 'Introduction' }, + { slug: 'quickstart', name: 'Quickstart Guide' }, + { slug: 'architecture', name: 'Architecture' }, + { slug: 'authentication', name: 'Authentication' }, + ] + }, + { + title: 'Core APIs', + items: [ + { slug: 'identity-api', name: 'Identity API' }, + { slug: 'asset-api', name: 'Asset API' }, + { slug: 'events-api', name: 'Events API' }, + { slug: 'analytics-api', name: 'Analytics API' }, + ] + }, + { + title: 'SDKs & Tools', + items: [ + { slug: 'javascript-sdk', name: 'JavaScript SDK' }, + { slug: 'python-sdk', name: 'Python SDK' }, + { slug: 'unity-plugin', name: 'Unity Plugin' }, + { slug: 'cli', name: 'CLI Reference' }, + ] + }, + { + title: 'Advanced Topics', + items: [ + { slug: 'storage', name: 'Decentralized Storage' }, + { slug: 'smart-contracts', name: 'Smart Contracts' }, + { slug: 'ai-integration', name: 'AI Integration' }, + { slug: 'security', name: 'Security' }, + ] + } +]; --- -
-
- - +
+ + + + +
+
+ +
+ +

{doc.title}

+

{doc.description}

+
- -
$2').replace(/`([^`]+)`/g, '$1').replace(/\*\*([^*]+)\*\*/g, '$1').replace(/## (.*)/g, '

$1

').replace(/### (.*)/g, '

$1

').replace(/#### (.*)/g, '

$1

').replace(/\n\n/g, '

').replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1').replace(/^\d+\. (.*)/gm, '

  • $1
  • ').replace(/^- (.*)/gm, '
  • $1
  • ').replace(/\| (.*) \|/g, '$1').replace(/\|/g, '')} /> - + + +
    + -
    -
    -
    + + +
    diff --git a/src/pages/hall-of-fame.astro b/src/pages/hall-of-fame.astro index e504954..7be97e6 100644 --- a/src/pages/hall-of-fame.astro +++ b/src/pages/hall-of-fame.astro @@ -2,19 +2,49 @@ import MainLayout from '../layouts/MainLayout.astro'; const legendaryContributors = [ - { name: 'Alex Chen', username: '@alexdev', avatar: 'https://i.pravatar.cc/100?img=1', title: 'Core Architect', contributions: 847, points: 12500, badges: ['🏆', '💎', '⚡'], specialty: 'Infrastructure' }, - { name: 'Maya Rodriguez', username: '@maya_sdk', avatar: 'https://i.pravatar.cc/100?img=5', title: 'SDK Lead', contributions: 623, points: 9800, badges: ['🏆', '🔧', '📚'], specialty: 'Developer Tools' }, - { name: 'Jordan Kim', username: '@j_kim', avatar: 'https://i.pravatar.cc/100?img=3', title: 'Docs Champion', contributions: 512, points: 7600, badges: ['🏆', '📖', '✨'], specialty: 'Documentation' }, + { + name: 'Alex Chen', + username: '@alexdev', + avatar: 'https://i.pravatar.cc/150?img=1', + title: 'Core Architect', + contributions: 847, + points: 12500, + badges: ['🏆', '💎', '⚡'], + specialty: 'Infrastructure', + quote: 'Building the future, one commit at a time.' + }, + { + name: 'Maya Rodriguez', + username: '@maya_sdk', + avatar: 'https://i.pravatar.cc/150?img=5', + title: 'SDK Lead', + contributions: 623, + points: 9800, + badges: ['🏆', '🔧', '📚'], + specialty: 'Developer Tools', + quote: 'Great APIs are invisible to the developer.' + }, + { + name: 'Jordan Kim', + username: '@j_kim', + avatar: 'https://i.pravatar.cc/150?img=3', + title: 'Docs Champion', + contributions: 512, + points: 7600, + badges: ['🏆', '📖', '✨'], + specialty: 'Documentation', + quote: 'Documentation is a love letter to your future self.' + }, ]; const topContributors = [ - { rank: 4, name: 'Sam Patel', username: '@sampatel', avatar: 'https://i.pravatar.cc/100?img=8', contributions: 389, points: 5400, badge: '🥇' }, - { rank: 5, name: 'Riley Johnson', username: '@rileyj', avatar: 'https://i.pravatar.cc/100?img=12', contributions: 342, points: 4800, badge: '🥇' }, - { rank: 6, name: 'Casey Morgan', username: '@caseym', avatar: 'https://i.pravatar.cc/100?img=15', contributions: 298, points: 4200, badge: '🥇' }, - { rank: 7, name: 'Taylor Swift', username: '@tswift_dev', avatar: 'https://i.pravatar.cc/100?img=20', contributions: 276, points: 3900, badge: '🥈' }, - { rank: 8, name: 'Morgan Lee', username: '@morganlee', avatar: 'https://i.pravatar.cc/100?img=25', contributions: 254, points: 3600, badge: '🥈' }, - { rank: 9, name: 'Jamie Wilson', username: '@jwilson', avatar: 'https://i.pravatar.cc/100?img=30', contributions: 231, points: 3300, badge: '🥈' }, - { rank: 10, name: 'Chris Anderson', username: '@chris_a', avatar: 'https://i.pravatar.cc/100?img=33', contributions: 215, points: 3100, badge: '🥉' }, + { rank: 4, name: 'Sam Patel', username: '@sampatel', avatar: 'https://i.pravatar.cc/100?img=8', contributions: 389, points: 5400, tier: 'gold' }, + { rank: 5, name: 'Riley Johnson', username: '@rileyj', avatar: 'https://i.pravatar.cc/100?img=12', contributions: 342, points: 4800, tier: 'gold' }, + { rank: 6, name: 'Casey Morgan', username: '@caseym', avatar: 'https://i.pravatar.cc/100?img=15', contributions: 298, points: 4200, tier: 'gold' }, + { rank: 7, name: 'Taylor Swift', username: '@tswift_dev', avatar: 'https://i.pravatar.cc/100?img=20', contributions: 276, points: 3900, tier: 'silver' }, + { rank: 8, name: 'Morgan Lee', username: '@morganlee', avatar: 'https://i.pravatar.cc/100?img=25', contributions: 254, points: 3600, tier: 'silver' }, + { rank: 9, name: 'Jamie Wilson', username: '@jwilson', avatar: 'https://i.pravatar.cc/100?img=30', contributions: 231, points: 3300, tier: 'silver' }, + { rank: 10, name: 'Chris Anderson', username: '@chris_a', avatar: 'https://i.pravatar.cc/100?img=33', contributions: 215, points: 3100, tier: 'bronze' }, ]; const hallOfShame = [ @@ -24,31 +54,32 @@ const hallOfShame = [ ]; const badges = [ - { icon: '🏆', name: 'Legend', description: 'Top 3 all-time contributor', rarity: 'legendary' }, - { icon: '💎', name: 'Diamond', description: '500+ contributions', rarity: 'epic' }, - { icon: '⚡', name: 'First Responder', description: 'Fastest bug reporter', rarity: 'rare' }, - { icon: '🔧', name: 'Builder', description: 'Core infrastructure contributor', rarity: 'epic' }, - { icon: '📚', name: 'Scholar', description: 'Documentation excellence', rarity: 'rare' }, - { icon: '🥇', name: 'Gold Tier', description: 'Top 10 contributor', rarity: 'rare' }, - { icon: '🥈', name: 'Silver Tier', description: 'Top 25 contributor', rarity: 'uncommon' }, - { icon: '🥉', name: 'Bronze Tier', description: 'Top 50 contributor', rarity: 'common' }, + { icon: '🏆', name: 'Legend', description: 'Top 3 all-time contributor', rarity: 'legendary', color: '#ffc700' }, + { icon: '💎', name: 'Diamond', description: '500+ contributions', rarity: 'epic', color: '#a855f7' }, + { icon: '⚡', name: 'First Responder', description: 'Fastest bug reporter', rarity: 'rare', color: '#6cf' }, + { icon: '🔧', name: 'Builder', description: 'Core infrastructure work', rarity: 'epic', color: '#a855f7' }, + { icon: '📚', name: 'Scholar', description: 'Documentation excellence', rarity: 'rare', color: '#6cf' }, + { icon: '🥇', name: 'Gold Tier', description: 'Top 10 contributor', rarity: 'rare', color: '#ffc700' }, + { icon: '🥈', name: 'Silver Tier', description: 'Top 25 contributor', rarity: 'uncommon', color: '#888' }, + { icon: '🥉', name: 'Bronze Tier', description: 'Top 50 contributor', rarity: 'common', color: '#cd7f32' }, ]; const stats = [ - { value: '500+', label: 'Total Contributors' }, - { value: '12.5K', label: 'Total Contributions' }, + { value: '500+', label: 'Contributors' }, + { value: '12.5K', label: 'Contributions' }, { value: '847', label: 'Top Score' }, - { value: '24', label: 'Unique Badges' }, + { value: '24', label: 'Badges' }, ]; --- - +
    +
    - Recognition + ⭐ Recognition

    Hall of Fame

    -

    Celebrating the builders, contributors, and community members who make AeThex possible. And calling out those who don't play nice.

    +

    Celebrating the builders, contributors, and community members who make AeThex possible. And calling out those who don't play by the rules.

    @@ -64,14 +95,21 @@ const stats = [
    -

    🏆 Legendary Contributors

    +
    + > LEGENDARY_STATUS +

    The Legends

    +

    Top 3 all-time contributors who shaped AeThex

    +
    {legendaryContributors.map((legend, i) => (
    -
    #{i + 1}
    +
    +
    + 👑 + #{i + 1} +
    {legend.name} - 👑

    {legend.name}

    {legend.username}

    @@ -91,6 +129,7 @@ const stats = [ Points
    +

    "{legend.quote}"

    {legend.specialty} ))} @@ -99,33 +138,48 @@ const stats = [
    -

    Top Contributors

    +
    + > LEADERBOARD +

    Top Contributors

    +

    Ranked by total contribution points

    +
    +
    + Rank + Contributor + Contributions + Points + Tier +
    {topContributors.map(user => ( -
    +
    #{user.rank} - {user.name} -
    - {user.name} - {user.username} -
    - {user.badge} -
    - {user.contributions} contributions - {user.points.toLocaleString()} pts +
    + {user.name} +
    + {user.name} + {user.username} +
    + {user.contributions} + {user.points.toLocaleString()} + {user.tier}
    ))}
    - View Full Leaderboard → + View Full Leaderboard →
    -

    Badges & Achievements

    +
    + > ACHIEVEMENTS +

    Badges & Achievements

    +

    Earn recognition for your contributions

    +
    {badges.map(badge => ( -
    +
    {badge.icon}

    {badge.name}

    {badge.description}

    @@ -137,8 +191,11 @@ const stats = [
    -

    🚫 Hall of Shame

    -

    Bad actors who violated community guidelines. Transparency is key.

    +
    + > HALL_OF_SHAME +

    🚫 Hall of Shame

    +

    Bad actors who violated community guidelines. Transparency is key.

    +
    {hallOfShame.map(offender => (
    @@ -160,47 +217,65 @@ const stats = [

    Want Your Name Here?

    Start contributing to AeThex and climb the leaderboard. Every contribution counts.

    - Start Contributing → +
    diff --git a/src/pages/live-activity.astro b/src/pages/live-activity.astro index a3de217..83a676f 100644 --- a/src/pages/live-activity.astro +++ b/src/pages/live-activity.astro @@ -17,27 +17,34 @@ const activityFeed = [ ]; const liveStats = [ - { label: 'Active Users', value: '2,847', change: '+12%', icon: '👥' }, - { label: 'API Requests/min', value: '45.2K', change: '+8%', icon: '⚡' }, - { label: 'Active Sessions', value: '1,234', change: '+5%', icon: '🔗' }, - { label: 'Uptime', value: '99.99%', change: '', icon: '✅' }, + { label: 'Active Users', value: '2,847', change: '+12%', trend: 'up', icon: '👥' }, + { label: 'API Requests/min', value: '45.2K', change: '+8%', trend: 'up', icon: '⚡' }, + { label: 'Active Sessions', value: '1,234', change: '+5%', trend: 'up', icon: '🔗' }, + { label: 'Uptime', value: '99.99%', change: '', trend: 'stable', icon: '✅' }, ]; const channels = [ - { name: 'All Activity', count: 156, active: true }, - { name: 'Releases', count: 12 }, - { name: 'Deployments', count: 24 }, - { name: 'Community', count: 89 }, - { name: 'Development', count: 31 }, + { name: 'All Activity', count: 156, icon: '📡' }, + { name: 'Releases', count: 12, icon: '🚀' }, + { name: 'Deployments', count: 24, icon: '⚡' }, + { name: 'Community', count: 89, icon: '👥' }, + { name: 'Development', count: 31, icon: '💻' }, +]; + +const upcomingEvents = [ + { title: 'Weekly Community Call', time: 'Today, 5:00 PM UTC', type: 'call' }, + { title: 'SDK v3.0 Release', time: 'Feb 10, 2026', type: 'release' }, + { title: 'Developer Workshop', time: 'Feb 15, 2026', type: 'workshop' }, ]; --- - +
    +
    - + LIVE

    Activity Feed

    @@ -46,17 +53,21 @@ const channels = [
    -
    - {liveStats.map(stat => ( -
    - {stat.icon} -
    - {stat.value} - {stat.change && {stat.change}} +
    +
    + {liveStats.map(stat => ( +
    + {stat.icon} +
    +
    + {stat.value} + {stat.change && {stat.change}} +
    + {stat.label} +
    - {stat.label} -
    - ))} + ))} +
    @@ -64,37 +75,68 @@ const channels = [
    -

    Latest Activity

    +
    +

    Latest Activity

    + + + Live + +
    @@ -102,9 +144,10 @@ const channels = [
    -
    +
    {activityFeed.map(item => ( -
    +
    +
    {item.icon}

    @@ -112,91 +155,143 @@ const channels = [ {item.action} {item.target}

    - {item.time} +
    + {item.time} + {item.type} +
    - {item.type}
    ))}
    - +
    - + + + +
    +

    Join the Action

    +

    Contribute to AeThex and see your activity appear here in real-time.

    + -
    diff --git a/src/pages/universal-search.astro b/src/pages/universal-search.astro index 2d715ce..64ce66b 100644 --- a/src/pages/universal-search.astro +++ b/src/pages/universal-search.astro @@ -1,176 +1,634 @@ --- import MainLayout from '../layouts/MainLayout.astro'; + +const categories = [ + { id: 'all', name: 'All Results', icon: '🔍', count: 156 }, + { id: 'docs', name: 'Documentation', icon: '📚', count: 42 }, + { id: 'products', name: 'Products', icon: '🚀', count: 28 }, + { id: 'community', name: 'Community', icon: '👥', count: 34 }, + { id: 'blog', name: 'Blog Posts', icon: '📝', count: 52 }, +]; + +const popularSearches = [ + 'Getting Started', + 'GameForge', + 'Passport SSO', + 'Asset API', + 'Multiplayer', + 'Authentication', +]; + +const featuredResults = [ + { + title: 'Introduction to AeThex', + description: 'Learn the fundamentals of the AeThex ecosystem and how to get started building.', + category: 'Docs', + categoryColor: '#6cf', + url: '/docs/introduction' + }, + { + title: 'GameForge Quick Start', + description: 'Build and deploy your first game in under 10 minutes with our terminal-inspired toolkit.', + category: 'Products', + categoryColor: '#0f0', + url: '/gameforge' + }, + { + title: 'Identity API Reference', + description: 'Complete documentation for user authentication, sessions, and profile management.', + category: 'Docs', + categoryColor: '#6cf', + url: '/docs/identity-api' + }, + { + title: 'Community Guidelines', + description: 'How we work together as a community. Code of conduct and contribution guidelines.', + category: 'Community', + categoryColor: '#ffc700', + url: '/community' + }, +]; + +const stats = [ + { value: '1,200+', label: 'Docs Pages' }, + { value: '50+', label: 'Tutorials' }, + { value: '15', label: 'SDKs' }, + { value: '24/7', label: 'Support' }, +]; --- - + +
    -
    -
    -

    🔍 Universal Search

    -

    Search across all AeThex documentation, products, and resources

    +
    +
    +
    + 🔍 Unified Search +

    Find Anything

    +

    Search across all documentation, products, community resources, and more in one place.

    + + + + + +
    -
    -
    -