PutPlace

Getting Started

  • Installation Guide
    • Prerequisites
      • System Requirements
      • Network Requirements
    • Installing MongoDB
      • Ubuntu/Debian
      • macOS (Homebrew)
      • Docker
    • Installing PutPlace
      • Method 1: From Source (Development)
      • Method 2: From PyPI (Production)
      • Method 3: Using Docker
    • Initial Configuration
      • 1. Create Configuration File
      • 2. Create Storage Directory
      • 3. Configure Initial Admin User (Optional)
      • 4. Initialize Database
      • 5. Create First API Key
    • Installing the Client
      • System-Wide Installation
      • Client Configuration
    • Verification
      • Verify Server Installation
      • Verify Client Installation
      • Verify Authentication
    • Platform-Specific Installation
      • Linux (systemd)
      • macOS (launchd)
      • Docker Compose
    • Post-Installation Steps
      • 1. Create Additional API Keys
      • 2. Configure Firewall
      • 3. Set Up TLS/HTTPS (Production)
      • 4. Configure Backup
    • Upgrading
      • Upgrade from Source
      • Upgrade from PyPI
      • Database Migrations
    • Uninstallation
      • Remove PutPlace
      • Remove MongoDB Data
      • Remove Storage Files
    • Troubleshooting Installation
      • MongoDB Connection Failed
      • Permission Denied on Storage Path
      • Module Not Found
    • Next Steps
  • Quick Start Guide
    • Prerequisites
    • Step 1: Install PutPlace (2 minutes)
    • Step 2: Start the Server (1 minute)
    • Step 3: Get Admin Credentials (1 minute)
    • Step 4: Use the Client (1 minute)
    • Step 5: Verify It Worked
    • 🎉 Success!
    • What’s Next?
      • Explore the API
      • Configure Storage Backend
      • Scan More Directories
      • Create More Users
    • Common First-Time Issues
      • “Database not connected”
      • “Permission denied: /var/putplace/files”
      • “Login failed: 401”
    • Quick Reference Commands
    • Example Workflow
    • Architecture at a Glance
    • Development Mode
    • Production Deployment (Preview)
    • Next Steps
    • Getting Help
  • PutPlace Client Quick Start
    • Prerequisites
    • Getting Account Credentials
      • Option 1: Ask Server Administrator
      • Option 2: Use Admin Account (if you have server access)
      • Option 3: Register New User (if registration is enabled)
    • Using the Client
      • Method 1: Command Line (Quick Testing)
      • Method 2: Environment Variable (Recommended for Scripts)
      • Method 3: Config File (Recommended for Production)
    • Configuration Priority
    • Complete Examples
      • Example 1: Scan Local Directory
      • Example 2: Scan with Exclusions
      • Example 3: Scan Remote Server
      • Example 4: Dry Run (Test Without Sending)
      • Example 5: Using Config File
    • Security Best Practices
      • ✅ DO:
      • ❌ DON’T:
    • Troubleshooting
      • “Both username and password are required”
      • “Login failed: 401”
      • “Config file not found”
    • Common Workflows
      • Development Setup
      • Production Server Setup
      • Multi-Environment Setup
    • Getting Help
    • Next Steps

