Get up and running with[Rustelo](/) in just a few minutes! This guide will help you create your first[Rustelo](/) application with minimal setup.
## Prerequisites
Before you begin, ensure you have the following installed:
- **Rust** (1.75 or later) - [Install Rust](https://rustup.rs/)
- **Node.js** (18 or later) - [Install Node.js](https://nodejs.org/)
- **Git** - [Install Git](https://git-scm.com/)
Optional but recommended:
- **Docker** - For database setup and deployment
- **cargo-leptos** - For enhanced development experience
## 30-Second Setup
### 1. Clone the Template
```bash
git clone https://github.com/yourusername/rustelo.git my-app
cd my-app
```
### 2. Run the Interactive Setup
```bash
./scripts/configure-features.sh
```
This interactive script will:
- Help you choose which features to enable
- Set up your environment configuration
- Install necessary dependencies
- Initialize your database (if needed)
### 3. Start Development Server
```bash
cargo run
```
Your application will be available at `http://localhost:3030`
## Manual Setup
If you prefer to configure everything manually:
### 1. Choose Your Features
Rustelo uses a modular feature system. Choose the combination that fits your needs:
```bash
# Minimal static website
cargo build --no-default-features
# Static website with HTTPS
cargo build --no-default-features --features "tls"
# Authentication-enabled app
cargo build --no-default-features --features "auth"
# Full-featured application (default)
cargo build --features "auth,content-db,email"
```
### 2. Configure Environment
Create a `.env` file in your project root:
```bash
# Basic configuration
SERVER_HOST=127.0.0.1
SERVER_PORT=3030
SERVER_PROTOCOL=http
ENVIRONMENT=DEV
LOG_LEVEL=info
# Database (if using auth or content-db features)
DATABASE_URL=sqlite//:database.db
# JWT (if using auth feature)
JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
JWT_EXPIRATION_HOURS=24
```
### 3. Start the Application
```bash
cargo run
```
## First Steps
Once your application is running, you can:
### Access Your Application
- **Frontend**: `http://localhost:3030`
- **Health Check**: `http://localhost:3030/api/health`
### Explore the Structure
```
my-app/
├── client/ # Frontend Leptos components
├── server/ # Backend Axum server
├── shared/ # Shared types and utilities
├── content/ # Static content files
├── docs/ # Documentation
├── migrations/ # Database migrations
└── scripts/ # Helper scripts
```
### Try Different Configurations
#### Static Website
```bash
# Stop the current server (Ctrl+C)
cargo run --no-default-features
```
Perfect for: Marketing sites, documentation, landing pages
#### Authentication-Enabled
```bash
# Requires database setup
cargo run --features "auth"
```
Perfect for: User portals, SaaS applications
#### Content Management
```bash
# Requires database setup
cargo run --features "content-db"
```
Perfect for: Blogs, news sites, CMS
## Common First Tasks
### 1. Customize the Homepage
Edit `client/src/pages/home.rs`:
```rust
#[component]
pub fn HomePage() -> impl IntoView {
view! {
"Welcome to My App"
"Your awesome application built with Rustelo"
}
}
```
### 2. Add a New Page
Create `client/src/pages/about.rs`:
```rust
use leptos::*;
#[component]
pub fn AboutPage() -> impl IntoView {
view! {
"About Us"
"This is our awesome application!"
}
}
```
Add it to the router in `client/src/app.rs`:
```rust
```
### 3. Add Authentication (Optional)
If you enabled the `auth` feature, you can add login/register forms:
```rust
use leptos::*;
use shared::auth::*;
#[component]
pub fn LoginPage() -> impl IntoView {
let (email, set_email) = create_signal(String::new());
let (password, set_password) = create_signal(String::new());
let login_action = create_action(|credentials: &LoginRequest| {
let credentials = credentials.clone();
async move {
// Login logic here
}
});
view! {
"Login"
}
}
```
## Database Setup (Optional)
If you're using features that require a database (`auth` or `content-db`):
### SQLite (Recommended for development)
```bash
# Already configured with DATABASE_URL=sqlite:database.db
# The database file will be created automatically
```
### PostgreSQL (Recommended for production)
```bash
# Start PostgreSQL with Docker
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=rustelo \
-p 5432:5432 \
postgres:15
# Update your .env file
DATABASE_URL=postgresql://postgres:password@localhost:5432/rustelo
```
### Run Migrations
```bash
# Install sqlx-cli if not already installed
cargo install sqlx-cli
# Run migrations
sqlx migrate run
```
## Development Tips
### Hot Reloading
For the best development experience, use `cargo-leptos`:
```bash
# Install cargo-leptos
cargo install cargo-leptos
# Start with hot reloading
cargo leptos serve
```
### Database Inspection
```bash
# SQLite
sqlite3 database.db ".tables"
# PostgreSQL
psql postgresql://postgres:password@localhost:5432/rustelo -c "\dt"
```
### Logs and Debugging
```bash
# Verbose logging
LOG_LEVEL=debug cargo run
# Trace level (very verbose)
LOG_LEVEL=trace cargo run
```
## Next Steps
Now that you have[Rustelo](/) running, here are some suggested next steps:
1. **[Learn about Features](../features/overview.md)** - Understand what each feature provides
2. **[Project Structure](../development/structure.md)** - Get familiar with the codebase
3. **[Configuration](../configuration/environment.md)** - Configure your application
4. **[Database Setup](../database/overview.md)** - Set up your database properly
5. **[Deployment](../deployment/overview.md)** - Deploy your application
## Troubleshooting
### Common Issues
**Port already in use:**
```bash
# Change the port in .env
SERVER_PORT=3031
```
**Database connection error:**
```bash
# Check if PostgreSQL is running
docker ps
# Or use SQLite instead
DATABASE_URL=sqlite//:database.db
```
**Build errors:**
```bash
# Clean build
cargo clean && cargo build
# Update dependencies
cargo update
```
**Permission denied on scripts:**
```bash
chmod +x scripts/configure-features.sh
```
### Getting Help
- **Documentation**: Check the relevant sections in this book
- **Examples**: Look at the `examples/` directory
- **Issues**: Search or create an issue on GitHub
- **Community**: Join our discussions
## What's Next?
Congratulations! You now have a working[Rustelo](/) application. Here are some recommended next steps:
- **Customize the UI**: Modify the frontend components to match your design
- **Add Business Logic**: Implement your application's core functionality
- **Set Up Database**: Configure your preferred database system
- **Add Authentication**: Enable user management if needed
- **Deploy**: Get your application ready for production
Ready to dive deeper? Continue with the [Installation](./installation.md) guide for more detailed setup instructions.