Skip to content

Developer Guide

Documentation for developing and contributing to Tux: setup, architecture, patterns, and tooling.


Contributing

Contributing to Tux — Setup, workflow, pull requests, and where to find Git, branch naming, and code review guidance.


Tutorials

Tutorials — Step-by-step guides:

Topic Description
Development Setup Environment and first run
First Contribution End-to-end first PR
Creating Your First Cog Module and cog structure
Creating Your First Command Commands and invocation
Creating Your First Migration Database schema changes
Database Integration Using the database in code
Project Structure Layout and conventions
Testing Setup Running and writing tests

Guides

Guides — How-to and tooling:

Topic Description
Components V2 Discord.py Components V2 (buttons, views, modals)
Creating Cursor Rules Cursor rules for the project
Creating Cursor Commands Cursor slash commands
Docker Images Building and using Docker images
Extending the CLI Adding CLI commands

Concepts

Concepts — Architecture and internals:

Area Contents
Core App, bot, cogs, lifecycle, modules, permissions, plugins, logging
Database Architecture, service, models, controllers, migrations, testing, utilities
UI Buttons, components, embeds, modals, views
Handlers Hot-reload and event handling
Services Service layer
Shared Shared utilities and config
Tasks Task monitor and background work
Wrappers Wrappers and helpers

Best Practices

Best Practices — Conventions and patterns:

Topic Description
Git Commits, rebasing, pre-commit, PRs
Branch Naming Branch name format and types
Code Review Review checklist and conduct
CI/CD Pipelines and automation
Async Async/await usage
Error Handling Exceptions and recovery
Logging Logging with loguru
Caching Caching strategies
Sentry Instrumentation, sampling, metrics, spans
Testing Unit, integration, e2e, fixtures
Debugging Debug workflow
Documentation Doc and Zensical practices
Namespace Naming and structure

Reference

Resource Description
CLI tux, db, dev, test, config, docs
Environment Variables .env and configuration
Versioning Versions and releases
Renovate Dependency updates