# Rustelo Installation Guide Welcome to Rustelo! This guide will help you install and set up your Rust web application framework built with Leptos. ## Quick Start ### For Unix/Linux/macOS (Development) ```bash # Clone or download the project git clone cd rustelo # Run the simple development installer ./install-dev.sh ``` ### For Windows (Development) ```powershell # Clone or download the project git clone cd rustelo # Run the PowerShell installer .\install.ps1 ``` ### For Production/Advanced Setup ```bash # Full installer with all options ./install.sh --help # Example production setup ./install.sh -n my-app -e prod --enable-tls ``` ## Installation Options ### 1. Development Setup (Recommended for beginners) The simplest way to get started: **Unix/Linux/macOS:** ```bash ./install-dev.sh ``` **Windows:** ```powershell .\install.ps1 ``` This will: - Check system requirements - Install necessary Rust tools - Create a new project with development defaults - Set up environment configuration - Install dependencies and build the project ### 2. Full Installation (Advanced) For production deployments or custom configurations: ```bash ./install.sh [OPTIONS] ``` #### Available Options: | Option | Description | Default | |--------|-------------|---------| | `-n, --name NAME` | Project name | `my-rustelo-app` | | `-e, --env ENV` | Environment (dev/prod) | `dev` | | `-d, --dir DIR` | Installation directory | `./` | | `-t, --type TYPE` | Installation type (full/minimal/custom) | `full` | | `--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 | - | #### Examples: ```bash # Basic development setup ./install.sh # Production blog with HTTPS ./install.sh -n my-blog -e prod --enable-tls # Minimal installation without auth ./install.sh -t minimal --disable-auth # Custom installation (interactive) ./install.sh -t custom # Force reinstall existing project ./install.sh -n existing-project --force ``` ### 3. Windows PowerShell Installation For Windows users, use the PowerShell script: ```powershell .\install.ps1 [OPTIONS] ``` #### PowerShell Options: | Option | Description | Default | |--------|-------------|---------| | `-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 | - | #### PowerShell Examples: ```powershell # Basic development setup .\install.ps1 # Production setup with TLS .\install.ps1 -ProjectName my-app -Environment prod -EnableTLS # Custom project location .\install.ps1 -ProjectName my-blog -InstallDir "C:\Projects\my-blog" ``` ## 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) ### Optional Dependencies - **PostgreSQL** (for database features) - **Redis** (for caching and sessions) - **Docker** (for containerized deployment) ### 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) ## Manual Installation If you prefer to set up the project manually: ### 1. Clone the Template ```bash git clone cd rustelo cp -r template my-project cd my-project ``` ### 2. Install Rust Tools ```bash cargo install cargo-leptos cargo install cargo-watch # Optional ``` ### 3. Create Environment Configuration Create a `.env` file: ```env # Environment Configuration ENVIRONMENT=dev # Server Configuration SERVER_HOST=127.0.0.1 SERVER_PORT=3030 SERVER_PROTOCOL=http # Database Configuration DATABASE_URL=postgresql://dev:dev@localhost:5432/myapp_dev # Session Configuration SESSION_SECRET=your-secret-key-here # Features ENABLE_AUTH=true ENABLE_CONTENT_DB=true ENABLE_TLS=false ``` ### 4. Install Dependencies ```bash # Install Rust dependencies cargo fetch # Install Node.js dependencies npm install # or pnpm install ``` ### 5. Build the Project ```bash # Build CSS npm run build:css # Build Rust code cargo build ``` ### 6. Start Development Server ```bash cargo leptos watch ``` ## 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 ├── certs/ # TLS certificates (if enabled) ├── scripts/ # Setup and utility scripts ├── .env # Environment configuration ├── Cargo.toml # Rust dependencies ├── package.json # Node.js dependencies ├── start.sh # Development start script └── start-prod.sh # Production start script ``` ## Configuration ### Environment Variables (.env) | Variable | Description | Default | |----------|-------------|---------| | `ENVIRONMENT` | Environment type (dev/prod) | `dev` | | `SERVER_HOST` | Server bind address | `127.0.0.1` | | `SERVER_PORT` | Server port | `3030` | | `SERVER_PROTOCOL` | Protocol (http/https) | `http` | | `DATABASE_URL` | Database connection string | PostgreSQL URL | | `SESSION_SECRET` | Session encryption key | Generated | | `LOG_LEVEL` | Logging level | `info` | ### Feature Flags Enable or disable features by setting these variables: - `ENABLE_AUTH` - Authentication system - `ENABLE_CONTENT_DB` - Content management - `ENABLE_TLS` - HTTPS support - `ENABLE_OAUTH` - OAuth providers ### TLS/HTTPS Configuration To enable HTTPS: 1. Set `ENABLE_TLS=true` in `.env` 2. Set `SERVER_PROTOCOL=https` in `.env` 3. Generate certificates: ```bash ./scripts/generate_certs.sh ``` ## Development Workflow ### Starting the Development Server ```bash # Option 1: Use the start script ./start.sh # Option 2: Direct command cargo leptos watch # Option 3: With CSS watching npm run dev & cargo leptos watch ``` ### Building for Production ```bash # Option 1: Use the production script ./start-prod.sh # Option 2: Direct commands cargo leptos build --release ./target/release/server ``` ### Available 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 | ## Troubleshooting ### Common Issues #### 1. Rust Installation Issues **Error**: `cargo: command not found` **Solution**: Ensure Rust is installed and in PATH: ```bash # Add to your shell profile (.bashrc, .zshrc, etc.) export PATH="$HOME/.cargo/bin:$PATH" source ~/.bashrc ``` #### 2. Node.js Dependencies **Error**: `npm: command not found` **Solution**: Install Node.js from [nodejs.org](https://nodejs.org/) #### 3. 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 ``` #### 4. Port Already in Use **Error**: `Address already in use (os error 48)` **Solution**: Change the port in `.env`: ```env SERVER_PORT=3031 ``` #### 5. Database Connection Issues **Error**: Database connection failed **Solution**: 1. Install PostgreSQL 2. Create database: `createdb myapp_dev` 3. Update `DATABASE_URL` in `.env` ### Getting Help 1. Check the installation log: `install.log` 2. Run diagnostics: `cargo run --bin config_tool -- validate` 3. Review configuration: `cargo run --bin config_tool -- show` 4. Check the documentation files: - `README.md` - General information - `CONFIG_README.md` - Configuration guide - `DAISYUI_INTEGRATION.md` - UI components ## Next Steps After successful installation: 1. **Explore the Code**: Check out the example components in `src/` 2. **Configure Features**: Enable/disable features in `.env` 3. **Set Up Database**: Configure PostgreSQL for data persistence 4. **Customize Styling**: Modify CSS and DaisyUI components 5. **Add Authentication**: Set up OAuth providers if needed 6. **Deploy**: Use the production build for deployment ## License This project is licensed under the MIT License. See the LICENSE file for details. ## Support For issues and questions: - Check the troubleshooting section above - Review the configuration documentation - Create an issue on the project repository - Join the community discussions Happy coding with Rustelo! 🚀