Configuration

  • Configuration Reference
    • Server Configuration
      • Configuration Methods
      • Environment Variables
        • Core Settings
        • MongoDB Configuration
        • Storage Configuration
        • CORS Configuration
      • ppserver.toml Configuration (Recommended)
        • Quick Start
        • Configuration File Locations
        • Complete ppserver.toml Example
        • Development vs Production
        • Logging Configuration
      • .env File (No Longer Supported)
      • Storage Backend Selection
        • Local Filesystem Storage
        • AWS S3 Storage
      • AWS Credentials Configuration
    • Client Configuration
      • Configuration Methods
      • Command-Line Arguments
      • Environment Variables
      • Configuration File
      • Exclude Patterns
      • Client Examples
        • Example 1: Quick Test with API Key
        • Example 2: Production Scan with Environment Variable
        • Example 3: Using Config File
        • Example 4: Multi-Environment Setup
    • Production Configuration
      • Using Gunicorn
      • systemd Service Configuration
      • HTTPS/TLS Configuration
      • Environment-Specific Configurations
        • Development
        • Staging
        • Production
    • Configuration Validation
    • Configuration Best Practices
    • Troubleshooting Configuration
      • Check Current Configuration
      • Common Configuration Issues
    • Next Steps
  • Authentication Guide
    • Table of Contents
    • Overview
    • Initial Setup
      • Automatic Admin Creation
        • Option 1: Environment Variables (Recommended for Production)
        • Option 2: Random Password Generation (Development)
      • After Initial Setup
    • Quick Start (Recommended: Email/Password)
      • 1. Get Admin Credentials
      • 2. Use Credentials with Client
      • 3. Test Login with curl
    • Admin Dashboard
      • Access Requirements
      • Dashboard URL
      • Dashboard Features
      • Accessing via curl
      • Error Responses
    • Advanced: API Key Authentication
      • Creating Your First API Key
      • Method 1: Bootstrap Script (Recommended)
      • Method 2: Manual MongoDB Insertion (Advanced)
    • Using API Keys
      • With curl
      • With httpx/requests (Python)
      • With JavaScript/Node.js
    • API Key Management
      • Create New API Key
      • List API Keys
      • Revoke API Key
      • Delete API Key
    • Security Best Practices
      • ✅ DO:
      • ❌ DON’T:
    • Troubleshooting
      • “API key required” Error
      • “Invalid or inactive API key” Error
      • Bootstrap Script Fails
    • API Key Lifecycle
    • Example Workflows
      • Single Server Setup (Email/Password - Recommended)
      • Single Server Setup (API Key - Advanced)
      • Multi-Server Setup
      • Key Rotation
    • Next Steps
  • AWS Credentials Setup - Quick Start Guide
    • Quick Start Options
      • Option 1: AWS Credentials File (Recommended for Development)
      • Option 2: IAM Role (Recommended for Production on AWS)
      • Option 3: Environment Variables (Quick Testing)
    • Verification
      • Quick Test: Standalone S3/SES Configuration Tests (v0.5.2+)
      • Full Integration Test
    • Troubleshooting
      • “Unable to locate credentials”
      • “Access Denied” errors
      • “NoSuchBucket” error
    • Complete Configuration Examples
      • Example 1: Development Setup
      • Example 2: Production on AWS EC2
      • Example 3: Multiple Environments with Profiles
    • Security Best Practices
    • Next Steps
    • Quick Reference
  • Storage Backends
    • Overview
      • Available Backends
      • Storage Architecture
    • Local Filesystem Storage
      • Overview
      • Configuration
      • Directory Structure
      • Setup
        • 1. Create Storage Directory
        • 2. Verify Permissions
        • 3. Configure PutPlace
        • 4. Start Server
      • Disk Space Management
        • Check Disk Usage
        • Cleanup Old Files
        • Monitor Disk Space
      • Performance Considerations
    • AWS S3 Storage
      • Overview
      • Configuration
      • S3 Key Structure
      • Setup
        • 1. Create S3 Bucket
        • 2. Configure IAM Policy
        • 3. Configure Credentials
        • 4. Test Connection
        • 5. Start Server
      • Storage Classes
        • STANDARD (Default)
        • STANDARD_IA (Infrequent Access)
        • INTELLIGENT_TIERING
        • GLACIER
      • Lifecycle Policies
      • Cost Estimation
      • Performance Considerations
      • Monitoring
        • CloudWatch Metrics
        • Cost Monitoring
    • Switching Storage Backends
      • From Local to S3
        • 1. Set up S3 (see above)
        • 2. Migrate existing files
        • 3. Update configuration
        • 4. Restart server
        • 5. Verify
        • 6. Cleanup (optional)
      • From S3 to Local
    • Hybrid Storage
    • Backup and Recovery
      • Local Filesystem Backup
      • S3 Backup
    • Troubleshooting
      • Local Storage Issues
      • S3 Storage Issues
    • Next Steps
  • Google OAuth Setup Guide
    • Overview
    • Prerequisites
    • Step 1: Create Google OAuth Credentials
      • 1.1 Create a Google Cloud Project
      • 1.2 Enable Google Sign-In API
      • 1.3 Configure OAuth Consent Screen
      • 1.4 Create OAuth 2.0 Credentials
    • Step 2: Configure PutPlace Server
      • 2.1 Add OAuth Configuration to ppserver.toml
      • 2.2 Alternative: Environment Variable
      • 2.3 Restart PutPlace Server
    • Step 3: Test Google Sign-In
      • 3.1 Launch Electron GUI
      • 3.2 Sign In with Google
      • 3.3 Verify Login
    • Troubleshooting
      • Google Button Not Appearing
      • “Google OAuth not configured” Error
      • “Invalid Google ID token” Error
      • “Email not verified” Error
    • Security Considerations
      • What Gets Stored
      • Token Flow
      • Client Secret Not Needed
    • Production Deployment
      • Update Authorized Origins
      • HTTPS Required
    • Additional Resources
    • Support
    • Example: Testing with cURL
  • Google OAuth Setup for PutPlace
    • Prerequisites
    • Step 1: Create Google Cloud Project
    • Step 2: Enable Google Sign-In API
    • Step 3: Create OAuth 2.0 Credentials
      • Configure OAuth Consent Screen
      • Create OAuth Client ID
    • Step 4: Configure PutPlace Server
      • Option A: Using ppserver.toml (Recommended)
      • Option B: Using Environment Variable
    • Step 5: Verify Configuration
    • Step 6: Test Google Sign-In
      • Using Electron Client
      • Using Web Browser
    • Troubleshooting
      • Button Not Appearing
      • “Invalid ID Token” Error
      • “Popup Blocked” Error
      • “OAuth Not Configured” Server Error
    • Security Notes
    • Testing Guide
    • API Endpoints
      • Get OAuth Configuration
      • Google Sign-In Authentication
    • Additional Resources
    • Need Help?

