--- title: "Getting Started Guide" slug: "getting-started" name: "getting-started" author: "Documentation Team" content_type: "documentation" content_format: "markdown" container: "docs-container" state: "published" require_login: false date_init: "2024-01-10T09:00:00Z" tags: ["documentation", "getting-started", "tutorial", "setup"] category: "documentation" excerpt: "Learn how to get started with our platform. Complete setup guide, installation instructions, and first steps to get you up and running quickly." seo_title: "Getting Started - Complete Setup Guide" seo_description: "Complete getting started guide with installation instructions, setup steps, and examples to help you begin using our platform effectively." allow_comments: false sort_order: 1 metadata: reading_time: "5" difficulty: "beginner" last_updated: "2024-01-10" section: "basics" --- # Getting Started Guide Welcome to our platform! This guide will help you get up and running quickly with all the essential features and functionality. ## Prerequisites Before you begin, make sure you have the following installed on your system: - **Rust** (version 1.75 or later) - **Node.js** (version 18 or later) - **PostgreSQL** (version 14 or later) - **Git** for version control ### Installing Rust If you don't have Rust installed, visit [rustup.rs](https://rustup.rs/) and follow the installation instructions for your operating system. ```bash # Verify your Rust installation rustc --version cargo --version ``` ### Installing Node.js Download and install Node.js from [nodejs.org](https://nodejs.org/) or use a version manager like `nvm`: ```bash # Using nvm (recommended) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash nvm install 18 nvm use 18 ``` ## Installation ### 1. Clone the Repository ```bash git clone https://github.com/your-org/your-project.git cd your-project ``` ### 2. Environment Setup Copy the example environment file and configure your settings: ```bash cp .env.example .env ``` Edit the `.env` file with your configuration: ```env # Database Configuration DATABASE_URL=postgres://username:password@localhost/database_name # Server Configuration SERVER_HOST=127.0.0.1 SERVER_PORT=3000 SERVER_PROTOCOL=http # JWT Configuration JWT_SECRET=your-super-secret-jwt-key JWT_EXPIRATION=24h # OAuth Configuration (optional) GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret GITHUB_CLIENT_ID=your-github-client-id GITHUB_CLIENT_SECRET=your-github-client-secret ``` ### 3. Database Setup Create your PostgreSQL database and run migrations: ```bash # Create database (adjust for your setup) createdb your_database_name # Run migrations cargo install sqlx-cli sqlx migrate run ``` ### 4. Install Dependencies ```bash # Install Rust dependencies cargo build # Install Node.js dependencies (if using frontend build tools) npm install ``` ## Quick Start ### 1. Start the Development Server ```bash cargo run ``` The server will start on `http://localhost:3000` by default. ### 2. Access the Application Open your web browser and navigate to: - **Main Application**: `http://localhost:3000` - **API Documentation**: `http://localhost:3000/api/docs` (if enabled) - **Health Check**: `http://localhost:3000/health` ### 3. Create Your First User You can create a user account through the registration endpoint: ```bash curl -X POST http://localhost:3000/api/auth/register \ -H "Content-Type: application/json" \ -d '{ "username": "admin", "email": "admin@example.com", "password": "SecurePassword123!", "display_name": "Administrator" }' ``` ## Basic Usage ### Authentication Our platform supports multiple authentication methods: #### 1. Username/Password Authentication ```bash # Login with username and password curl -X POST http://localhost:3000/api/auth/login \ -H "Content-Type: application/json" \ -d '{ "username": "admin", "password": "SecurePassword123!" }' ``` #### 2. OAuth Integration We support OAuth with popular providers: - Google OAuth - GitHub OAuth - Discord OAuth Visit `/api/auth/oauth/{provider}/authorize` to initiate OAuth flow. ### Content Management #### Creating Content ```bash # Create a new blog post curl -X POST http://localhost:3000/api/content/contents \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -d '{ "slug": "my-first-post", "title": "My First Blog Post", "name": "first-post", "content_type": "blog", "content": "# Welcome\n\nThis is my first blog post!", "container": "blog-container", "state": "published" }' ``` #### Retrieving Content ```bash # Get content by slug curl http://localhost:3000/api/content/contents/slug/my-first-post # Get rendered HTML curl http://localhost:3000/api/content/contents/slug/my-first-post/render # List all published content curl http://localhost:3000/api/content/contents/published ``` ## Configuration Options ### Server Configuration The server can be configured through environment variables or a configuration file: ```toml # config/server.toml [server] host = "127.0.0.1" port = 3000 protocol = "http" [database] url = "postgres://localhost/myapp" max_connections = 10 [security] jwt_secret = "your-secret-key" cors_origins = ["http://localhost:3000"] rate_limit_requests = 1000 rate_limit_window = 3600 ``` ### Content Configuration Configure content sources and behavior: ```toml # config/content.toml [content] source = "database" # or "files" or "both" file_path = "./content" enable_cache = true default_container = "page-container" [rendering] enable_syntax_highlighting = true enable_tables = true enable_footnotes = true theme = "base16-ocean.dark" ``` ## Development Workflow ### 1. Making Changes ```bash # Create a new feature branch git checkout -b feature/my-new-feature # Make your changes # ... edit files ... # Run tests cargo test # Check formatting cargo fmt --check # Run lints cargo clippy ``` ### 2. Database Migrations When you need to modify the database schema: ```bash # Create a new migration sqlx migrate add create_my_table # Edit the generated migration file # migrations/YYYYMMDDHHMMSS_create_my_table.sql # Run the migration sqlx migrate run ``` ### 3. Running Tests ```bash # Run all tests cargo test # Run tests with output cargo test -- --nocapture # Run specific test cargo test test_name # Run integration tests cargo test --test integration_tests ``` ## Troubleshooting ### Common Issues #### Database Connection Issues ```bash # Check if PostgreSQL is running pg_isready # Check database exists psql -l | grep your_database_name # Test connection psql $DATABASE_URL -c "SELECT 1;" ``` #### Port Already in Use ```bash # Find process using port 3000 lsof -i :3000 # Kill the process (replace PID) kill -9 PID ``` #### Permission Issues ```bash # Fix file permissions chmod +x target/debug/your-app chmod -R 755 content/ ``` ### Log Analysis Enable detailed logging for debugging: ```bash # Set log level export RUST_LOG=debug # Run with logging cargo run ``` ### Getting Help If you encounter issues: 1. **Check the logs** for error messages 2. **Review the documentation** for your specific use case 3. **Search existing issues** on GitHub 4. **Create a new issue** with detailed information 5. **Join our community** on Discord for real-time help ## Next Steps Now that you have the basics working, here are some recommended next steps: 1. **[User Management](user-management.md)** - Learn about user roles and permissions 2. **[Content Creation](content-creation.md)** - Deep dive into content management 3. **[API Reference](api-reference.md)** - Explore all available endpoints 4. **[Deployment Guide](deployment.md)** - Deploy to production 5. **[Security Best Practices](security.md)** - Secure your application ## Additional Resources - **[API Documentation](api-reference.md)** - Complete API reference - **[Configuration Guide](configuration.md)** - Detailed configuration options - **[Performance Tuning](performance.md)** - Optimize your application - **[Contributing Guide](contributing.md)** - How to contribute to the project --- *This guide gets you started quickly. For more detailed information, explore the other documentation sections or check out our [FAQ](faq.md).*