//! # Smokesignal //! //! An event and RSVP management system built on the AT Protocol (atproto) with modern web technologies. //! //! ## Overview //! //! Smokesignal is a comprehensive event management platform that enables users to create, discover, and //! respond to events using the decentralized AT Protocol infrastructure. The application features a modern //! web interface built with HTMX and Bulma CSS, comprehensive internationalization support, and OAuth-based //! authentication. //! //! ## Architecture //! //! The application is built with a modular architecture organized into several key areas: //! //! ### Core Components //! //! - **[`http`]** - Web server implementation using Axum framework with HTMX support //! - **[`storage`]** - Database operations and data models using PostgreSQL and SQLx //! - **[`atproto`]** - AT Protocol client implementation and lexicon definitions //! - **[`oauth`]** - OAuth authentication and session management with Redis/Valkey //! - **[`i18n`]** - Internationalization system using fluent-templates //! //! ### Utilities and Support //! //! - **[`config`]** - Application configuration management and validation //! - **[`filtering`]** - Event filtering and search functionality //! - **[`jose`]** - JSON Web Signature (JWS) implementation for security //! - **[`encoding`]** - Data encoding and decoding utilities //! - **[`validation`]** - Input validation and sanitization //! - **[`resolve`]** - DID resolution and handle management //! - **[`errors`]** - Centralized error handling and reporting //! //! ## Features //! //! ### Event Management //! - Create, edit, and manage events with rich metadata //! - Support for multiple event types (in-person, virtual, hybrid) //! - Event status tracking (planned, scheduled, cancelled, etc.) //! - Location and link management //! //! ### RSVP System //! - User responses with multiple status options (going, interested, not going) //! - Real-time RSVP counts and attendee lists //! - Migration support for legacy events //! //! ### Internationalization //! - Full i18n support with fluent-templates //! - Gender-aware translations (particularly for French Canadian) //! - Automatic locale detection and fallback //! - Compile-time translation loading for performance //! //! ### Modern Web Interface //! - HTMX-powered dynamic interactions without JavaScript frameworks //! - Responsive design with Bulma CSS //! - Progressive enhancement for accessibility //! - Real-time updates and partial page rendering //! //! ### Authentication & Security //! - OAuth 2.0 based authentication //! - Secure session management with Redis //! - JSON Web Signature (JWS) for data integrity //! - DID-based identity management //! //! ## Getting Started //! //! ```rust,no_run //! use smokesignal::config::Config; //! use smokesignal::http::server; //! //! #[tokio::main] //! async fn main() -> anyhow::Result<()> { //! // Load configuration from environment //! let config = Config::from_env().await?; //! //! // Start the web server //! server::run(config).await?; //! //! Ok(()) //! } //! ``` //! //! ## Technology Stack //! //! - **Backend**: Rust with Axum web framework //! - **Database**: PostgreSQL with SQLx for type-safe queries //! - **Cache**: Redis/Valkey for session and cache management //! - **Templates**: Minijinja with fluent-templates for i18n //! - **Frontend**: HTMX + Bulma CSS for modern interactivity //! - **Protocol**: AT Protocol for decentralized social networking //! - **Containerization**: Docker with devcontainer support //! //! ## Module Organization //! //! The crate is organized into logical modules that separate concerns: //! //! ```text //! smokesignal/ //! ├── atproto/ # AT Protocol implementation //! ├── config/ # Configuration management //! ├── http/ # Web server and request handling //! ├── storage/ # Database operations and models //! ├── oauth/ # Authentication and sessions //! ├── i18n/ # Internationalization //! ├── filtering/ # Event search and filtering //! ├── jose/ # JSON Web Signatures //! ├── encoding/ # Data encoding utilities //! ├── validation/ # Input validation //! ├── resolve/ # DID and handle resolution //! └── errors/ # Error handling //! ``` pub mod atproto; pub mod config; pub mod config_errors; pub mod did; pub mod encoding; pub mod encoding_errors; pub mod errors; pub mod filtering; pub mod http; pub mod i18n; // Keeping old i18n module for compatibility during migration pub mod i18n_old; pub mod jose; pub mod jose_errors; pub mod oauth; pub mod oauth_client_errors; pub mod oauth_errors; pub mod refresh_tokens_errors; pub mod resolve; pub mod storage; // Removing storage_oauth_errors, consolidated with storage/oauth_model_errors pub mod task_refresh_tokens; pub mod validation;