User Guide

  • Client Guide
    • Overview
    • Installation
    • Quick Start
      • Create User Account
      • First Scan
    • Usage
      • Basic Syntax
      • Options
        • Required Options
        • Optional Options
    • Configuration
      • Configuration Priority
      • Configuration File
    • Authentication
      • Three Methods
        • 1. Command Line (Quick Testing)
        • 2. Environment Variable (Recommended for Scripts)
        • 3. Config File (Recommended for Production)
      • Security Best Practices
    • File Exclusion
      • Exclude Patterns
      • Common Exclude Patterns
      • Config File Exclusions
    • Examples
      • Example 1: Simple Scan
      • Example 2: Dry Run
      • Example 3: Remote Server
      • Example 4: Custom Hostname
      • Example 5: Multiple Exclusions
      • Example 6: Verbose Output
    • Workflows
      • Development Workflow
      • Production Workflow
      • Multi-Environment Workflow
    • Automated Scanning
      • Cron Jobs
        • Daily Scan at 2 AM
        • Hourly Scan
        • Weekly Scan (Sundays at 3 AM)
        • With Logging
      • systemd Timer
    • Output and Progress
      • Console Output
      • Exit Codes
    • Troubleshooting
      • Authentication Issues
      • Connection Issues
      • File Access Issues
      • Large Directory Scans
    • Advanced Usage
      • Custom Scripts
      • Monitoring Integration
      • Parallel Scanning
    • Performance Tips
    • Graceful Interrupt Handling
      • How It Works
      • Example Usage
      • Use Cases
      • Exit Codes
      • Best Practices
    • Next Steps
  • PutPlace Assist
    • Overview
    • Offline Operation
      • What Works Without pp_server
      • What Requires pp_server
      • How Offline Mode Works
      • Example: Starting Without a Server
    • Architecture
    • Installation
    • Quick Start
      • Start the Daemon
      • Access the Web UI
      • Register a Path
      • Trigger Uploads
    • CLI Commands
      • ppassist
        • Commands
        • Start Options
      • pp_client
        • Options
        • Examples
    • Web UI
      • Features
        • Dashboard
        • Watched Paths Panel
        • Live Activity Feed
        • Upload Progress
    • API Reference
      • Status Endpoints
        • GET /
        • GET /health
        • GET /status
      • Path Endpoints
        • GET /paths
        • POST /paths
        • GET /paths/{id}
        • DELETE /paths/{id}
        • POST /paths/{id}/scan
      • Exclude Endpoints
        • GET /excludes
        • POST /excludes
        • DELETE /excludes/{id}
      • File Endpoints
        • GET /files
        • GET /files/stats
        • GET /files/{id}
        • DELETE /files/{id}
      • Server Endpoints
        • GET /servers
        • POST /servers
        • DELETE /servers/{id}
        • POST /servers/{id}/default
      • Upload Endpoints
        • POST /uploads
        • GET /uploads/status
        • GET /uploads/queue
      • Activity Endpoints
        • GET /activity
        • GET /activity/stream
        • WS /ws/activity
      • Scanning Endpoints
        • POST /scan
    • Configuration
      • Environment Variables
      • Config File
      • Data Locations
    • Use Cases
      • Automated Backup Monitoring
      • Development Workflow
      • Server Fleet Management
    • Troubleshooting
      • Daemon Won’t Start
      • Connection Refused
      • Files Not Being Detected
      • Uploads Failing
    • Development
      • Running Tests
      • Running Linter
      • Development Server
  • API Reference
    • Base URL
    • Authentication
      • Method 1: JWT Bearer Token (Recommended)
      • Method 2: API Key Header (Advanced)
    • Interactive Documentation
    • Endpoints
      • Health Endpoints
        • GET /
        • GET /health
      • File Endpoints
        • POST /put_file
        • POST /upload_file/{sha256}
        • GET /get_file/{sha256}
        • GET /api/clones/{sha256}
        • GET /api/my_files
      • Authentication Endpoints
        • POST /api_keys
        • GET /api_keys
        • PUT /api_keys/{key_id}/revoke
        • DELETE /api_keys/{key_id}
    • Data Models
      • FileMetadata
      • FileMetadataResponse
      • FileMetadataUploadResponse
      • APIKeyCreate
      • APIKeyResponse
      • APIKeyInfo
    • Error Responses
      • Common Error Codes
      • Error Examples
    • Rate Limiting
    • Best Practices
      • 1. Always Check upload_required
      • 2. Verify SHA256 Before Upload
      • 3. Handle Authentication Errors
      • 4. Use Separate API Keys
      • 5. Monitor last_used_at
    • Python Client Example
    • Next Steps
  • File Upload Workflow - Content Deduplication
    • Overview
    • How It Works
      • Client Workflow
      • Server Logic
    • API Examples
      • Example 1: First Upload (Unique File)
      • Example 2: Duplicate File (Already Exists)
    • Database Schema
      • FileMetadata Document
    • Client Implementation
    • Benefits
      • 1. Bandwidth Savings
      • 2. Storage Efficiency
      • 3. Fast Operations
      • 4. Integrity Verification
    • Security Considerations
    • Storage Options
      • Option 1: Local Filesystem
      • Option 2: S3/Object Storage
      • Option 3: Content-Addressable Storage (CAS)
    • Monitoring & Metrics
    • API Endpoints
    • Future Enhancements

