Jesús Pérex 2f0f807331 feat: add dark mode functionality and improve navigation system
- Add complete dark mode system with theme context and toggle
- Implement dark mode toggle component in navigation menu
- Add client-side routing with SSR-safe signal handling
- Fix language selector styling for better dark mode compatibility
- Add documentation system with mdBook integration
- Improve navigation menu with proper external/internal link handling
- Add comprehensive project documentation and configuration
- Enhance theme system with localStorage persistence
- Fix arena panic issues during server-side rendering
- Add proper TypeScript configuration and build optimizations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 20:53:20 +01:00

570 lines
13 KiB
Markdown

# First Run & Setup
<div align="center">
<img src="../logos/rustelo_dev-logo-h.svg" alt="RUSTELO" width="300" />
</div>
Welcome to your first[Rustelo](/)application! This guide will walk you through setting up and running your application for the first time, ensuring everything is configured correctly and working as expected.
## 🎯 What You'll Accomplish
By the end of this guide, you'll have:
-**Verified your installation** - Confirmed all tools are working
-**Started your application** - Both frontend and backend running
-**Accessed your app** - Connected via web browser
-**Tested core features** - Authentication, database, and API
-**Explored the interface** - Understand the user interface
-**Generated documentation** - Local documentation site running
## 🚀 Quick Start (30 seconds)
If you've already completed the installation, here's the fastest way to get running:
```bash
# Navigate to your project
cd your-rustelo-app
# Start everything
just dev
# Open your browser to:
# http://localhost:3030
```
## 📋 Pre-Run Checklist
Before starting your application, verify these prerequisites:
### 1. Installation Complete
```bash
# Check Rust installation
rustc --version # Should be 1.70.0 or later
cargo --version
# Check Node.js installation
node --version # Should be 18.0.0 or later
npm --version
# Check Rustelo tools
cargo leptos --version
mdbook --version
just --version
```
### 2. Project Structure
```bash
# Verify your project has the correct structure
ls -la
# Should see: client/, server/, shared/, book/, justfile, Cargo.toml, etc.
```
### 3. Environment Configuration
```bash
# Check your .env file exists
cat .env
# Should contain: DATABASE_URL, SESSION_SECRET, etc.
```
### 4. Dependencies Installed
```bash
# Install/update dependencies
cargo build
npm install
```
## 🏃‍♂️ Step-by-Step First Run
### Step 1: Verify Setup
First, let's make sure everything is properly configured:
```bash
# Run the setup verification script
just verify-setup
# This checks:
# - All required tools are installed
# - Environment variables are set
# - Database connection works
# - Dependencies are installed
# - Configuration files are valid
```
**Expected Output:**
```
✅ Rust toolchain: 1.70.0
✅ Node.js: 18.17.0
✅ Database connection: OK
✅ Environment variables: OK
✅ Dependencies: OK
✅ Configuration: Valid
🎉 Your[Rustelo](/)setup is ready!
```
### Step 2: Database Setup
Initialize your database with the required schema:
```bash
# Check database status
just db-status
# Run database migrations
just db-migrate
# Verify database setup
just db-health
```
**Expected Output:**
```
📊 Database Status:
- Type: SQLite
- File: database.db
- Size: 32 KB
- Tables: 3 (users, sessions, tasks)
- Migrations: 3 applied
✅ Database is ready!
```
### Step 3: Start the Application
Now start your[Rustelo](/)application:
```bash
# Start the development server
just dev
# Alternative: Start with verbose logging
just dev-verbose
# Alternative: Start on different port
just dev-port 3031
```
**Expected Output:**
```
🚀 Starting[Rustelo](/)Development Server...
📦 Building frontend assets...
Compiling client v0.1.0
Finished dev [unoptimized + debuginfo] target(s) in 12.3s
🔧 Starting backend server...
Compiling server v0.1.0
Finished dev [unoptimized + debuginfo] target(s) in 8.7s
🌐 Server running on: http://127.0.0.1:3030
🔄 Hot reload enabled on port: 3031
📁 Serving assets from: public/
🗄️ Database: sqlite:database.db
✨ Ready! Your app is running at http://localhost:3030
```
### Step 4: Access Your Application
Open your web browser and navigate to:
**🌐 http://localhost:3030**
You should see:
- **Welcome Page** -[Rustelo](/) landing page
- **Navigation Menu** - Links to different sections
- **Login/Register** - Authentication forms
- **Dashboard** - Main application interface
### Step 5: Test Core Features
Let's test the main features to ensure everything is working:
#### Authentication Test
```bash
# Test authentication endpoints
curl -X POST http://localhost:3030/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"email": "test@example.com",
"password": "testpassword123"
}'
```
**Expected Response:**
```json
{
"success": true,
"data": {
"user_id": 1,
"username": "testuser",
"email": "test@example.com"
},
"message": "User registered successfully"
}
```
#### Database Test
```bash
# Test database connection
just db-health
# View database tables
just db-status
```
#### API Test
```bash
# Test API health endpoint
curl http://localhost:3030/api/health
```
**Expected Response:**
```json
{
"status": "healthy",
"version": "0.1.0",
"uptime": "00:01:23",
"database": "connected"
}
```
## 🎨 Start the Documentation Server
Rustelo includes a comprehensive documentation system:
```bash
# Start documentation server (in a new terminal)
just docs-dev
# This starts mdbook server on http://localhost:3000
```
**Expected Output:**
```
📚 Starting Documentation Server...
2024-01-15 10:30:45 [INFO] (mdbook::book): Book building has started
2024-01-15 10:30:45 [INFO] (mdbook::book): Running the html backend
2024-01-15 10:30:45 [INFO] (mdbook::cmd::serve): Serving on: http://localhost:3000
2024-01-15 10:30:45 [INFO] (mdbook::cmd::serve): Press Ctrl+C to quit.
📖 Documentation available at: http://localhost:3000
```
## 🔧 Common First-Run Issues
### Issue 1: Port Already in Use
**Problem:** `Address already in use (os error 48)`
**Solution:**
```bash
# Check what's using the port
lsof -i :3030
# Kill the process or use a different port
just dev-port 3031
```
### Issue 2: Database Connection Failed
**Problem:** `Failed to connect to database`
**Solution:**
```bash
# Check database file exists
ls -la database.db
# Recreate database
just db-reset
# Run migrations
just db-migrate
```
### Issue 3: Missing Dependencies
**Problem:** `Cannot find binary cargo-leptos`
**Solution:**
```bash
# Install missing tools
cargo install cargo-leptos
cargo install sqlx-cli --features sqlite
# Verify installation
just verify-setup
```
### Issue 4: Environment Variables Missing
**Problem:** `Environment variable not found`
**Solution:**
```bash
# Check .env file exists and is correct
cat .env
# Generate new .env file
cp .env.example .env
# Edit .env with your values
# Load environment variables
source .env
```
### Issue 5: Frontend Build Errors
**Problem:** `npm ERR! or webpack compilation failed`
**Solution:**
```bash
# Clean and reinstall
rm -rf node_modules package-lock.json
npm install
# Rebuild CSS
npm run build:css
# Clear cargo cache
cargo clean
```
## 🎯 Your First Actions
Now that your application is running, here's what you should do:
### 1. Create Your First User Account
1. **Go to:** http://localhost:3030/register
2. **Fill in the form:**
- Username: `your-username`
- Email: `your-email@example.com`
- Password: `your-secure-password`
3. **Click:** "Register"
4. **Verify:** You're redirected to the dashboard
### 2. Explore the Interface
Visit these pages to understand your application:
- **Dashboard:** http://localhost:3030/dashboard - Main application view
- **Profile:** http://localhost:3030/profile - User settings
- **Tasks:** http://localhost:3030/tasks - Task management (if enabled)
- **API Docs:** http://localhost:3030/api/docs - API documentation
### 3. Test Authentication
1. **Logout:** Click the logout button
2. **Login:** Use your credentials to log back in
3. **Verify:** Session persistence works correctly
### 4. Check the Database
```bash
# View your user data
just db-query "SELECT * FROM users;"
# Check sessions
just db-query "SELECT * FROM sessions;"
```
### 5. Explore Documentation
Visit http://localhost:3000 and explore:
- **Getting Started** - This guide and more
- **API Reference** - Complete API documentation
- **Features** - Available features and how to use them
- **Development** - How to customize and extend
## 🛠️ Development Workflow
Now that everything is running, here's your daily development workflow:
### Morning Setup
```bash
# Start your development session
cd your-rustelo-app
just dev # Start app (Terminal 1)
just docs-dev # Start docs (Terminal 2)
just css-watch # Watch CSS changes (Terminal 3)
```
### Making Changes
```bash
# Frontend changes (client/)
# - Edit files in client/src/
# - Changes auto-reload in browser
# Backend changes (server/)
# - Edit files in server/src/
# - Server auto-restarts
# Database changes
just db-migration create_new_feature
# - Edit migration file
just db-migrate
```
### Testing Changes
```bash
# Run tests
just test
# Check code quality
just check
# Build for production
just build-prod
```
## 📊 Performance Monitoring
Monitor your application's performance:
### Real-time Metrics
```bash
# View system metrics
just health
# Check memory usage
just monitor-resources
# View logs
just logs
```
### Browser DevTools
1. **Open DevTools** (F12)
2. **Network Tab** - Monitor API calls
3. **Console Tab** - Check for errors
4. **Performance Tab** - Analyze load times
## 🔍 Debugging Tips
### Enable Debug Logging
```bash
# Set debug level in .env
LOG_LEVEL=debug
# Restart server
just dev
```
### Common Debug Commands
```bash
# View detailed logs
just logs-verbose
# Check server health
curl http://localhost:3030/api/health
# Test database queries
just db-query "SELECT COUNT(*) FROM users;"
# Verify configuration
just config-status
```
## 🎉 Success Checklist
Verify your first run was successful:
- [ ] **Application starts without errors**
- [ ] **Web interface loads at http://localhost:3030**
- [ ] **User registration works**
- [ ] **User login works**
- [ ] **Database operations work**
- [ ] **API endpoints respond correctly**
- [ ] **Documentation site loads at http://localhost:3000**
- [ ] **Hot reload works for frontend changes**
- [ ] **Backend restarts on changes**
- [ ] **No errors in console logs**
## 🚀 Next Steps
Congratulations! Your Rustelo application is now running. Here's what to do next:
### Immediate Next Steps (Today)
1. **[Build Your First App](./first-app.md)** - Create a complete application
2. **[Configure Features](./configuration.md)** - Enable additional features
3. **[Explore Components](../developers/components/README.md)** - Learn about available components
### Short-term Goals (This Week)
1. **Customize Styling** - Update colors, fonts, and layout
2. **Add Content** - Create pages and content for your app
3. **Configure Production** - Set up production deployment
4. **Add Features** - Enable email, content management, etc.
### Long-term Goals (This Month)
1. **Deploy to Production** - Launch your app
2. **Set up Monitoring** - Track performance and errors
3. **Add Custom Features** - Build app-specific functionality
4. **Scale Your App** - Optimize for growth
## 🆘 Getting Help
If you encounter issues:
### Quick Fixes
```bash
# Reset everything
just clean-all
just setup
# Verify setup
just verify-setup
# Check logs
just logs
```
### Documentation Resources
- **[Troubleshooting Guide](../troubleshooting/common.md)** - Common issues and solutions
- **[Configuration Guide](../configuration/README.md)** - Advanced configuration options
### Community Support
- **GitHub Issues** - Report bugs and request features
- **Discord Server** - Real-time help and discussion
- **Stack Overflow** - Tag questions with `rustelo`
## 💡 Pro Tips
### Development Efficiency
- **Use `just help`** - See all available commands
- **Keep docs running** - Reference documentation while coding
- **Use hot reload** - Changes appear instantly
- **Check logs regularly** - Catch issues early
### Best Practices
- **Commit often** - Small, frequent commits
- **Test thoroughly** - Use `just test` before commits
- **Monitor performance** - Use `just health` regularly
- **Document changes** - Update documentation as you build
### Security
- **Change default secrets** - Use secure SESSION_SECRET and JWT_SECRET
- **Use HTTPS in production** - Enable TLS feature
- **Keep dependencies updated** - Regular `just update`
- **Monitor security** - Use `just security-audit`
## 🎊 You're Ready!
Your[Rustelo](/) application is now running successfully! You have:
-**A working web application** with authentication
-**A development environment** with hot reload
-**A documentation system** for reference
-**Database connectivity** for data persistence
-**API endpoints** for frontend-backend communication
-**All tools configured** for productive development
**Time to start building something amazing!** 🚀
---
**Next:** Continue with [Building Your First App](./first-app.md) to create a complete application, or explore [Configuration](./configuration.md) to customize your setup.
Happy coding! 🦀✨