From abeb64637efdb7c0f90acff34e9b1aefd3ad8ecd Mon Sep 17 00:00:00 2001 From: Alex Blank Date: Mon, 11 May 2026 22:05:03 +0200 Subject: [PATCH] docs: add comprehensive README and update .gitignore --- .gitignore | 67 ++++++++++++++++++++++++++++----- README.md | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 163 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 18c8cd6..1a63b77 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,67 @@ -# Dependencies -frontend/node_modules/ -frontend/package-lock.json +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg -# Build output -frontend/dist/ - -# Environment files -.env -.env.local +# Virtual environments +venv/ +.venv/ +env/ +ENV/ # IDE .vscode/ .idea/ +*.swp +*.swo +*~ # OS .DS_Store Thumbs.db + +# Environment files +.env +.env.local +.env.*.local + +# Database +*.db +*.sqlite +*.sqlite3 + +# Frontend +frontend/node_modules/ +frontend/dist/ +frontend/package-lock.json +frontend/yarn.lock +frontend/pnpm-lock.yaml + +# Logs +*.log +logs/ + +# Testing +.pytest_cache/ +.coverage +htmlcov/ + +# Backup tool specific +backups/ diff --git a/README.md b/README.md index 9466a2e..eaf4911 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,106 @@ -# backup-tool +# Backup Tool +A modern backup management application with a FastAPI backend and React frontend. + +## Features + +- **Multiple Source Types**: Local filesystem, SSH/SFTP, and database (PostgreSQL, MySQL) +- **Backup Strategies**: Full and incremental backups +- **Scheduled Backups**: Cron-based scheduling with APScheduler +- **Retention Policies**: Count-based and days-based backup retention +- **Web Dashboard**: React-based UI for managing backups +- **REST API**: Full REST API for programmatic access + +## Architecture + +``` +backup-tool/ +├── backend/ # FastAPI backend +│ ├── app/ # FastAPI application +│ │ ├── routers/ # API endpoints +│ │ ├── models.py # SQLAlchemy models +│ │ ├── schemas.py # Pydantic schemas +│ │ └── main.py # Application entry point +│ ├── backup/ # Backup engine +│ │ ├── adapters/ # Source adapters (local, SSH, database) +│ │ ├── engine.py # Backup execution engine +│ │ ├── scheduler.py # Job scheduler +│ │ └── retention.py # Retention policies +│ └── requirements.txt # Python dependencies +├── frontend/ # React frontend +│ ├── src/ # Source code +│ └── package.json # Node dependencies +└── docs/ # Documentation +``` + +## Quick Start + +### Prerequisites + +- Python 3.11+ +- Node.js 18+ +- PostgreSQL or MySQL (for database backups) + +### Backend Setup + +```bash +cd backend +python -m venv venv +source venv/bin/activate # On Windows: venv\Scripts\activate +pip install -r requirements.txt + +# Run the server +uvicorn app.main:app --reload --port 8000 +``` + +### Frontend Setup + +```bash +cd frontend +npm install +npm run dev +``` + +### Production Build + +```bash +cd frontend +npm run build + +cd ../backend +uvicorn app.main:app --host 0.0.0.0 --port 8000 +``` + +## API Documentation + +Once the backend is running, visit: +- Swagger UI: http://localhost:8000/docs +- ReDoc: http://localhost:8000/redoc + +## Configuration + +Environment variables: +- `DATABASE_URL`: Database connection string (default: sqlite+aiosqlite:///./backup_tool.db) +- `CORS_ORIGINS`: Comma-separated list of allowed CORS origins +- `SQL_ECHO`: Enable SQL query logging (true/false) + +## Development + +### Running Tests + +```bash +cd backend +pytest +``` + +### Database Migrations + +```bash +cd backend +alembic revision --autogenerate -m "Description" +alembic upgrade head +``` + +## License + +MIT