Deployment

  • Deployment Guide
    • Overview
    • Prerequisites
    • Quick Deploy Options
      • Digital Ocean Droplets (Recommended for Quick Setup)
      • Other Deployment Options
    • Production Architecture
      • Simple Deployment
      • High Availability Deployment
    • Method 1: systemd Service (Recommended for VPS/Bare Metal)
      • Step 1: Create Service User
      • Step 2: Install PutPlace
      • Step 3: Create Configuration
      • Step 4: Create systemd Service
      • Step 5: Create Log Directory
      • Step 6: Enable and Start Service
      • Step 7: Test Service
    • Method 2: Docker
      • Dockerfile
      • Build and Run
    • Method 3: Docker Compose
      • docker-compose.yml
      • Start Services
    • HTTPS Configuration
      • Option 1: Let’s Encrypt with Certbot
        • Install Certbot
        • Obtain Certificate
        • Auto-renewal
      • Option 2: Manual nginx Configuration
        • nginx Configuration
        • Enable Site
    • Monitoring and Logging
      • Application Logs
      • System Monitoring
        • Prometheus + Grafana
        • Health Check Monitoring
    • Backup Strategy
      • MongoDB Backup
      • Storage Backup
    • High Availability
      • Load Balancing
      • MongoDB Replica Set
    • Security Hardening
      • Firewall Configuration
      • Rate Limiting
      • Fail2ban
    • Troubleshooting Production Issues
      • Service Won’t Start
      • High Memory Usage
      • Slow Response Times
    • Next Steps
  • Digital Ocean Deployment Guide
    • Overview
      • Cost Comparison
    • Quick Start
      • Prerequisites
      • Installation
      • Simplified Deployment (Recommended)
      • Manual Deployment (Full Control)
    • Deployment Options
      • Deploy to Existing Droplet
      • Deploy with Custom Domain
      • Custom Droplet Size and Region
      • Deploy with AWS S3 Storage
      • Deploy with MongoDB Atlas and S3 Storage
    • Quick Updates
    • Management Commands
      • SSH Access
      • View Logs
      • Service Management
    • Post-Deployment Configuration
      • 1. Create Admin User
      • 2. Enable SSL/HTTPS (Recommended)
      • 3. Configure Firewall (UFW)
      • 4. Configure Environment Variables
    • Architecture
      • Server Layout
      • Services
      • Network Flow
    • Using MongoDB Atlas Instead
      • 1. Create Atlas Cluster
      • 2. Update Configuration
    • Using AWS S3 for File Storage
      • Prerequisites
      • 1. Generate AWS Credentials (One-Time Setup)
      • 2. Deploy with S3 Storage and AWS Credentials
      • 3. Verify S3 Configuration
      • 4. Alternative: Manual AWS Credentials Setup
      • 5. Environment-Specific Deployments
      • S3 Storage Benefits
      • S3 Cost Estimation
      • Troubleshooting S3 Storage
    • Monitoring and Backups
      • Health Checks
      • MongoDB Backups
      • Automated Backups
      • Digital Ocean Backups
    • Scaling
      • Vertical Scaling (Resize Droplet)
      • Horizontal Scaling (Multiple Droplets + Load Balancer)
    • Troubleshooting
      • Application Won’t Start
      • MongoDB Connection Issues
      • Nginx Issues
      • Out of Memory
      • SSL Certificate Issues
    • Security Best Practices
      • 1. Change SSH Port (Optional)
      • 2. Disable Root SSH Login
      • 3. Set Up Fail2Ban
      • 4. Regular Updates
    • Cleanup and Removal
      • Remove Droplet
      • Remove from Digital Ocean Dashboard
    • Advanced Configuration
      • Custom Systemd Service Settings
      • Nginx Performance Tuning
      • Using Postgres Instead of MongoDB
    • Cost Optimization
      • Resize Droplet Based on Usage
      • Use Monitoring
      • Snapshots vs Backups
    • Support
    • Comparison with Other Deployment Methods
  • AWS App Runner Deployment Guide
    • Prerequisites
    • Architecture
    • Deployment Methods
      • Method 1: Deploy via AWS Console (Recommended)
        • Step 1: Prepare MongoDB Connection
        • Step 2: Deploy to App Runner
        • Step 3: Test the Deployment
      • Method 2: Deploy via AWS CLI
      • Method 3: Deploy with Docker (Alternative)
    • Configuration Details
      • apprunner.yaml Structure
      • Environment Variables
      • Using AWS Secrets Manager (Recommended for Production)
    • Monitoring and Logs
      • View Logs
      • CloudWatch Metrics
      • Custom Application Metrics
    • Troubleshooting
      • Common Issues
      • Debug Tips
    • Costs
    • Scaling
      • Automatic Scaling
      • Manual Scaling
    • Security Best Practices
    • Custom Domain
    • CI/CD Integration
    • Additional Resources
    • Support
  • AWS App Runner Quick Start Guide
    • Overview
    • Prerequisites
    • Step 1: Configure Secrets
    • Step 2: Deploy to App Runner
    • Step 3: Grant IAM Access to Secrets
    • Step 4: Trigger Deployment
    • Step 5: Access Your API
    • Common Tasks
      • Update MongoDB Connection
      • Enable Auto-Deployment
      • View Logs
      • Scale the Service
      • Delete the Service
      • Clean Up Secrets
    • Deployment Workflow
      • Manual Deployment (Default - Recommended)
      • Automatic Deployment (Optional)
    • Monitoring
      • Check Service Status
      • View Metrics
    • Troubleshooting
      • Deployment Fails
      • Application Fails to Start
      • Health Check Fails
    • Cost Estimation
    • Security Best Practices
    • Custom Domain Configuration
      • Step 1: Configure Custom Domain
      • Step 2: Create DNS Records
      • Step 3: Wait for Certificate Validation
      • Step 4: Access Your Custom Domain
      • Troubleshooting Custom Domains
    • Next Steps
    • Support
    • Invoke Tasks Reference
  • Static Website Setup for putplace.org
    • Architecture
    • Infrastructure Components
      • 1. S3 Bucket
      • 2. CloudFront Distribution
      • 3. SSL/TLS Certificate
      • 4. Route 53 DNS
    • Setup Process
      • Initial Setup (Already Completed)
      • Manual Steps if Needed
    • Deployment
      • Automatic Deployment (Recommended)
      • Manual Deployment
      • Deploy from Different Directory
    • GitHub Actions Workflow
    • Website Content
      • File Structure
      • Adding New Pages
      • Local Testing
    • Monitoring and Maintenance
      • Check CloudFront Status
      • View Access Logs
      • Cache Invalidation
      • View Metrics
    • DNS Configuration
      • Current DNS Records
      • Testing DNS Propagation
    • Costs
    • Troubleshooting
      • Website Not Loading
      • Certificate Issues
      • 404 Errors
      • Cache Not Invalidating
    • Security Best Practices
    • Cleanup
    • Support and Documentation
    • invoke Tasks Reference

