Skip to main content

WebSocket server project.

Project description

d-back

Last Commit Open Pull Requests License: MIT Stars Contributors Build Status PyPI

Welcome to d-back – the backend service that powers the magical d-zone ambient life simulation!

🎯 Project Overview

d-zone is an ambient life simulation where the presence and activity of users in a Discord server subtly influence a living digital environment. Think of it as a digital terrarium that reacts to your community's energy!

d-back serves as the intelligent bridge between Discord servers and the beautiful d-zone frontend.
It provides real-time user data through WebSocket connections, creating an immersive experience where every Discord user becomes part of a living, breathing digital ecosystem.

Currently, d-back uses sophisticated mock data to simulate user activity, making it perfect for development, testing, and demonstration purposes.

✨ Features

  • 🔌 WebSocket Server: Real-time communication with the d-zone frontend
  • 👥 User Activity Simulation: Mock Discord user data with realistic presence states
  • 🎨 Role Color Support: Beautiful user representation with Discord role colors
  • 🌐 Multi-Server Support: Handle multiple Discord servers simultaneously
  • 📊 Status Tracking: Monitor online, idle, DND, and offline user states
  • 🔒 OAuth2 Ready: Built-in support for Discord OAuth2 authentication
  • 📁 Static File Serving: Serve frontend assets directly from the backend
  • 🚀 Easy Configuration: Simple command-line options and programmatic setup
  • 🧪 Development Friendly: Comprehensive mock data for testing and development

🛠️ Installation

Step-by-Step Setup

  1. Clone the repository:

    git clone https://github.com/NNTin/d-back.git
    cd d-back
    
  2. Create a virtual environment (recommended):

    # On Windows
    python -m venv .venv
    .venv\Scripts\activate
    
    # On macOS/Linux  
    python3 -m venv .venv
    source .venv/bin/activate
    
  3. Install the package:

    # Install in development mode (recommended for contributors)
    pip install -e .
    
    # Or install directly from requirements
    pip install -r requirements.txt
    
  4. Verify installation:

    d_back --version
    

🚀 Usage

Quick Start

The simplest way to get d-back running:

# Start the server with default settings (localhost:3000)
d_back

# Or run as a Python module
python -m d_back

Command Line Options

# Custom host and port
d_back --host 0.0.0.0 --port 8080

# Serve custom static files
d_back --static-dir ./my-frontend-build

# Get help
d_back --help

Programmatic Usage

Use d-back in your Python projects:

import asyncio
from d_back.server import WebSocketServer

async def main():
    # Create server instance
    server = WebSocketServer(port=3000, host="localhost")
    
    # Optional: Set up custom callbacks
    server.on_get_user_data = my_user_data_callback
    server.on_get_server_data = my_server_data_callback
    
    # Start the server
    print("Starting d-back server...")
    await server.start()

# Run the server
asyncio.run(main())

Testing the WebSocket Connection

You can test the server using any WebSocket client:

// JavaScript example for testing
const socket = new WebSocket('ws://localhost:3000');

socket.onopen = () => {
    console.log('Connected to d-back!');
    // Request user data for a mock server
    socket.send(JSON.stringify({
        type: 'get_user_data',
        serverId: '232769614004748288'
    }));
};

socket.onmessage = (event) => {
    const data = JSON.parse(event.data);
    console.log('Received:', data);
};

⚙️ Configuration

Command Line Arguments

Option Default Description
--port 3000 Port to run the WebSocket server on
--host localhost Host to bind the server to
--static-dir Built-in Directory to serve static files from
--version - Show version information

Mock Server Configuration

d-back comes with pre-configured mock Discord servers for testing:

  • D-World Server (232769614004748288): Main development server with active users
  • Docs Server (482241773318701056): Documentation server
  • OAuth2 Server (123456789012345678): Protected server for OAuth testing
  • My Repos Server (987654321098765432): Repository showcase server

Environment Variables

While d-back doesn't currently use environment variables for configuration, you can extend it easily:

import os
from d_back.server import WebSocketServer

# Example: Use environment variables
port = int(os.getenv('D_BACK_PORT', 3000))
host = os.getenv('D_BACK_HOST', 'localhost')

server = WebSocketServer(port=port, host=host)

Custom Data Providers

Replace mock data with your own:

from d_back.server import WebSocketServer

async def my_user_data_provider(server_id):
    # Your custom logic here
    return {
        "user123": {
            "uid": "user123",
            "username": "MyUser",
            "status": "online",
            "roleColor": "#ff6b6b"
        }
    }

server = WebSocketServer()
server.on_get_user_data = my_user_data_provider

📜 License

This project is licensed under the MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

d_back-0.0.14.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

d_back-0.0.14-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file d_back-0.0.14.tar.gz.

File metadata

  • Download URL: d_back-0.0.14.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.13

File hashes

Hashes for d_back-0.0.14.tar.gz
Algorithm Hash digest
SHA256 2ea3cac7c132731efc03ca753bcc21f816752cdffce31b99ccb454a94cbd4d35
MD5 be2051423761fbbdeb0b1b368458d2b5
BLAKE2b-256 77b7b80d4c94cee47682af216bcaeefebcedc38643786ded4e82c8739738efee

See more details on using hashes here.

File details

Details for the file d_back-0.0.14-py3-none-any.whl.

File metadata

  • Download URL: d_back-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.13

File hashes

Hashes for d_back-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 7203390fee3152fddd7fa5a749c4c4d61f613ecaf03b1047b6f39c0d061e8b70
MD5 fa294ee5e2dd5878a5d680e40b7cd532
BLAKE2b-256 deb0dd67e73fd48b7389ad3347384c07a46a7e407282b78a994a18604ebee29f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page