# Quick Installation
RUSTELO
This guide will help you install[Rustelo](/) and set up your development environment quickly and efficiently. ## Prerequisites Before installing Rustelo, ensure you have the following prerequisites: ### System Requirements - **Operating System**: Linux, macOS, or Windows (WSL2 recommended for Windows) - **Memory**: Minimum 4GB RAM, 8GB+ recommended for comfortable development - **Storage**: At least 2GB free space for tools and dependencies - **Internet Connection**: Required for downloading dependencies ### Required Tools #### 1. Rust Programming Language Rustelo requires Rust 1.70.0 or later. **Install Rust using rustup:** ```bash # Install rustup (Rust installer and version manager) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Follow the on-screen instructions, then restart your shell or run: source ~/.cargo/env # Verify installation rustc --version # Should be 1.70.0 or later cargo --version ``` **Update existing Rust installation:** ```bash rustup update ``` #### 2. Node.js and npm (for frontend assets) Node.js 18.0.0 or later is required for building frontend assets. **Option 1: Using Node Version Manager (recommended)** ```bash # Install nvm (Linux/macOS) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash # Restart your shell or run: source ~/.bashrc # Install and use Node.js 18 nvm install 18 nvm use 18 # Option 2: Direct installation # Visit https://nodejs.org/ and download LTS version # Verify installation node --version # Should be 18.0.0 or later npm --version ``` #### 3. Git Git is required for version control and dependency management. **Linux (Ubuntu/Debian):** ```bash sudo apt update sudo apt install git ``` **Linux (RHEL/CentOS/Fedora):** ```bash sudo dnf install git # or for older versions: sudo yum install git ``` **macOS:** ```bash # Using Homebrew brew install git # Or download from https://git-scm.com/download/mac ``` **Windows:** ```bash # Download from https://git-scm.com/download/win # Verify installation git --version ``` ### Recommended Tools #### 1. cargo-leptos Essential for building Leptos applications: ```bash cargo install cargo-leptos # Verify installation cargo leptos --version ``` #### 2. SQLx CLI For database migrations and management: ```bash cargo install sqlx-cli --features postgres,sqlite # Verify installation sqlx --version ``` #### 3. Just (command runner) Optional but recommended for task automation: ```bash cargo install just # Verify installation just --version ``` #### 4. mdBook (for documentation) If you plan to work with documentation: ```bash cargo install mdbook # Verify installation mdbook --version ``` ## Installation Methods ### Method 1: Clone from Repository (Recommended for Development) This method gives you the complete[Rustelo](/) template with all features: ```bash # Clone the repository git clone https://github.com/yourusername/rustelo.git cd rustelo # Copy the template to your project cp -r template my-rustelo-app cd my-rustelo-app # Install dependencies cargo build # Install npm dependencies for frontend npm install ``` ### Method 2: Use as Template Create a new repository using Rustelo as a template: 1. Go to the[Rustelo](/) repository on GitHub 2. Click "Use this template" 3. Create your new repository 4. Clone your new repository: ```bash git clone https://github.com/yourusername/your-new-app.git cd your-new-app # Install dependencies cargo build npm install ``` ### Method 3: Download and Extract Download the latest release: ```bash # Download the latest release curl -L https://github.com/yourusername/rustelo/archive/main.zip -o rustelo.zip # Extract unzip rustelo.zip cd rustelo-main/template # Install dependencies cargo build npm install ``` ## Database Setup Rustelo supports both SQLite and PostgreSQL. Choose based on your needs: ### Option 1: SQLite (Recommended for Development) SQLite requires no additional setup and is perfect for development: ```bash # Set database URL (optional, SQLite is the default) export DATABASE_URL="sqlite//:database.db" ``` ### Option 2: PostgreSQL (Recommended for Production) #### Option 2a: Using Docker (Easiest) ```bash # Start PostgreSQL container docker run -d \ --name rustelo-postgres \ -e POSTGRES_PASSWORD=password \ -e POSTGRES_DB=rustelo \ -p 5432:5432 \ postgres:15 # Set database URL export DATABASE_URL="postgresql://postgres:password@localhost:5432/rustelo" ``` #### Option 2b: Native Installation **Ubuntu/Debian:** ```bash sudo apt update sudo apt install postgresql postgresql-contrib sudo systemctl start postgresql sudo systemctl enable postgresql # Create database sudo -u postgres createdb rustelo sudo -u postgres psql -c "CREATE USER rustelo WITH PASSWORD 'password';" sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE rustelo TO rustelo;" ``` **macOS:** ```bash # Using Homebrew brew install postgresql brew services start postgresql # Create database createdb rustelo psql rustelo -c "CREATE USER rustelo WITH PASSWORD 'password';" psql rustelo -c "GRANT ALL PRIVILEGES ON DATABASE rustelo TO rustelo;" ``` **Windows:** ```bash # Download and install from https://www.postgresql.org/download/windows/ # Follow the installation wizard # Use pgAdmin or command line to create database ``` ## Environment Configuration ### 1. Create Environment File Create a `.env` file in your project root: ```bash cat > .env << EOF # Database configuration DATABASE_URL=sqlite//:database.db # Security secrets (change these!) SESSION_SECRET=your-session-secret-here JWT_SECRET=your-jwt-secret-here # Application settings RUSTELO_ENV=development RUSTELO_LOG_LEVEL=debug # Optional: Email configuration (if using email features) # SMTP_HOST=smtp.gmail.com # SMTP_USERNAME=your-email@gmail.com # SMTP_PASSWORD=your-app-password # FROM_EMAIL=noreply@yourapp.com EOF ``` ### 2. Generate Secure Secrets For production or if you want secure development secrets: ```bash # Generate session secret openssl rand -base64 32 # Generate JWT secret openssl rand -base64 32 # Update your .env file with these values ``` ### 3. Build Configuration Generate your application configuration: ```bash # Build development configuration ./config/scripts/build-config.sh dev # This creates config.toml with all your settings ``` ## Verify Installation ### 1. Check Dependencies ```bash # Check Rust rustc --version cargo --version # Check Node.js node --version npm --version # Check Git git --version # Check optional tools cargo leptos --version sqlx --version just --version ``` ### 2. Build Project ```bash # Build the project cargo build # Build frontend assets npm run build # Or use leptos build command cargo leptos build ``` ### 3. Run Tests ```bash # Run Rust tests cargo test # Run with all features cargo test --all-features ``` ### 4. Start Development Server ```bash # Load environment variables source .env # Start development server cargo leptos watch # Or use just if available just dev ``` Your application should now be running at `http://localhost:3030`! ## Post-Installation Setup ### 1. Database Migrations If using a SQL database, run initial migrations: ```bash # Create initial migration (if not exists) sqlx migrate add initial # Run migrations sqlx migrate run ``` ### 2. Create Admin User (Optional) Some applications may need an initial admin user: ```bash # This depends on your application setup cargo run --bin create-admin-user ``` ### 3. Configure Features Enable the features you need by editing your configuration: ```bash # Edit configuration ./config/scripts/build-config.sh dev # Enable specific features in config/features/ ``` ## Development Environment Setup ### 1. IDE Configuration **VS Code (Recommended):** Install recommended extensions: - rust-analyzer - Leptos Language Server - TOML Language Support - SQLx Language Server **Other IDEs:** - IntelliJ IDEA with Rust plugin - Neovim with rust-analyzer - Emacs with rust-mode ### 2. Git Configuration Set up Git hooks and configuration: ```bash # Configure git (if not already done) git config --global user.name "Your Name" git config --global user.email "your.email@example.com" # Set up pre-commit hooks (optional) cargo install pre-commit pre-commit install ``` ### 3. Development Tools Install additional development tools: ```bash # Code formatting rustup component add rustfmt # Linting rustup component add clippy # Documentation cargo install cargo-doc # Watch for changes cargo install cargo-watch ``` ## Troubleshooting ### Common Installation Issues #### Rust Installation Problems ```bash # If rustup installation fails curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path # Add to PATH manually echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` #### cargo-leptos Installation Issues ```bash # If cargo-leptos fails to install cargo install cargo-leptos --force # Or install specific version cargo install cargo-leptos --version 0.2.1 ``` #### Database Connection Issues ```bash # Test SQLite sqlite3 database.db ".tables" # Test PostgreSQL psql $DATABASE_URL -c "SELECT version();" ``` #### Permission Issues (Linux/macOS) ```bash # If you get permission errors sudo chown -R $USER:$USER ~/.cargo chmod -R u+rw ~/.cargo ``` ### Performance Issues If compilation is slow: ```bash # Use faster linker (Linux) sudo apt install lld export RUSTFLAGS="-C link-arg=-fuse-ld=lld" # Use faster linker (macOS) export RUSTFLAGS="-C link-arg=-fuse-ld=/usr/bin/ld" # Increase parallel compilation export CARGO_BUILD_JOBS=4 ``` ### Getting Help If you encounter issues: 1. **Check system requirements** - Ensure you meet all prerequisites 2. **Update tools** - Make sure Rust and other tools are up to date 3. **Check logs** - Look at error messages carefully 4. **Search documentation** - Check the troubleshooting guide 5. **Community support** - Ask questions in forums or chat 6. **GitHub issues** - Report bugs on the repository ## Next Steps After successful installation: 1. **[Basic Configuration](./configuration.md)** - Configure your application settings 2. **[First Run & Setup](./first-run.md)** - Get your application running 3. **[Development Workflow](../developers/setup/workflow.md)** - Learn the development process 4. **[Project Structure](../developers/setup/structure.md)** - Understand the codebase organization Congratulations! You now have[Rustelo](/) installed and ready for development. 🎉