diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 6bbb29b..7266d0b 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -1,38 +1,10 @@
{
"permissions": {
"allow": [
- "Bash(curl:*)",
- "Bash(cargo:*)",
- "Bash(pkill:*)",
- "Bash(RUST_LOG=debug leptos serve watch)",
- "Bash(RUST_LOG=debug cargo leptos watch)",
- "Bash(rm:*)",
- "Bash(sqlite3:*)",
- "Bash(lsof:*)",
- "Bash(RUST_LOG=info cargo leptos watch)",
- "Bash(RUST_LOG=info ./target/debug/server)",
- "Bash(env)",
- "Bash(cat:*)",
+ "Bash(cargo build:*)",
+ "Bash(cargo coupling:*)",
"Bash(grep:*)",
- "Bash(ENVIRONMENT=development cargo run --bin server)",
- "Bash(ls:*)",
- "Bash(CONFIG_FILE=config.dev.toml cargo run --bin server)",
- "Bash(git checkout:*)",
- "Bash(CONFIG_FILE=/Users/Akasha/Development/rustelo/template/config.dev.toml cargo run --bin server)",
- "Bash(ENVIRONMENT=development CONFIG_FILE=config.dev.toml cargo run --bin server)",
- "Bash(find:*)",
- "Bash(ln:*)",
- "Bash(cp:*)",
- "Bash(npm run build:css:*)",
- "Bash(killall:*)",
- "Bash(true)",
- "Bash(mv:*)",
- "Bash(LEPTOS_OUTPUT_NAME=website cargo leptos build)",
- "Bash(LEPTOS_OUTPUT_NAME=website cargo leptos serve --hot-reload)",
- "Bash(pgrep:*)",
- "Bash(./scripts/link-pkg-files.sh:*)",
- "Bash(LEPTOS_OUTPUT_NAME=website cargo run --bin server)"
- ],
- "deny": []
+ "Bash(cargo check:*)"
+ ]
}
-}
\ No newline at end of file
+}
diff --git a/Cargo.toml b/Cargo.toml
index 83f87a2..3519274 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,104 +2,186 @@
[workspace]
resolver = "2"
members = [
- "server",
- "client",
- "shared"
+ "crates/framework/crates/rustelo_core",
+ "crates/framework/crates/rustelo_web",
+ "crates/framework/crates/rustelo_auth",
+ "crates/framework/crates/rustelo_content",
+ "crates/framework/crates/rustelo_cli",
+ "crates/foundation/crates/rustelo_client",
+ "crates/foundation/crates/rustelo_server",
+ "crates/foundation/crates/rustelo_core_lib",
+ "crates/foundation/crates/rustelo_core_types",
+ "crates/foundation/crates/rustelo_language",
+ "crates/foundation/crates/rustelo_routing",
+ "crates/foundation/crates/rustelo_components",
+ "crates/foundation/crates/rustelo_pages",
+ "crates/foundation/crates/rustelo_tools",
+ "crates/foundation/crates/rustelo_utils",
+ "crates/foundation/crates/rustelo_macros",
]
-[profile.release]
-codegen-units = 1
-lto = true
-opt-level = 'z'
[workspace.dependencies]
-leptos = { version = "0.8.2", features = ["hydrate", "ssr"] }
-leptos_router = { version = "0.8.2", features = ["ssr"] }
-leptos_axum = { version = "0.8.2" }
-leptos_config = { version = "0.8.2" }
-leptos_meta = { version = "0.8.2" }
+# Core dependencies
+
+# Rustelo foundation crates
+rustelo_utils = { path = "crates/foundation/crates/rustelo_utils" }
+rustelo_core_types = { path = "crates/foundation/crates/rustelo_core_types" }
+rustelo_language = { path = "crates/foundation/crates/rustelo_language" }
+rustelo_routing = { path = "crates/foundation/crates/rustelo_routing" }
+rustelo_core_lib = { path = "crates/foundation/crates/rustelo_core_lib" }
+rustelo_components = { path = "crates/foundation/crates/rustelo_components" }
+rustelo_pages = { path = "crates/foundation/crates/rustelo_pages" }
+rustelo_client = { path = "crates/foundation/crates/rustelo_client" }
+rustelo_server = { path = "crates/foundation/crates/rustelo_server" }
+rustelo_tools = { path = "crates/foundation/crates/rustelo_tools" }
+rustelo_macros = { path = "crates/foundation/crates/rustelo_macros" }
+
+# Rustelo framework crates
+rustelo_core = { path = "crates/framework/crates/rustelo_core" }
+rustelo_web = { path = "crates/framework/crates/rustelo_web" }
+rustelo_auth = { path = "crates/framework/crates/rustelo_auth" }
+rustelo_content = { path = "crates/framework/crates/rustelo_content" }
+rustelo_cli = { path = "crates/framework/crates/rustelo_cli" }
+
+
+# Leptos ecosystem
+leptos = { version = "0.8.15", features = ["hydrate", "ssr"] }
+leptos_router = { version = "0.8.11", features = ["ssr"] }
+leptos_axum = { version = "0.8.7" }
+leptos_config = { version = "0.8.8" }
+leptos_meta = { version = "0.8.5" }
+leptos_integration_utils = { version = "0.8.7" }
+
+# Other dependencies
serde = { version = "1.0", features = ["derive"] }
+axum = "0.8.8"
serde_json = "1.0"
-shared = { path = "./shared" }
-thiserror = "2.0.12"
-rand = "0.9.1"
+thiserror = "2.0.18"
+anyhow = "1.0.101"
+rand = "0.9"
+
+rand_core = { version = "0.10" }
+#rand_core = { version = "0.6", features = ["getrandom"] }
+getrandom = { version = "0.4", features = ["std", "wasm_js"] }
gloo-timers = { version = "0.3", features = ["futures"] }
-console_error_panic_hook = "0.1"
+gloo-net = { version = "0.6.0" }
+glob = "0.3.3"
+console_error_panic_hook = "0.1.7"
http = "1"
-log = "0.4.27"
-wasm-bindgen-futures = "0.4.50"
-wasm-bindgen = "=0.2.100"
+log = "0.4.29"
+env_logger = "0.11"
+wasm-bindgen-futures = "0.4.58"
+wasm-bindgen = "0.2.108"
+serde-wasm-bindgen = "0.6.5"
console_log = "1"
-reqwest = { version = "0.12.22", features = ["json"] } # reqwest with JSON parsing support
+reqwest = { version = "0.13.2", features = ["json"] } # reqwest with JSON parsing support
reqwasm = "0.5.0"
-web-sys = { version = "0.3.77" , features = ["Clipboard", "Window", "Navigator", "Permissions", "MouseEvent", "Storage", "console", "File"] }
-regex = "1.11.1"
+js-sys = "0.3.85"
+web-sys = { version = "0.3.85" , features = ["Clipboard", "Window", "Navigator", "Permissions", "MouseEvent", "Storage", "console", "File", "SvgElement", "SvgsvgElement", "SvgPathElement", "MediaQueryList"] }
+regex = "1.12.3"
tracing = "0.1"
tracing-subscriber = "0.3"
toml = "0.9"
fluent = "0.17"
fluent-bundle = "0.16"
-unic-langid = "0.9"
+fluent-syntax = "0.12"
+unic-langid = { version = "0.9", features = ["unic-langid-macros"] }
+
+tokio = { version = "1.49", features = ["rt-multi-thread"]}
+tower = "0.5.3"
+tower-http = { version = "0.6.8", features = ["fs"]}
+
+hex = "0.4.3"
+dotenv = "0.15.0"
+async-trait = "0.1.89"
+
+once_cell = "1.21.3"
+fluent-templates = { version = "0.13.2", features = ["tera"]}
+
+rhai = { version = "1.24", features = ["serde", "only_i64", "no_float"] }
+
+# Email support
+lettre = { version = "0.11", features = ["tokio1-native-tls", "smtp-transport", "pool", "hostname", "builder"] }
+handlebars = { version = "6.4" }
+urlencoding = { version = "2.1" }
+
+# TLS Support (optional)
+axum-server = { version = "0.8", features = ["tls-rustls"] }
+axum-test = "18.7"
+rustls = { version = "0.23" }
+rustls-pemfile = { version = "2.2" }
+
+# Authentication & Authorization (optional)
+jsonwebtoken = { version = "10.3", features = ["rust_crypto"] }
+argon2 = { version = "0.5" }
+uuid = { version = "1.20", features = ["v4", "serde", "js"] }
chrono = { version = "0.4", features = ["serde"] }
-uuid = { version = "1.17", features = ["v4", "serde"] }
+oauth2 = { version = "5.0" }
+tower-sessions = { version = "0.15" }
+sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "postgres", "sqlite", "chrono", "uuid", "migrate"] }
+tower-cookies = { version = "0.11" }
+time = { version = "0.3", features = ["serde"] }
-[[workspace.metadata.leptos]]
-# The name used by wasm-bindgen/cargo-leptos for the JS/WASM bundle. Defaults to the crate name
-output-name = "website"
-# Specify which binary target to use (fixes multiple bin targets error)
-bin-target = "server"
-# The site root folder is where cargo-leptos generate all output. WARNING: all content of this folder will be erased on a rebuild. Use it in your server setup.
-site-root = "target/site"
-# The site-root relative folder where all compiled output (JS, WASM and CSS) is written
-# Defaults to pkg
-site-pkg-dir = "pkg"
-# Add hash to JS/WASM files for cache busting
-hash-files = true
-# The tailwind input file. Not needed if tailwind-input-file is not set
-# Optional, Activates the tailwind build
-#tailwind-input-file = "input.css"
+# 2FA Support (optional)
+totp-rs = { version = "5.7.0" }
+qrcode = { version = "0.14", features = ["svg"] }
+base32 = { version = "0.5" }
+sha2 = { version = "0.10" }
+base64 = { version = "0.22" }
-# [Optional] Files in the asset-dir will be copied to the site-root directory
-assets-dir = "public"
-# The IP and port (ex: 127.0.0.1:3000) where the server serves the content. Use it in your server setup.
-site-addr = "0.0.0.0:3030"
-# The port to use for automatic reload monitoring
-reload-port = 3031
+# Cryptography dependencies
+aes-gcm = { version = "0.10" }
+clap = { version = "4.5", features = ["derive"] }
-# [Optional] Command to use when running end2end tests. It will run in the end2end dir.
-# [Windows] for non-WSL use "npx.cmd playwright test"
-# This binary name can be checked in Powershell with Get-Command npx
-end2end-cmd = "npx playwright test"
-end2end-dir = "end2end"
+# Metrics dependencies
+prometheus = { version = "0.14" }
-# The browserlist query used for optimizing the CSS.
-browserquery = "defaults"
+# Content Management & Rendering (optional)
+pulldown-cmark = { version = "0.13.0", features = ["simd"] }
+serde_yaml = { version = "0.9" }
+tempfile = { version = "3.24" }
+tera = { version = "1.20" }
+unicode-normalization = { version = "0.1" }
-# Set by cargo-leptos watch when building with that tool. Controls whether autoreload JS will be included in the head
-watch = false
+paste = "1.0.15"
+typed-builder = "0.23"
-# The environment Leptos will run in, usually either "DEV" or "PROD"
-env = "DEV"
+notify = { version = "8.2.0", default-features = false, features = ["macos_fsevent"] }
+lru = "0.16"
+ammonia = "4.1"
+scraper = "0.25"
+futures = "0.3.31"
+async-compression = { version = "0.4", features = ["gzip", "tokio"] }
-# The features to use when compiling the bin target
-#
-# Optional. Can be over-ridden with the command line parameter --bin-features
-bin-features = ["ssr"]
+ratatui = "0.30"
+inquire = "0.9"
+crossterm = "0.29"
+syntect = "5.3"
+similar = "2.7"
+reactive_graph = "0.2.12"
-# If the --no-default-features flag should be used when compiling the bin target
-#
-# Optional. Defaults to false.
-bin-default-features = true
+syn = { version = "2.0", features = ["full"] }
+comrak = { version = "0.50", features = ["syntect"] }
-# The features to use when compiling the lib target
-#
-# Optional. Can be over-ridden with the command line parameter --lib-features
-lib-features = ["hydrate"]
+walkdir = "2.5"
+quote = "1.0"
+proc-macro2 = "1.0"
+gray_matter = "0.3"
+ignore = "0.4"
+mockall = "0.14"
+wiremock = "0.6"
+cfg-if = "1.0"
+html-escape = "0.2"
-# If the --no-default-features flag should be used when compiling the lib target
-#
-# Optional. Defaults to false.
-lib-default-features = false
+shellexpand = "3.1"
+semver = "1.0"
+pathdiff = "0.2"
-name = "rustelo"
-bin-package = "server"
-lib-package = "client"
+dialoguer = "0.12"
+console = "0.16"
+indicatif = "0.18"
+
+[profile.release]
+codegen-units = 1
+lto = true
+opt-level = "z"
diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md
deleted file mode 100644
index f5ee01d..0000000
--- a/DOCUMENTATION.md
+++ /dev/null
@@ -1,339 +0,0 @@
-# Rustelo Documentation
-
-
-
-
-
-Welcome to the comprehensive documentation for Rustelo, a modular Rust web application template. This document serves as your gateway to understanding, setting up, and using all aspects of Rustelo.
-
-## ๐ Documentation Overview
-
-Rustelo provides multiple layers of documentation to serve different needs:
-
-### ๐ฏ Quick References
-- **[README.md](README.md)** - Main project overview and quick start
-- **[FEATURES.md](FEATURES.md)** - Detailed feature documentation
-- **[INSTALL.md](INSTALL.md)** - Installation guide
-
-### ๐ Interactive Documentation (mdBook)
-- **[Complete Guide](https://yourusername.github.io/rustelo)** - Full interactive documentation
-- **Local Development**: `./scripts/docs-dev.sh` - Start local documentation server
-- **Build Documentation**: `./scripts/build-docs.sh` - Build static documentation
-
-### ๐ Documentation Directories
-- **[docs/](docs/)** - Technical documentation and guides
-- **[info/](info/)** - Implementation details and architectural decisions
-- **[examples/](examples/)** - Usage examples and sample configurations
-
-## ๐ Getting Started with Documentation
-
-### 1. Setup Documentation System
-```bash
-# Interactive setup (recommended)
-./scripts/setup-docs.sh
-
-# Full automated setup
-./scripts/setup-docs.sh --full
-
-# Minimal setup
-./scripts/setup-docs.sh --minimal
-```
-
-### 2. Start Documentation Development
-```bash
-# Start local documentation server
-./scripts/docs-dev.sh
-
-# Or using just
-just docs-dev
-```
-
-### 3. Build and Deploy
-```bash
-# Build documentation
-./scripts/build-docs.sh
-
-# Deploy to GitHub Pages
-./scripts/deploy-docs.sh github-pages
-
-# Or using just
-just docs-build
-just docs-deploy-github
-```
-
-## ๐ Documentation Structure
-
-### Core Sections
-
-#### ๐ Getting Started
-- **[Quick Start](book/getting-started/quick-start.md)** - Get up and running in minutes
-- **[Installation](book/getting-started/installation.md)** - Detailed installation guide
-- **[Configuration](book/getting-started/configuration.md)** - Basic configuration
-- **[Your First App](book/getting-started/first-app.md)** - Build your first application
-
-#### ๐๏ธ Features
-- **[Feature Overview](book/features/overview.md)** - All available features
-- **[Authentication](book/features/authentication.md)** - User authentication system
-- **[Content Management](book/features/content-management.md)** - Content management system
-- **[Email System](book/features/email.md)** - Email functionality
-- **[TLS Support](book/features/tls.md)** - HTTPS/TLS configuration
-- **[Feature Combinations](book/features/combinations.md)** - How features work together
-
-#### ๐๏ธ Database
-- **[Database Overview](book/database/overview.md)** - Database system overview
-- **[PostgreSQL Setup](book/database/postgresql.md)** - PostgreSQL configuration
-- **[SQLite Setup](book/database/sqlite.md)** - SQLite configuration
-- **[Database Configuration](book/database/configuration.md)** - Advanced configuration
-- **[Migrations](book/database/migrations.md)** - Database migrations
-- **[Database Abstraction](book/database/abstraction.md)** - Database abstraction layer
-
-#### ๐ ๏ธ Development
-- **[Development Setup](book/development/setup.md)** - Development environment
-- **[Project Structure](book/development/structure.md)** - Understanding the codebase
-- **[Development Workflow](book/development/workflow.md)** - Development best practices
-- **[Testing](book/development/testing.md)** - Testing strategies
-- **[Debugging](book/development/debugging.md)** - Debugging techniques
-- **[Hot Reloading](book/development/hot-reloading.md)** - Development server setup
-
-#### ๐ Deployment
-- **[Deployment Overview](book/deployment/overview.md)** - Deployment strategies
-- **[Docker Deployment](book/deployment/docker.md)** - Containerized deployment
-- **[Production Setup](book/deployment/production.md)** - Production configuration
-- **[Environment-Specific Config](book/deployment/environments.md)** - Environment management
-- **[Monitoring & Logging](book/deployment/monitoring.md)** - Observability
-
-#### ๐ Security
-- **[Security Overview](book/security/overview.md)** - Security architecture
-- **[Authentication Security](book/security/auth.md)** - Authentication security
-- **[Data Protection](book/security/data-protection.md)** - Data encryption and protection
-- **[CSRF Protection](book/security/csrf.md)** - CSRF prevention
-- **[TLS Configuration](book/security/tls.md)** - TLS/SSL setup
-- **[Security Best Practices](book/security/best-practices.md)** - Security guidelines
-
-#### ๐ง API Reference
-- **[API Overview](book/api/overview.md)** - API architecture
-- **[Authentication Endpoints](book/api/auth.md)** - Authentication API
-- **[Content Endpoints](book/api/content.md)** - Content management API
-- **[Error Handling](book/api/errors.md)** - Error responses
-- **[Rate Limiting](book/api/rate-limiting.md)** - Rate limiting configuration
-
-## ๐ ๏ธ Documentation Tools
-
-### Available Scripts
-- **`./scripts/setup-docs.sh`** - Setup documentation system
-- **`./scripts/docs-dev.sh`** - Start development server
-- **`./scripts/build-docs.sh`** - Build documentation
-- **`./scripts/deploy-docs.sh`** - Deploy documentation
-- **`./scripts/generate-content.sh`** - Generate dynamic content
-
-### Just Commands
-```bash
-# Documentation commands
-just docs-setup # Setup documentation system
-just docs-dev # Start development server
-just docs-build # Build documentation
-just docs-build-sync # Build with content sync
-just docs-watch # Watch for changes
-just docs-deploy-github # Deploy to GitHub Pages
-just docs-deploy-netlify # Deploy to Netlify
-just docs-deploy-vercel # Deploy to Vercel
-just docs-docker # Build Docker image
-just docs-generate # Generate dynamic content
-just docs-check-links # Check for broken links
-just docs-clean # Clean build files
-just docs-workflow # Complete workflow
-just help-docs # Show documentation help
-```
-
-## ๐ Documentation Types
-
-### 1. Technical Documentation (`docs/`)
-Focused on implementation details and technical guides:
-- **[2FA Implementation](docs/2fa_implementation.md)** - Two-factor authentication
-- **[Database Configuration](docs/database_configuration.md)** - Database setup
-- **[Email System](docs/email.md)** - Email configuration
-- **[Encryption](docs/encryption.md)** - Data encryption
-- **[Migration Guide](docs/database_migration_guide.md)** - Database migrations
-
-### 2. Implementation Notes (`info/`)
-Architectural decisions and implementation details:
-- **[Feature System](info/feature_system.md)** - Feature architecture
-- **[Database Abstraction](info/database_abstraction.md)** - Database design
-- **[Authentication](info/auth_readme.md)** - Authentication system
-- **[Configuration](info/config.md)** - Configuration system
-- **[Deployment](info/deployment.md)** - Deployment strategies
-
-### 3. Interactive Documentation (`book/`)
-Comprehensive user-friendly guides built with mdBook:
-- Searchable content
-- Mobile-friendly design
-- Cross-referenced sections
-- Code examples with syntax highlighting
-- Print-friendly format
-
-## ๐ Deployment Options
-
-### GitHub Pages
-```bash
-# Automatic deployment via GitHub Actions
-./scripts/deploy-docs.sh github-pages
-
-# Manual deployment
-just docs-deploy-github
-```
-
-### Netlify
-```bash
-# Deploy to Netlify
-./scripts/deploy-docs.sh netlify
-just docs-deploy-netlify
-```
-
-### Vercel
-```bash
-# Deploy to Vercel
-./scripts/deploy-docs.sh vercel
-just docs-deploy-vercel
-```
-
-### Docker
-```bash
-# Build documentation container
-./scripts/deploy-docs.sh docker
-just docs-docker
-
-# Run documentation server
-docker run -p 8080:80 rustelo-docs:latest
-```
-
-### AWS S3
-```bash
-# Deploy to S3 (requires AWS_S3_BUCKET)
-export AWS_S3_BUCKET=your-bucket-name
-./scripts/deploy-docs.sh aws-s3
-```
-
-## ๐ CI/CD Integration
-
-### GitHub Actions
-Automatic documentation builds and deployments:
-- **Build on PR**: Validates documentation builds
-- **Deploy on merge**: Automatically deploys to GitHub Pages
-- **Link checking**: Validates all links in documentation
-- **Multi-format build**: Builds HTML, PDF, and EPUB formats
-
-### Setup CI/CD
-```bash
-# Setup CI/CD integration
-./scripts/setup-docs.sh --ci
-
-# This creates:
-# - .github/workflows/docs.yml
-# - Automated deployment configuration
-# - Link checking integration
-```
-
-## ๐ฑ Mobile-Friendly Features
-
-- **Responsive Design**: Works on all screen sizes
-- **Touch Navigation**: Mobile-friendly navigation
-- **Offline Support**: Progressive web app features
-- **Fast Loading**: Optimized for mobile connections
-- **Search**: Full-text search functionality
-
-## ๐จ Customization
-
-### Custom Styling
-- **`book/theme/custom.css`** - Custom styles
-- **`book/theme/custom.js`** - Custom JavaScript
-- **Brand colors and fonts**
-- **Custom layouts and components**
-
-### Content Organization
-- **Modular structure**: Easy to reorganize content
-- **Cross-references**: Automatic link generation
-- **Content templates**: Consistent formatting
-- **Dynamic content**: Auto-generated sections
-
-## ๐ Search and Discovery
-
-### Built-in Search
-- **Full-text search**: Search across all documentation
-- **Instant results**: Fast search with highlighting
-- **Keyboard shortcuts**: `Ctrl+K` or `Cmd+K` to search
-- **Search suggestions**: Auto-complete functionality
-
-### Navigation
-- **Hierarchical structure**: Logical content organization
-- **Breadcrumbs**: Easy navigation context
-- **Previous/Next**: Sequential navigation
-- **Table of contents**: Section overview
-
-## ๐ Analytics and Monitoring
-
-### Documentation Metrics
-- **Build times**: Monitor documentation build performance
-- **Broken links**: Automatic link validation
-- **Usage analytics**: Track documentation usage (when deployed)
-- **Performance monitoring**: Page load times and optimization
-
-### Quality Assurance
-- **Link checking**: Automated broken link detection
-- **Content validation**: Ensure all sections are complete
-- **Style checking**: Consistent formatting
-- **Accessibility testing**: WCAG compliance
-
-## ๐ค Contributing to Documentation
-
-### How to Contribute
-1. **Edit content**: Modify files in `book/` directory
-2. **Test locally**: Run `just docs-dev` to preview changes
-3. **Submit PR**: Create pull request with documentation changes
-4. **Review process**: Automated checks and manual review
-
-### Content Guidelines
-- **Clear writing**: Use simple, clear language
-- **Code examples**: Include working code examples
-- **Screenshots**: Add visual aids when helpful
-- **Cross-references**: Link to related sections
-- **Consistency**: Follow established patterns
-
-### Content Types
-- **Tutorials**: Step-by-step guides
-- **Reference**: API and configuration documentation
-- **Examples**: Code samples and use cases
-- **Troubleshooting**: Common issues and solutions
-
-## ๐ Getting Help
-
-### Documentation Issues
-- **[GitHub Issues](https://github.com/yourusername/rustelo/issues)** - Report documentation bugs
-- **[Discussions](https://github.com/yourusername/rustelo/discussions)** - Ask questions
-- **[Contributing Guide](book/contributing/docs.md)** - How to contribute
-
-### Quick Help
-```bash
-# Show all documentation commands
-just help-docs
-
-# Check documentation build
-just docs-build
-
-# Start local development
-just docs-dev
-```
-
-## ๐ฏ Next Steps
-
-1. **[Setup Documentation](scripts/setup-docs.sh)** - Initialize your documentation system
-2. **[Start Development](scripts/docs-dev.sh)** - Begin working with documentation
-3. **[Deploy Documentation](scripts/deploy-docs.sh)** - Share your documentation
-4. **[Customize Experience](book/theme/)** - Make it your own
-
----
-
-**Happy documenting!** ๐โจ
-
-The Rustelo documentation system is designed to grow with your project. Start simple, add complexity as needed, and maintain comprehensive documentation that serves your users and contributors effectively.
-
-For the most up-to-date documentation, visit: **[https://yourusername.github.io/rustelo](https://yourusername.github.io/
diff --git a/INSTALL.md b/INSTALL.md
deleted file mode 100644
index 5da45a1..0000000
--- a/INSTALL.md
+++ /dev/null
@@ -1,568 +0,0 @@
-# Rustelo Installation Guide
-
-
-
-
-
-Welcome to Rustelo! This guide will help you install and set up your Rust web application framework built with Leptos using our unified installer.
-
-## Quick Start
-
-### Unix/Linux/macOS
-```bash
-# Clone or download the project
-git clone
-cd rustelo
-
-# Quick development setup (default)
-./install.sh
-
-# Or specify options
-./install.sh -m dev -n my-app
-```
-
-### Windows
-```powershell
-# Clone or download the project
-git clone
-cd rustelo
-
-# Quick development setup (default)
-.\install.ps1
-
-# Or specify options
-.\install.ps1 -Mode dev -ProjectName my-app
-```
-
-## Installation Modes
-
-The unified installer supports three modes:
-
-### 1. Development Mode (default)
-```bash
-./install.sh -m dev
-```
-- Environment: `dev`
-- TLS: disabled
-- OAuth: disabled
-- Authentication: enabled
-- Content Database: enabled
-- Optimized for development with debugging
-
-### 2. Production Mode
-```bash
-./install.sh -m prod
-```
-- Environment: `prod`
-- TLS: enabled by default
-- OAuth: optional
-- Authentication: enabled
-- Content Database: enabled
-- Optimized for production deployment
-
-### 3. Custom Mode
-```bash
-./install.sh -m custom
-```
-- Interactive configuration selection
-- Choose features individually
-- Customize all settings
-
-## Command Line Options
-
-### Unix/Linux/macOS (`install.sh`)
-
-| Option | Description | Default |
-|--------|-------------|---------|
-| `-m, --mode MODE` | Installation mode (dev/prod/custom) | `dev` |
-| `-n, --name NAME` | Project name | `my-rustelo-app` |
-| `-e, --env ENV` | Environment (dev/prod) | `dev` |
-| `-d, --dir DIR` | Installation directory | `./` |
-| `--enable-tls` | Enable TLS/HTTPS support | `false` |
-| `--enable-oauth` | Enable OAuth authentication | `false` |
-| `--disable-auth` | Disable authentication features | `false` |
-| `--disable-content-db` | Disable content database features | `false` |
-| `--skip-deps` | Skip dependency installation | `false` |
-| `--force` | Force reinstallation | `false` |
-| `--quiet` | Suppress debug output | `false` |
-| `-h, --help` | Show help message | - |
-
-### Windows (`install.ps1`)
-
-| Option | Description | Default |
-|--------|-------------|---------|
-| `-Mode` | Installation mode (dev/prod/custom) | `dev` |
-| `-ProjectName` | Project name | `my-rustelo-app` |
-| `-Environment` | Environment (dev/prod) | `dev` |
-| `-InstallDir` | Installation directory | `./` |
-| `-EnableTLS` | Enable TLS/HTTPS support | `false` |
-| `-EnableOAuth` | Enable OAuth authentication | `false` |
-| `-DisableAuth` | Disable authentication features | `false` |
-| `-DisableContentDB` | Disable content database features | `false` |
-| `-SkipDeps` | Skip dependency installation | `false` |
-| `-Force` | Force reinstallation | `false` |
-| `-Quiet` | Suppress debug output | `false` |
-| `-Help` | Show help message | - |
-
-## Environment Variables
-
-You can also configure the installer using environment variables:
-
-| Variable | Description | Default |
-|----------|-------------|---------|
-| `INSTALL_MODE` | Installation mode (dev/prod/custom) | `dev` |
-| `PROJECT_NAME` | Project name | `my-rustelo-app` |
-| `ENVIRONMENT` | Environment (dev/prod) | `dev` |
-| `ENABLE_TLS` | Enable TLS (true/false) | `false` |
-| `ENABLE_AUTH` | Enable authentication (true/false) | `true` |
-| `ENABLE_CONTENT_DB` | Enable content database (true/false) | `true` |
-| `ENABLE_OAUTH` | Enable OAuth (true/false) | `false` |
-| `SKIP_DEPS` | Skip dependencies (true/false) | `false` |
-| `FORCE_REINSTALL` | Force reinstall (true/false) | `false` |
-| `QUIET` | Quiet mode (true/false) | `false` |
-
-## Examples
-
-### Development Setup
-```bash
-# Simple development setup
-./install.sh
-
-# Development with custom name
-./install.sh -n my-blog
-
-# Development with TLS enabled
-./install.sh --enable-tls
-```
-
-### Production Setup
-```bash
-# Production setup with HTTPS
-./install.sh -m prod -n my-app
-
-# Production with OAuth enabled
-./install.sh -m prod --enable-oauth
-
-# Production in custom directory
-./install.sh -m prod -d /opt/my-app
-```
-
-### Using Environment Variables
-```bash
-# Set environment variables
-export INSTALL_MODE=prod
-export PROJECT_NAME=my-production-app
-export ENABLE_TLS=true
-export ENABLE_OAUTH=true
-
-# Run installer
-./install.sh
-```
-
-### Windows Examples
-```powershell
-# Simple development setup
-.\install.ps1
-
-# Production setup with HTTPS
-.\install.ps1 -Mode prod -ProjectName my-app -EnableTLS
-
-# Custom interactive setup
-.\install.ps1 -Mode custom
-
-# Using environment variables
-$env:INSTALL_MODE = "prod"
-$env:PROJECT_NAME = "my-app"
-.\install.ps1
-```
-
-## System Requirements
-
-### Required Dependencies
-
-- **Rust** (1.75.0 or later)
- - Install from [rustup.rs](https://rustup.rs/)
- - Includes `cargo` package manager
-
-- **Node.js** (18.0.0 or later)
- - Install from [nodejs.org](https://nodejs.org/)
- - Includes `npm` package manager
- - Optional: `pnpm` for faster package management
-
-- **Git** (for cloning repositories)
-
-- **OpenSSL** (for TLS certificate generation)
-
-- **mdBook** (for documentation)
- - Automatically installed by installer
- - Manual install: `cargo install mdbook`
- - Required for documentation system
-
-- **Just** (task runner)
- - Automatically installed by installer
- - Manual install: `cargo install just`
- - Required for development workflow
-
-### Optional Dependencies
-
-- **PostgreSQL** (for database features)
-- **Redis** (for caching and sessions)
-- **Docker** (for containerized deployment)
-- **mdBook plugins** (for enhanced documentation)
- - `mdbook-linkcheck` - Link validation
- - `mdbook-toc` - Table of contents generation
- - `mdbook-mermaid` - Diagram support
- - Automatically installed by installer
-
-### System-Specific Requirements
-
-#### Linux (Ubuntu/Debian)
-```bash
-# Update package list
-sudo apt update
-
-# Install required packages
-sudo apt install -y git curl build-essential pkg-config libssl-dev
-
-# Install Rust
-curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
-# Install Node.js
-curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
-sudo apt-get install -y nodejs
-```
-
-#### macOS
-```bash
-# Install Homebrew if not already installed
-/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
-# Install required packages
-brew install git openssl
-
-# Install Rust
-curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
-# Install Node.js
-brew install node
-```
-
-#### Windows
-1. Install Git from [git-scm.com](https://git-scm.com/)
-2. Install Rust from [rustup.rs](https://rustup.rs/)
-3. Install Node.js from [nodejs.org](https://nodejs.org/)
-4. Install OpenSSL (or use the installer's automatic setup)
-
-## What the Installer Does
-
-1. **System Check**: Verifies required tools are installed
-2. **Dependency Installation**: Installs Rust and Node.js if missing
-3. **Rust Tools**: Installs `cargo-leptos`, `mdbook`, `just`, and other development tools
-4. **Documentation Tools**: Installs mdBook plugins for enhanced documentation
-5. **Project Creation**: Copies template files to new project directory
-6. **Configuration**: Creates `.env` file with appropriate settings
-7. **Dependencies**: Installs Rust and Node.js dependencies
-8. **Build**: Compiles the project
-9. **Scripts**: Creates startup scripts for development and production
-10. **Documentation Setup**: Initializes documentation system
-11. **TLS Setup**: Generates self-signed certificates if enabled
-
-## Project Structure
-
-After installation, your project will have this structure:
-
-```
-my-rustelo-app/
-โโโ src/ # Rust source code
-โ โโโ client/ # Client-side code
-โ โโโ server/ # Server-side code
-โ โโโ shared/ # Shared code
-โโโ public/ # Static assets
-โโโ book/ # Documentation source (mdBook)
-โโโ book-output/ # Built documentation
-โโโ certs/ # TLS certificates (if enabled)
-โโโ scripts/ # Setup and utility scripts
-โ โโโ setup-docs.sh # Documentation setup
-โ โโโ build-docs.sh # Build documentation
-โ โโโ deploy-docs.sh # Deploy documentation
-โ โโโ docs-dev.sh # Documentation dev server
-โโโ .env # Environment configuration
-โโโ Cargo.toml # Rust dependencies
-โโโ package.json # Node.js dependencies
-โโโ justfile # Task runner configuration
-โโโ book.toml # mdBook configuration
-โโโ start.sh # Development start script (Unix)
-โโโ start.bat # Development start script (Windows)
-โโโ start-prod.sh # Production start script (Unix)
-โโโ start-prod.bat # Production start script (Windows)
-โโโ build.sh # Build script (Unix)
-```
-
-## Configuration
-
-### Environment Variables (.env)
-
-The installer creates a `.env` file with settings appropriate for your chosen mode:
-
-| Variable | Description | Dev Default | Prod Default |
-|----------|-------------|-------------|--------------|
-| `ENVIRONMENT` | Environment type | `dev` | `prod` |
-| `SERVER_HOST` | Server bind address | `127.0.0.1` | `0.0.0.0` |
-| `SERVER_PORT` | Server port | `3030` | `443` |
-| `SERVER_PROTOCOL` | Protocol | `http` | `https` |
-| `DATABASE_URL` | Database connection | Local PostgreSQL | Production URL |
-| `SESSION_SECRET` | Session encryption key | Dev key | Generated |
-| `LOG_LEVEL` | Logging level | `debug` | `info` |
-
-### Feature Configuration
-
-Features are controlled by environment variables:
-
-- `ENABLE_AUTH` - Authentication system
-- `ENABLE_CONTENT_DB` - Content management
-- `ENABLE_TLS` - HTTPS support
-- `ENABLE_OAUTH` - OAuth providers
-
-## Development Workflow
-
-### Starting the Development Server
-
-```bash
-# Navigate to project
-cd my-rustelo-app
-
-# Start development server (Unix)
-./start.sh
-
-# Start development server (Windows)
-.\start.bat
-
-# Or use cargo directly
-cargo leptos watch
-```
-
-### Building for Production
-
-```bash
-# Build for production (Unix)
-./start-prod.sh
-
-# Build for production (Windows)
-.\start-prod.bat
-
-# Or use cargo directly
-cargo leptos build --release
-./target/release/server
-```
-
-### Available Commands
-
-#### Development Commands
-| Command | Description |
-|---------|-------------|
-| `cargo leptos watch` | Start development server with hot reload |
-| `cargo leptos build` | Build for production |
-| `cargo build` | Build Rust code only |
-| `npm run build:css` | Build CSS only |
-| `npm run dev` | Watch CSS changes |
-| `cargo test` | Run tests |
-| `cargo clippy` | Run linter |
-
-#### Just Commands (Task Runner)
-| Command | Description |
-|---------|-------------|
-| `just dev` | Start development server |
-| `just build` | Build project |
-| `just test` | Run tests |
-| `just docs-dev` | Start documentation dev server |
-| `just docs-build` | Build documentation |
-| `just docs-deploy-github` | Deploy docs to GitHub Pages |
-| `just help` | Show all available commands |
-| `just help-docs` | Show documentation commands |
-
-#### Documentation Commands
-| Command | Description |
-|---------|-------------|
-| `./scripts/setup-docs.sh` | Setup documentation system |
-| `./scripts/docs-dev.sh` | Start documentation dev server |
-| `./scripts/build-docs.sh` | Build documentation |
-| `./scripts/deploy-docs.sh` | Deploy documentation |
-| `mdbook serve` | Serve documentation locally |
-| `mdbook build` | Build documentation manually |
-
-## Troubleshooting
-
-### Common Issues
-
-#### 1. Installation Mode Not Recognized
-**Error**: `Invalid installation mode: xyz`
-
-**Solution**: Use valid modes: `dev`, `prod`, or `custom`
-```bash
-./install.sh -m dev # Valid
-./install.sh -m prod # Valid
-./install.sh -m custom # Valid
-```
-
-#### 2. Project Directory Already Exists
-**Error**: `Project directory already exists`
-
-**Solution**: Use `--force` flag or choose different name
-```bash
-./install.sh --force # Overwrite existing
-./install.sh -n different-name # Use different name
-```
-
-#### 3. Missing Dependencies
-**Error**: `Missing required system tools`
-
-**Solution**: Install missing tools:
-```bash
-# Ubuntu/Debian
-sudo apt install git curl openssl
-
-# macOS
-brew install git openssl
-
-# Windows: Install manually from official websites
-```
-
-#### 4. Rust Installation Issues
-**Error**: `cargo: command not found`
-
-**Solution**: Ensure Rust is installed and in PATH:
-```bash
-# Install Rust
-curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
-# Add to PATH
-source ~/.cargo/env
-```
-
-#### 5. Node.js Dependencies
-**Error**: `npm: command not found`
-
-**Solution**: Install Node.js from [nodejs.org](https://nodejs.org/)
-
-#### 6. Build Failures
-**Error**: `cargo build` fails with linking errors
-
-**Solution**: Install system dependencies:
-```bash
-# Ubuntu/Debian
-sudo apt install build-essential pkg-config libssl-dev
-
-# macOS
-xcode-select --install
-```
-
-### Getting Help
-
-1. Check the installation log: `install.log`
-2. Review configuration files: `.env`, `Cargo.toml`
-3. Validate settings: `cargo run --bin config_tool -- validate`
-4. Check documentation files in the project directory
-
-## Manual Installation
-
-If you prefer to set up manually without the installer:
-
-### 1. Clone Template
-```bash
-git clone
-cd rustelo
-cp -r template my-project
-cd my-project
-```
-
-### 2. Install Tools
-```bash
-cargo install cargo-leptos
-cargo install mdbook
-cargo install just
-cargo install cargo-watch # Optional
-cargo install mdbook-linkcheck # Optional
-cargo install mdbook-toc # Optional
-cargo install mdbook-mermaid # Optional
-```
-
-### 3. Configure Environment
-Create `.env` file:
-```env
-ENVIRONMENT=dev
-SERVER_HOST=127.0.0.1
-SERVER_PORT=3030
-SERVER_PROTOCOL=http
-DATABASE_URL=postgresql://dev:dev@localhost:5432/myapp_dev
-SESSION_SECRET=your-secret-key
-ENABLE_AUTH=true
-ENABLE_CONTENT_DB=true
-ENABLE_TLS=false
-```
-
-### 4. Install Dependencies
-```bash
-cargo fetch
-npm install
-```
-
-### 5. Setup Documentation
-```bash
-./scripts/setup-docs.sh --full
-```
-
-### 6. Build and Run
-```bash
-npm run build:css
-cargo build
-cargo leptos watch
-
-# Or use just commands
-just dev
-just docs-dev # In another terminal for documentation
-```
-
-## Production Deployment
-
-### Security Checklist
-
-After running the installer in production mode:
-
-- [ ] Update `SESSION_SECRET` in `.env` with a secure random value
-- [ ] Configure proper database connection string
-- [ ] Set up valid TLS certificates (replace self-signed ones)
-- [ ] Review all security settings in configuration files
-- [ ] Configure OAuth providers if enabled
-- [ ] Set up proper logging and monitoring
-- [ ] Configure firewall rules
-- [ ] Set up backup procedures
-
-### Environment Variables for Production
-
-```env
-ENVIRONMENT=prod
-SERVER_HOST=0.0.0.0
-SERVER_PORT=443
-SERVER_PROTOCOL=https
-DATABASE_URL=postgresql://user:password@host:5432/database
-SESSION_SECRET=your-very-secure-random-secret
-ENABLE_AUTH=true
-ENABLE_CONTENT_DB=true
-ENABLE_TLS=true
-```
-
-## Support
-
-For issues and questions:
-- Check the troubleshooting section above
-- Review the configuration documentation
-- Check the installation log file
-- Create an issue on the project repository
-
-## License
-
-This project is licensed under the MIT License. See the LICENSE file for details.
-
----
-
-Happy coding with Rustelo! ๐
diff --git a/QUICK_START.md b/QUICK_START.md
deleted file mode 100644
index 952ebc2..0000000
--- a/QUICK_START.md
+++ /dev/null
@@ -1,442 +0,0 @@
-# Rustelo Quick Start Guide
-
-
-
-
-Get up and running with Rustelo in just a few minutes! This comprehensive guide will take you from zero to a fully functional web application with documentation.
-
-## ๐ 30-Second Setup
-
-### Prerequisites Check
-Before starting, ensure you have:
-- **Git** - Version control
-- **Internet connection** - For downloading dependencies
-
-### One-Command Installation
-```bash
-# Clone and install everything automatically
-git clone https://github.com/yourusername/rustelo.git my-app
-cd my-app
-./scripts/install.sh
-```
-
-That's it! The installer will:
-- โ Install Rust, Node.js, and all required tools
-- โ Install mdBook and Just task runner
-- โ Set up your project with sensible defaults
-- โ Configure documentation system
-- โ Verify everything is working
-- โ Generate a personalized setup report
-
-## ๐ฏ What You Get
-
-After installation, you'll have:
-
-### ๐ Complete Project Structure
-```
-my-app/
-โโโ client/ # Frontend Leptos components
-โโโ server/ # Backend Axum server
-โโโ shared/ # Shared code and types
-โโโ book/ # Documentation source (mdBook)
-โโโ scripts/ # Helper scripts
-โโโ .env # Environment configuration
-โโโ justfile # Task runner commands
-โโโ book.toml # Documentation configuration
-```
-
-### ๐ ๏ธ Essential Tools Ready
-- **Rust** with Cargo - Main development tools
-- **mdBook** - Documentation system
-- **Just** - Task runner for easy commands
-- **cargo-leptos** - Leptos development server
-
-### ๐ Documentation System
-- Interactive documentation website
-- Auto-synced content from your docs
-- Multiple deployment options
-- Mobile-friendly design
-
-### ๐ Setup Report
-- **SETUP_COMPLETE.md** - Personalized installation summary
-- Shows exactly what was installed and configured
-- Includes quick start commands for your specific setup
-- Updates automatically after any setup changes
-
-## ๐โโ๏ธ Start Developing
-
-### 1. Start Development Servers
-```bash
-# Start the web application
-just dev
-
-# In another terminal, start documentation server
-just docs-dev
-```
-
-### 2. Open Your App
-- **Web App**: http://localhost:3030
-- **Documentation**: http://localhost:3000
-
-### 3. Make Your First Change
-Edit `client/src/pages/home.rs`:
-```rust
-#[component]
-pub fn HomePage() -> impl IntoView {
- view! {
-
-
-
-
"Hello, Rustelo!"
-
"Your web app is ready to build amazing things!"
-
-
-
- }
-}
-```
-
-## ๐๏ธ Essential Commands
-
-### Development
-```bash
-# Start development server with hot reload
-just dev
-
-# Start documentation server
-just docs-dev
-
-# Run tests
-just test
-
-# Check code quality
-just check
-
-# Build for production
-just build-prod
-```
-
-### Documentation
-```bash
-# Setup documentation system
-just docs-setup
-
-# Build documentation
-just docs-build
-
-# Deploy to GitHub Pages
-just docs-deploy-github
-
-# Clean documentation build
-just docs-clean
-
-# Show all documentation commands
-just help-docs
-```
-
-### System
-```bash
-# Verify installation
-just verify-setup
-
-# Show all available commands
-just help
-
-# Generate setup completion report
-just generate-setup-report
-
-# Update dependencies
-just update
-```
-
-## ๐ง Configuration Options
-
-### Choose Your Features
-Rustelo is modular. Choose what you need:
-
-```bash
-# Minimal static website
-cargo build --no-default-features
-
-# Full-featured app (default)
-cargo build --features "auth,content-db,email"
-
-# Production with HTTPS
-cargo build --features "tls,auth,content-db,email"
-```
-
-### Environment Configuration
-Edit `.env` to customize your setup:
-
-```env
-# Basic Configuration
-SERVER_HOST=127.0.0.1
-SERVER_PORT=3030
-ENVIRONMENT=dev
-
-# Features (true/false)
-ENABLE_AUTH=true
-ENABLE_CONTENT_DB=true
-ENABLE_TLS=false
-
-# Database (choose one)
-DATABASE_URL=sqlite://database.db # SQLite (simple)
-# DATABASE_URL=postgresql://user:pass@localhost:5432/db # PostgreSQL (production)
-
-# Logging
-LOG_LEVEL=debug
-```
-
-## ๐ Documentation Features
-
-### What's Included
-- **๐ Interactive Guide** - Searchable, mobile-friendly documentation
-- **๐ Auto-Sync** - Automatically includes your existing docs
-- **๐ Multi-Deploy** - GitHub Pages, Netlify, Vercel, Docker
-- **๐จ Custom Styling** - Branded documentation with your colors
-- **๐ฑ Mobile-First** - Works perfectly on all devices
-
-### Customize Documentation
-```bash
-# Edit content in book/ directory
-# Add your own sections in book/SUMMARY.md
-# Customize styling in book/theme/custom.css
-
-# Build and preview
-just docs-build
-just docs-dev
-```
-
-## ๐๏ธ Database Setup
-
-### SQLite (Development)
-```bash
-# Already configured! Database file created automatically
-# Perfect for: Development, testing, small apps
-```
-
-### PostgreSQL (Production)
-```bash
-# Start PostgreSQL with Docker
-docker run -d -p 5432:5432 \
- -e POSTGRES_PASSWORD=password \
- -e POSTGRES_DB=myapp \
- postgres:15
-
-# Update .env
-DATABASE_URL=postgresql://postgres:password@localhost:5432/myapp
-
-# Run migrations
-just db-migrate
-```
-
-## ๐ Deployment
-
-### Quick Deploy to GitHub Pages
-```bash
-# Deploy documentation
-just docs-deploy-github
-
-# Deploy will be available at:
-# https://yourusername.github.io/my-app
-```
-
-### Check Your Setup
-```bash
-# View detailed setup information
-cat SETUP_COMPLETE.md
-
-# Regenerate setup report
-just regenerate-setup-report
-
-# Verify everything is working
-just verify-setup
-```
-
-### Production Deployment
-```bash
-# Build for production
-just build-prod
-
-# Deploy with Docker
-just docker-build
-just docker-run
-
-# Or deploy to cloud platform of choice
-```
-
-## ๐ ๏ธ Development Workflow
-
-### Daily Development
-```bash
-# Morning routine
-just verify-setup # Verify everything is working
-just dev # Start development server
-just docs-dev # Start documentation (separate terminal)
-
-# Make changes, they auto-reload!
-
-# Evening routine
-just test # Run tests
-just docs-build # Update documentation
-git add . && git commit -m "Your changes"
-```
-
-### Adding Features
-```bash
-# Add authentication
-# Edit Cargo.toml to include "auth" feature
-cargo build --features "auth"
-
-# Add content management
-cargo build --features "content-db"
-
-# Add everything
-cargo build --features "auth,content-db,email,tls"
-```
-
-## ๐ Common Tasks
-
-### Add a New Page
-1. Create `client/src/pages/about.rs`
-2. Add route in `client/src/app.rs`
-3. Document it in `book/`
-
-### Add API Endpoint
-1. Add handler in `server/src/api/`
-2. Register route in `server/src/main.rs`
-3. Add types in `shared/src/`
-
-### Style Your App
-1. Edit CSS in `style/`
-2. Use Tailwind classes in components
-3. Build CSS with `npm run build:css`
-
-### Update Documentation
-1. Edit markdown files in `book/`
-2. Build with `just docs-build`
-3. Deploy with `just docs-deploy-github`
-
-## ๐ Troubleshooting
-
-### Installation Issues
-```bash
-# Verify setup
-just verify-setup
-
-# Common fixes
-chmod +x scripts/*.sh # Fix script permissions
-cargo clean && cargo build # Clean build
-```
-
-### Development Issues
-```bash
-# Port already in use
-SERVER_PORT=3031 cargo run
-
-# Database connection error
-just db-setup # Setup database
-
-# Build errors
-cargo clean && cargo build # Clean build
-just update # Update dependencies
-```
-
-### Documentation Issues
-```bash
-# Documentation won't build
-mdbook build # Check for errors
-
-# Documentation server won't start
-just docs-clean && just docs-build # Clean rebuild
-```
-
-## ๐ Learning Path
-
-### 1. Start Here (5 minutes)
-- โ Run the installer
-- โ Start development servers
-- โ Make your first change
-
-### 2. Explore Features (15 minutes)
-- ๐ Try authentication features
-- ๐ Add some content
-- ๐ง Test email functionality
-
-### 3. Customize (30 minutes)
-- ๐จ Update styling and branding
-- ๐ Add documentation sections
-- ๐ง Configure for your needs
-
-### 4. Deploy (15 minutes)
-- ๐ Deploy documentation to GitHub Pages
-- ๐ Deploy app to your platform of choice
-
-## ๐ฏ Next Steps
-
-### Immediate
-1. **Customize branding** - Update colors, logos, text
-2. **Add content** - Write your app's content
-3. **Document features** - Update documentation
-
-### Short-term
-1. **Database setup** - Configure production database
-2. **Authentication** - Set up OAuth providers
-3. **Email** - Configure email service
-
-### Long-term
-1. **Advanced features** - Add custom functionality
-2. **Performance** - Optimize for production
-3. **Monitoring** - Set up logging and metrics
-
-## ๐ Useful Links
-
-### Documentation
-- **[Complete Guide](https://yourusername.github.io/rustelo)** - Full documentation
-- **[Features Guide](FEATURES.md)** - Detailed feature documentation
-- **[Installation Guide](INSTALL.md)** - Detailed installation instructions
-
-### Development
-- **[Leptos Book](https://book.leptos.dev/)** - Learn Leptos framework
-- **[Axum Documentation](https://docs.rs/axum/)** - Web server framework
-- **[Just Manual](https://github.com/casey/just)** - Task runner documentation
-
-### Tools
-- **[mdBook Guide](https://rust-lang.github.io/mdBook/)** - Documentation system
-- **[Tailwind CSS](https://tailwindcss.com/)** - CSS framework
-- **[DaisyUI](https://daisyui.com/)** - Component library
-
-## ๐ก Pro Tips
-
-### Productivity
-- Use `just help` to discover available commands
-- Keep documentation server running while developing
-- Use `just verify-setup` to troubleshoot issues
-
-### Best Practices
-- Commit early and often
-- Document as you build
-- Test in different environments
-- Keep dependencies updated
-
-### Performance
-- Use `cargo build --release` for production
-- Enable gzip compression
-- Optimize images and assets
-- Monitor performance metrics
-
-## ๐ You're Ready!
-
-Congratulations! You now have:
-- โ A fully functional web application
-- โ Professional documentation system
-- โ Development environment ready
-- โ Deployment pipeline configured
-
-**Start building something amazing with Rustelo!** ๐
-
----
-
-Need help? Check the [troubleshooting section](#๐-troubleshooting) or visit our [complete documentation](https://yourusername.github.io/rustelo).
-
-Happy coding! ๐ฆโจ
diff --git a/README.md b/README.md
index bfe43ee..4aa3122 100644
--- a/README.md
+++ b/README.md
@@ -490,6 +490,83 @@ SENDGRID_ENDPOINT=https://api.sendgrid.com/v3/mail/send
EMAIL_TEMPLATE_DIR=templates/email
```
+## ๐ Plugin Architecture
+
+Rustelo features a trait-based plugin system for unlimited extensibility without framework coupling.
+
+### What Are Plugins?
+
+Plugins extend Rustelo functionality by implementing well-defined traits:
+- **ResourceContributor**: Provide themes, menus, and translations
+- **PageProvider**: Provide custom page components
+
+### Key Features
+
+- โ **Type-Safe**: Compile-time validation of all plugin code
+- โ **Zero Conditional Compilation**: Framework code is completely independent
+- โ **Self-Contained**: Plugins are standalone crates
+- โ **Configuration-Driven**: Resources from TOML/FTL files
+- โ **Zero Runtime Overhead**: All embedding at compile time
+
+### Creating a Plugin
+
+**1. Create plugin crate:**
+```bash
+cargo new --lib my-plugin
+```
+
+**2. Implement ResourceContributor:**
+```rust
+use rustelo_core_lib::registration::ResourceContributor;
+
+pub struct MyPlugin;
+
+impl ResourceContributor for MyPlugin {
+ fn contribute_themes(&self) -> HashMap {
+ let mut themes = HashMap::new();
+ themes.insert("my-theme".to_string(),
+ include_str!("../config/themes/my-theme.toml").to_string());
+ themes
+ }
+
+ fn name(&self) -> &str {
+ "my-plugin"
+ }
+}
+```
+
+**3. Register at startup:**
+```rust
+rustelo_core_lib::register_contributor(&MyPlugin)?;
+rustelo_core_lib::load_resources_from_config()?;
+```
+
+### Plugin Types
+
+| Type | Purpose | Example |
+|------|---------|---------|
+| **Resource-Only** | Themes, menus, translations | Custom theme plugin |
+| **Page Provider** | Custom page components | Analytics dashboard |
+| **Composite** | Resources + pages | Feature module |
+
+### Evolution Path
+
+**Level 5 (Current):** Compile-time plugins
+- Plugins compiled into binary
+- Registration at startup
+- โ Production ready
+
+**Level 8 (Future):** Runtime plugins
+- Dynamic `.so`/`.dylib` loading
+- Hot reload support
+- Same trait interfaces (backward compatible)
+
+### Documentation
+
+- [Plugin Architecture Guide](../docs/architecture/rustelo-plugin-architecture.md)
+- [Plugin Development Guide](./.coder/info/PHASE3-PLUGIN-DEVELOPMENT-GUIDE.md)
+- [Example Plugin](../website/website-impl/crates/plugin-example-theme/)
+
## ๐๏ธ Project Structure
```
diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index d220e27..0000000
--- a/TODO.md
+++ /dev/null
@@ -1,8 +0,0 @@
-- [X] Configuration builder
-- [X] Admin Dashboard
-- [ ] User profile manager
-- [ ] Remove python script are in docs ?
-
-- [ ] Add file upload capabilities** for media management?
-- [ ] **Enhance the dashboard** with content analytics?
-- [ ] **Show how to configure** the content sources (DB vs Files vs Both)?
diff --git a/assets/example-init-config.toml b/assets/example-init-config.toml
new file mode 100644
index 0000000..ec4b710
--- /dev/null
+++ b/assets/example-init-config.toml
@@ -0,0 +1,32 @@
+# Example Rustelo initialization configuration file
+# Use this to avoid interactive prompts during project creation
+
+# Template to use for initialization (optional, defaults to CLI argument)
+template = "basic"
+
+# Directory handling when target already exists
+# Options: "merge", "replace", "cancel"
+existing_directory_action = "merge"
+
+# Skip all confirmations (assume yes for safety prompts)
+auto_confirm = true
+
+# Asset configuration
+[assets]
+# Source for templates: "remote", "local", or custom URL
+source = "local"
+
+# Directory to store assets in the project
+download_location = ".rustelo-assets"
+
+# Framework path (for local development)
+framework_path = "../rustelo"
+
+# Enable asset caching
+cache_enabled = true
+
+# Automatic updates on build
+auto_update = true
+
+# Notification methods
+notification_methods = ["console"]
\ No newline at end of file
diff --git a/assets/logos/github-img.png b/assets/logos/github-img.png
new file mode 100644
index 0000000..3a069fa
Binary files /dev/null and b/assets/logos/github-img.png differ
diff --git a/logos/rustelo-imag.svg b/assets/logos/rustelo-imag.svg
similarity index 100%
rename from logos/rustelo-imag.svg
rename to assets/logos/rustelo-imag.svg
diff --git a/logos/rustelo-image.ascii b/assets/logos/rustelo-image.ascii
similarity index 100%
rename from logos/rustelo-image.ascii
rename to assets/logos/rustelo-image.ascii
diff --git a/logos/rustelo_dev-logo-b-h.svg b/assets/logos/rustelo_dev-logo-b-h.svg
similarity index 100%
rename from logos/rustelo_dev-logo-b-h.svg
rename to assets/logos/rustelo_dev-logo-b-h.svg
diff --git a/logos/rustelo_dev-logo-b-v.svg b/assets/logos/rustelo_dev-logo-b-v.svg
similarity index 100%
rename from logos/rustelo_dev-logo-b-v.svg
rename to assets/logos/rustelo_dev-logo-b-v.svg
diff --git a/logos/rustelo_dev-logo-h.svg b/assets/logos/rustelo_dev-logo-h.svg
similarity index 100%
rename from logos/rustelo_dev-logo-h.svg
rename to assets/logos/rustelo_dev-logo-h.svg
diff --git a/logos/rustelo_dev-logo-v.svg b/assets/logos/rustelo_dev-logo-v.svg
similarity index 100%
rename from logos/rustelo_dev-logo-v.svg
rename to assets/logos/rustelo_dev-logo-v.svg
diff --git a/assets/logos/src/github-img.psd b/assets/logos/src/github-img.psd
new file mode 100644
index 0000000..9aad1f2
Binary files /dev/null and b/assets/logos/src/github-img.psd differ
diff --git a/assets/rustelo-init-config-example.toml b/assets/rustelo-init-config-example.toml
new file mode 100644
index 0000000..0a480c7
--- /dev/null
+++ b/assets/rustelo-init-config-example.toml
@@ -0,0 +1,66 @@
+# Rustelo Init Configuration File
+# This file allows you to skip interactive prompts when creating new projects
+# Usage: cargo rustelo init my-project --config rustelo-init-config.toml
+
+# Template to use for initialization
+# Options: "basic", "minimal", "enterprise", "cms", "saas", "ai-powered", "e-commerce"
+# If not specified, uses the template from CLI argument or "basic" as default
+template = "basic"
+
+# How to handle existing directories
+# Options:
+# "merge" - Merge template into existing directory (default)
+# "replace" - Remove existing directory and create fresh
+# "cancel" - Cancel operation if directory exists
+existing_directory_action = "merge"
+
+# Skip safety confirmations (use with caution)
+# When true, assumes "yes" to all safety prompts
+auto_confirm = false
+
+# Asset configuration section
+[assets]
+# Template source configuration
+# Options:
+# "remote" - Download from GitHub/remote URL
+# "local" - Use local framework development setup
+# Custom URL starting with "http" or "https"
+source = "local"
+
+# Directory to store assets in your project
+# Options:
+# ".rustelo-assets" (recommended)
+# "templates"
+# Custom path
+download_location = ".rustelo-assets"
+
+# Framework path for local development
+# Required when source = "local"
+# Should point to your local rustelo framework directory
+framework_path = "../rustelo"
+
+# Enable asset caching to speed up repeated operations
+cache_enabled = true
+
+# Automatic asset updates
+# true = Update assets automatically on build
+# false = Manual updates only
+auto_update = true
+
+# Notification methods for updates and operations
+# Available options: "console", "file", "webhook"
+notification_methods = ["console"]
+
+# Example configurations for different scenarios:
+
+# For production/CI environments:
+# source = "remote"
+# download_location = ".rustelo-assets"
+# auto_update = false
+# existing_directory_action = "cancel"
+
+# For development/testing:
+# source = "local"
+# framework_path = "../rustelo"
+# auto_update = true
+# existing_directory_action = "merge"
\ No newline at end of file
diff --git a/client/Cargo.toml b/client/Cargo.toml
deleted file mode 100644
index 6a68009..0000000
--- a/client/Cargo.toml
+++ /dev/null
@@ -1,50 +0,0 @@
-[package]
-name = "client"
-version = "0.1.0"
-edition = "2024"
-authors = ["Rustelo Contributors"]
-license = "MIT"
-description = "Client-side components for Rustelo web application template"
-documentation = "https://docs.rs/client"
-repository = "https://github.com/yourusername/rustelo"
-homepage = "https://rustelo.dev"
-readme = "../../README.md"
-keywords = ["rust", "web", "leptos", "wasm", "frontend"]
-categories = ["web-programming", "wasm"]
-
-[lib]
-crate-type = ["cdylib", "rlib"]
-
-[dependencies]
-leptos = { workspace = true, features = ["hydrate"] }
-leptos_router = { workspace = true }
-leptos_meta = { workspace = true }
-leptos_config = { workspace = true }
-wasm-bindgen = { workspace = true }
-serde = { workspace = true }
-serde_json = { workspace = true }
-reqwasm = { workspace = true }
-web-sys = { workspace = true }
-regex = { workspace = true }
-console_error_panic_hook = { version = "0.1.7" }
-toml = { workspace = true }
-fluent = { workspace = true }
-fluent-bundle = { workspace = true }
-unic-langid = { workspace = true }
-
-shared = { path = "../shared" }
-gloo-timers = { workspace = true }
-wasm-bindgen-futures = { workspace = true }
-urlencoding = "2.1"
-chrono = { workspace = true }
-uuid = { workspace = true }
-# leptos-use = "0.13"
-
-[features]
-default = []
-hydrate = []
-
-[package.metadata.docs.rs]
-# Configuration for docs.rs
-all-features = true
-rustdoc-args = ["--cfg", "docsrs"]
diff --git a/client/build.rs b/client/build.rs
deleted file mode 100644
index 2feb7f0..0000000
--- a/client/build.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-use std::{
- io::{self, Write},
- path::Path,
- process,
-};
-
-fn main() {
- println!("cargo::rustc-check-cfg=cfg(web_sys_unstable_apis)");
- println!("cargo:rerun-if-changed=uno.config.ts");
- //println!("cargo:rerun-if-changed=style/main.scss");
-
- // Check if node_modules exists in various locations, if not run pnpm install
- let node_modules_paths = ["../node_modules", "node_modules", "../../node_modules"];
-
- let node_modules_exists = node_modules_paths
- .iter()
- .any(|path| Path::new(path).exists());
-
- if !node_modules_exists {
- println!("cargo:warning=node_modules not found, running pnpm install...");
-
- // Try to find package.json to determine correct directory
- let package_json_paths = ["../package.json", "package.json", "../../package.json"];
-
- let install_dir = package_json_paths
- .iter()
- .find(|path| Path::new(path).exists())
- .map(|path| Path::new(path).parent().unwrap_or(Path::new(".")))
- .unwrap_or(Path::new(".."));
-
- match process::Command::new("pnpm")
- .arg("install")
- .current_dir(install_dir)
- .output()
- {
- Ok(output) => {
- if !output.status.success() {
- let _ = io::stdout().write_all(&output.stdout);
- let _ = io::stdout().write_all(&output.stderr);
- panic!("pnpm install failed");
- }
- println!("cargo:warning=pnpm install completed successfully");
- }
- Err(e) => {
- println!("cargo:warning=Failed to run pnpm install: {:?}", e);
- println!("cargo:warning=Please run 'pnpm install' manually in the project root");
- // Don't panic here, just warn - the build might still work
- }
- }
- }
-
- match process::Command::new("sh")
- .arg("-c")
- .arg("pnpm run build")
- .output()
- {
- Ok(output) => {
- if !output.status.success() {
- let _ = io::stdout().write_all(&output.stdout);
- let _ = io::stdout().write_all(&output.stderr);
- panic!("UnoCSS error");
- }
- }
- Err(e) => panic!("UnoCSS error: {:?}", e),
- };
-}
diff --git a/client/src/app.rs b/client/src/app.rs
deleted file mode 100644
index 9729127..0000000
--- a/client/src/app.rs
+++ /dev/null
@@ -1,188 +0,0 @@
-//#![allow(unused_imports)]
-//#![allow(dead_code)]
-//#![allow(unused_variables)]
-// Suppress leptos_router warnings about reactive signal access outside tracking context
-#![allow(clippy::redundant_closure)]
-//#![allow(unused_assignments)]
-
-//use crate::defs::{NAV_LINK_CLASS, ROUTES};
-use crate::auth::AuthProvider;
-use crate::components::NavMenu;
-use crate::i18n::{I18nProvider, ThemeProvider};
-use crate::pages::{AboutPage, DaisyUIPage, FeaturesDemoPage, HomePage, UserPage};
-use crate::state::*;
-use crate::utils::make_popstate_effect;
-use leptos::children::Children;
-use leptos::prelude::*;
-use leptos_meta::{MetaTags, Title, provide_meta_context};
-// use regex::Regex;
-use shared::{get_bundle, t};
-use std::collections::HashMap;
-
-//// Wrapper component for consistent layout.
-#[component]
-fn Wrapper(children: Children) -> impl IntoView {
- view! { <>{children()}> }
-}
-
-/// NotFoundPage component for 404s.
-#[component]
-fn NotFoundPage() -> impl IntoView {
- view! {
"Page not found."
}
-}
-
-/// Main app component with SSR path awareness and SPA routing.
-#[component]
-pub fn App(#[prop(default = String::new())] _initial_path: String) -> impl IntoView {
- provide_meta_context();
-
- // Always start with HOME during SSR, then route to correct page on client
- let (path, set_path) = signal("/".to_string());
- make_popstate_effect(set_path);
-
- // Update path from URL after hydration (client-side redirect)
- #[cfg(target_arch = "wasm32")]
- {
- use wasm_bindgen_futures::spawn_local;
- spawn_local(async move {
- if let Some(win) = web_sys::window() {
- let current_path = win
- .location()
- .pathname()
- .unwrap_or_else(|_| "/".to_string());
- // If URL path is different from home, redirect to it
- if current_path != "/" {
- web_sys::console::log_1(
- &format!("Client-side redirect to: {}", current_path).into(),
- );
- set_path.set(current_path);
- }
- }
- });
- }
- let (lang, _set_lang) = signal("en".to_string());
- // --- Unit test placeholder for route matching ---
- // #[cfg(test)]
- // mod tests {
- // use super::*;
- // #[test]
- // fn test_user_route() {
- // let re = Regex::new(r"^/user/(\\d+)$").expect("Valid regex");
- // assert!(re.is_match("/user/42"));
- // }
- // }
- view! {
-
-
-
-
-
-
-
-
-
-
-
-
-
- { let lang = lang.clone(); let path = path.clone();
- move || {
- let p = path.get();
- let lang_val = lang.get();
- let bundle = get_bundle(&lang_val).unwrap_or_else(|_| {
- // Fallback to a simple bundle if loading fails
- use fluent::FluentBundle;
- use unic_langid::LanguageIdentifier;
- let langid: LanguageIdentifier = "en".parse().unwrap_or_else(|e| {
- web_sys::console::error_1(&format!("Failed to parse default language 'en': {:?}", e).into());
- // This should never happen, but create a minimal fallback
- LanguageIdentifier::from_parts(
- unic_langid::subtags::Language::from_bytes(b"en").unwrap_or_else(|e| {
- web_sys::console::error_1(&format!("Critical error: failed to create 'en' language: {:?}", e).into());
- // Fallback to creating a new language identifier from scratch
- match "en".parse::() {
- Ok(lang) => lang,
- Err(_) => {
- // If even this fails, we'll use the default language
- web_sys::console::error_1(&"Using default language as final fallback".into());
- unic_langid::subtags::Language::default()
- }
- }
- }),
- None,
- None,
- &[],
- )
- });
- FluentBundle::new(vec![langid])
- });
- let content = match p.as_str() {
- "/" => t(&bundle, "main-desc", None),
- "/about" => t(&bundle, "about-desc", None),
- "/user" => "User Dashboard".to_string(),
- "/daisyui" => "DaisyUI Components Demo".to_string(),
- "/features-demo" => "New Features Demo".to_string(),
-
- _ if p.starts_with("/user/") => {
- if let Some(id) = p.strip_prefix("/user/") {
- let mut args = HashMap::new();
- args.insert("id", id);
- t(&bundle, "user-page", Some(&args))
- } else {
- t(&bundle, "not-found", None)
- }
- },
- _ => t(&bundle, "not-found", None),
- };
- view! {
-
-