Operations

  • User Management
    • Overview
    • Installation
    • Quick Reference
    • Commands
      • List Users
      • List Pending Users
      • Add a New User
      • Approve Pending Users
      • Delete a User
      • Reset Password
      • Manage Admin Privileges
    • Global Options
    • User Lifecycle
    • Database Collections
      • users Collection
      • pending_users Collection
    • Scripting Examples
      • Backup user list
      • Check if user exists
      • Bulk user creation
    • Troubleshooting
      • Cannot connect to MongoDB
      • User already exists
      • Password too short
    • See Also
  • Security Guide - AWS Credentials and Storage
    • Table of Contents
    • Overview
    • Credential Methods (Ranked by Security)
      • ⭐⭐⭐⭐⭐ 1. IAM Roles (BEST - Production Recommended)
      • ⭐⭐⭐⭐ 2. AWS Credentials File with Named Profiles
      • ⭐⭐⭐⭐ 3. Environment Variables (via Secure Secret Management)
      • ⭐⭐⭐ 4. Local Configuration File (.env)
      • ⭐⭐ 5. Environment Variables (Direct)
      • ⭐ 6. Hardcoded Credentials (NEVER USE IN PRODUCTION)
    • Configuration Examples
      • Development (Local)
      • Production (AWS EC2/ECS)
      • Production (On-Premises Server)
      • Docker Container
    • Best Practices
      • ✅ DO:
      • ❌ DON’T:
    • IAM Policy Examples
      • Minimal S3 Policy (Least Privilege)
      • IAM Role for EC2 Instance
    • Credential Rotation
      • Automated Rotation with AWS Secrets Manager
    • Troubleshooting
      • Check Which Credentials Are Being Used
      • Common Issues
    • Security Checklist
    • Additional Resources
  • Troubleshooting Guide
    • Quick Diagnostics
      • Health Check
      • Check Logs
      • Test API Key
    • Server Issues
      • MongoDB Connection Failures
        • Problem: Cannot connect to MongoDB
        • Problem: Authentication failed
        • Problem: Connection timeout
      • Storage Backend Issues
        • Problem: Local storage permission denied
        • Problem: Disk full
        • Problem: S3 access denied
        • Problem: S3 connection timeout
      • Service Won’t Start
        • Problem: systemd service fails to start
        • Problem: Port already in use
        • Problem: Module not found
    • Client Issues
      • API Key Problems
        • Problem: No API key provided
        • Problem: 401 Unauthorized
      • Connection Issues
        • Problem: Connection refused
        • Problem: Timeout
      • File Upload Issues
        • Problem: SHA256 mismatch
        • Problem: File too large
    • Performance Issues
      • Slow Uploads
      • High Memory Usage
      • Database Performance
    • Debugging Tips
      • Enable Debug Logging
      • Test API Endpoints
      • Check MongoDB Directly
    • Getting Help
    • Common Error Messages
      • “Database not connected”
      • “Storage backend not initialized”
      • “Invalid API key”
      • “File with SHA256 XXX not found”
      • “Failed to store file content”

