Rustelo/book/getting-started/installation.md

545 lines
10 KiB
Markdown
Raw Normal View History

# Quick Installation
<div align="center">
<img src="../logos/rustelo_dev-logo-h.svg" alt="RUSTELO" width="300" />
</div>
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. 🎉