Files
simplefileupload-server/PROJECT.md
2025-04-16 22:54:53 -04:00

4.2 KiB

Simple File Upload Server Project

Project Overview

The Simple File Upload Server is a Flask-based application designed for secure, temporary file sharing and mobile app log uploads. It follows a clean MVC architecture and implements modern web standards for both API and user interface interactions.

Project Rules and Guidelines

Code Organization

  1. MVC Pattern

    • Models: Place all data models in src/models/
    • Views: Store templates in src/templates/
    • Controllers: Keep business logic in src/controllers/
  2. File Structure

    • Source code belongs in src/
    • Configuration files in root directory
    • Temporary files in tmp/uploads/
    • Templates in src/templates/

Development Rules

  1. Code Style

    • Follow PEP 8 guidelines for Python code
    • Use type hints where possible
    • Document all public functions and classes
    • Keep functions focused and single-purpose
  2. Security Requirements

    • All uploads must be authenticated with API key
    • File names must be sanitized
    • SSL required for production
    • Implement proper error handling
    • Clean up expired/abandoned files
  3. API Guidelines

    • Maintain backward compatibility
    • Document all endpoint changes
    • Include proper error responses
    • Use consistent response formats
    • Validate all input parameters
  4. Feature Implementation

    • Add tests for new features
    • Update documentation
    • Follow chunked upload protocol for large files
    • Maintain mobile app compatibility
    • Consider both WiFi and mobile network scenarios

Testing Requirements

  1. New Features

    • Unit tests required
    • Test both success and failure cases
    • Include mobile network testing
    • Verify chunked upload functionality
  2. Performance Testing

    • Test with files >100MB
    • Verify timeout configurations
    • Test under various network conditions
    • Monitor memory usage

Deployment Rules

  1. Docker Requirements

    • Use multi-stage builds
    • Include only necessary files
    • Set proper permissions
    • Configure appropriate timeouts
  2. Production Setup

    • SSL certificates required
    • Strong CLIENT_KEY required
    • Proper file cleanup configuration
    • Monitoring setup

Documentation Structure

Core Documentation

  1. README.md

    • Basic setup and configuration
    • API endpoint documentation
    • Docker deployment instructions
    • Security best practices View README.md for details
  2. TASK.md

  3. LARGE_UPLOAD.md

Version Control Rules

  1. Branching Strategy

    • Main branch: production-ready code
    • Develop branch: integration branch
    • Feature branches: feature/* prefix
    • Hotfix branches: hotfix/* prefix
  2. Commit Guidelines

    • Clear, descriptive commit messages
    • Reference issue numbers
    • Single responsibility per commit
    • Include relevant tests
  3. Release Process

    • Tag all releases (v*..)
    • Update version.txt
    • Generate change logs
    • Test deployment process

CI/CD Pipeline

  1. Automated Processes

    • Build testing
    • Unit test execution
    • Docker image building
    • Version tagging
    • DockerHub publishing
  2. Quality Gates

    • All tests must pass
    • Code coverage requirements
    • No security vulnerabilities
    • Proper version tagging

Monitoring and Maintenance

  1. Server Health

    • Regular cleanup of expired files
    • Monitor disk usage
    • Track API usage
    • Log error rates
  2. Performance Metrics

    • Upload success rates
    • Download completion rates
    • Response times
    • Chunked upload efficiency

Support and Updates

  1. Issue Management

    • Use GitHub issues for tracking
    • Label issues appropriately
    • Follow security disclosure process
    • Maintain changelog
  2. Documentation Updates

    • Keep API docs current
    • Update setup instructions
    • Document known issues
    • Maintain upgrade guides