Development

  • Development Guide
    • Getting Started
      • Prerequisites
      • Clone Repository
      • Set Up Development Environment
        • Using uv (Recommended)
        • Using pip
      • Start MongoDB
      • Create Configuration
      • Run Server
      • Create First API Key
      • Test Client
    • Project Structure
    • Running Tests
      • Run All Tests
      • Parallel Test Execution
      • Run Specific Tests
      • Test Coverage
      • Writing Tests
    • Code Quality
      • Linting and Formatting
      • Type Checking
      • Pre-commit Hooks
    • Development Workflow
      • 1. Create Feature Branch
      • 2. Make Changes
      • 3. Commit Changes
      • 4. Run Tests
      • 5. Push and Create PR
    • Adding New Features
      • Adding New API Endpoint
      • Adding New Storage Backend
    • Debugging
      • Debug Server
      • Debug Tests
      • VS Code Debug Configuration
    • Documentation
      • Building Documentation
      • Writing Documentation
      • API Documentation
    • Performance Testing
      • Load Testing with Locust
      • Profiling
    • Release Process
      • Version Numbering
      • Creating a Release
    • Contributing Guidelines
      • Pull Request Checklist
      • Code Review Process
      • Reporting Bugs
      • Suggesting Features
    • Resources
    • Getting Help
  • Architecture
    • System Overview
      • High-Level Architecture
    • Core Components
      • 1. FastAPI Application (main.py)
      • 2. Data Models (models.py)
      • 3. Database Layer (database.py)
      • 4. Authentication (auth.py)
      • 5. Storage Backends (storage.py)
        • LocalStorage
        • S3Storage
      • 6. Configuration (config.py)
      • 7. Client (ppclient.py)
    • Data Flow
      • File Upload Workflow
    • Design Decisions
      • 1. Content-Addressable Storage (CAS)
      • 2. Two-Phase Upload Protocol
      • 3. Asynchronous Architecture
      • 4. Abstract Storage Backend
      • 5. API Key Authentication
      • 6. MongoDB for Metadata
      • 7. Pydantic for Validation
    • Scalability
      • Horizontal Scaling
      • Vertical Scaling
      • Performance Optimizations
    • Security Architecture
      • Authentication
      • Data Protection
    • Testing Architecture
      • Test Pyramid
      • Test Categories
      • Test Coverage
    • Future Enhancements
      • Planned Features
      • Architectural Improvements
    • References
  • Changelog
    • [0.8.9] - 2025-12-06
      • Fixed
        • Electron Client Stability
      • Added
        • Electron Client Testing
      • Changed
      • Refactored
    • [0.5.1] - 2025-01-06
      • Fixed
      • Changed
    • [0.5.0] - 2025-11-05
      • Added
        • Electron Desktop GUI
      • Changed
      • Technical
    • [0.4.2] - 2025-10-30
      • Changed
    • [0.4.1] - 2025-10-30
      • Fixed
      • Changed
    • [0.4.0] - 2025-01-17
      • Added
        • Web Interface Enhancements
        • Epoch File Management
        • Visual Improvements
        • Client Improvements
      • Changed
      • Technical
    • [0.3.0] - Previous Release
      • Features
PutPlace
  • Search


© Copyright 2025, Joe Drumgoole.

Built with Sphinx using a theme provided by Read the Docs.