Commit Graph

33 Commits

Author SHA1 Message Date
alex 9f59540686 cleaned up 2026-06-11 14:55:34 +02:00
alex cc694e71b4 feat: dockerize app and convert to pyproject setup
- Add pyproject.toml with proper metadata and dependency groups
- Create multi-stage Dockerfile for backend
- Add docker-compose.yml with dev/prod profiles
- Create frontend Dockerfile with nginx
- Add .dockerignore for optimized builds
- Update README with Docker instructions and troubleshooting
- Remove requirements.txt in favor of pyproject.toml
- Ensure data persistence with Docker volumes
2026-05-11 22:50:11 +02:00
alex abeb64637e docs: add comprehensive README and update .gitignore 2026-05-11 22:05:03 +02:00
alex 1978602da6 feat(frontend): add static file serving for production build 2026-05-11 22:04:26 +02:00
alex 55ec0687a5 feat(retention): add count-based and days-based retention policies 2026-05-11 22:03:50 +02:00
alex a4a16655b9 feat(scheduler): add APScheduler integration with cron support 2026-05-11 22:03:03 +02:00
alex 4d2c21a42e feat(adapters): add SSH and database adapters 2026-05-11 22:02:25 +02:00
alex b4a22a1c44 feat(routers): add executions, backups, and settings endpoints 2026-05-11 22:01:31 +02:00
alex b2d196498b feat(dashboard): add GET /api/dashboard/ stats endpoint
- Active jobs count, total backups, storage used
- Recent failures (24h) and last 10 executions
- Uses DashboardStats schema
2026-05-11 21:56:02 +02:00
alex 66f9de17c5 feat(frontend): add Dashboard, Backups, and Settings pages
- Create Dashboard page with stats cards and recent activity feed
- Create Backups page with job listing table, create modal, and actions
- Create Settings page with tabs for General, Notifications, Security, Logs
- Update App.tsx to use new page components
- Add delete method to jobsApi in client.ts
- TypeScript compiles cleanly
2026-05-11 21:54:36 +02:00
alex 99eeffc810 chore: add .gitignore and remove node_modules from tracking 2026-05-11 21:48:38 +02:00
alex d3b92593d5 feat(frontend): add API client, layout, and routing
- Create Axios-based API client with sources, jobs, and dashboard endpoints
- Add responsive Layout component with navigation sidebar
- Set up React Router with Dashboard, Backups, and Settings routes
- Configure TanStack Query provider with default options
- Use lucide-react for navigation icons
2026-05-11 21:47:20 +02:00
alex 7676438466 fix(tests): resolve lazy loading errors in test_engine.py
Add await db.refresh() calls with relationship attributes before accessing
test_job.executions and execution.backups in async test context.

Fixes lazy loading errors in:
- test_execute_full_backup
- test_execute_incremental_without_full
2026-05-11 21:40:52 +02:00
alex ed64b5ff62 fix: use @pytest_asyncio.fixture for async fixtures in test_engine.py 2026-05-11 21:39:12 +02:00
alex 19987d68a0 refactor(tests): use client fixture for test isolation
Replace all AsyncClient instantiations in test_sources.py and test_jobs.py
with the shared  fixture from conftest.py. This ensures proper test
database isolation via dependency overrides.

- Remove imports of httpx AsyncClient, ASGITransport, and app
- Add client fixture parameter to all test functions
- Remove async with blocks around HTTP requests
- test_engine.py already uses db fixture correctly, no changes needed
2026-05-11 21:38:15 +02:00
alex 58c4bc7f30 fix: use ASGITransport for httpx AsyncClient in tests
- httpx.AsyncClient requires ASGITransport for FastAPI app testing
- Updated all test files to use correct API
2026-05-11 21:28:07 +02:00
alex 55ba9b62d6 fix: improve test isolation and configuration
- Use in-memory SQLite for tests to prevent conflicts
- Add try/finally for robust test cleanup
- Make database URL configurable via env var
- Make CORS origins configurable via env var
- Make SQL echo configurable via env var
2026-05-11 21:25:35 +02:00
alex 878e303cc6 feat: setup FastAPI main app with routers and test fixtures
- Main FastAPI app with all routers included
- CORS middleware for frontend
- Test fixtures with in-memory SQLite database
- Placeholder routers for future tasks
2026-05-11 21:22:55 +02:00
alex 955ed9db49 fix: jobs router session handling, schedule creation, and tests
- Use new session in background task for thread safety
- Fix schedule creation to associate with job
- Fix schedule endpoint return type
- Update tests to use AsyncClient
- Add missing tests for list, get, delete, schedule
- Add updated_at field to Schedule model
2026-05-11 21:20:31 +02:00
alex 1f1ed72494 feat: add jobs CRUD API with manual execution
- Full CRUD for backup jobs
- Manual job trigger endpoint with background execution
- Schedule creation endpoint
- Tests for job creation, update, execution, and 404 cases
2026-05-11 21:12:01 +02:00
alex 810aae1b6e test: add update and 404 tests for sources API 2026-05-11 21:01:41 +02:00
alex 0d0f41d616 feat: add sources CRUD API with tests
- Full CRUD endpoints for backup sources
- Pydantic validation for source types
- pytest tests for create, list, get, delete
2026-05-11 20:59:11 +02:00
alex b69c098cab feat: add backup engine with full/incremental support
- BackupEngine class executes jobs and creates backups
- Automatic fallback from incremental to full if no parent exists
- SHA-256 checksum calculation for integrity
- Tests for full backup and incremental fallback
2026-05-11 20:56:06 +02:00
alex f925ae094c feat: add source adapter base class and local filesystem adapter
- Abstract SourceAdapter with FileInfo dataclass
- LocalAdapter for filesystem backups
- Adapter factory for extensibility
2026-05-11 20:52:31 +02:00
alex 83c3075de0 fix: update pydantic schemas to v2 syntax
- Replace Config class with ConfigDict
- Add cron expression validation
- Add missing updated_at to Schedule
- Add JobExecutionUpdate schema
2026-05-11 20:50:35 +02:00
alex 76cf5054be feat: add pydantic schemas for API validation 2026-05-11 20:47:48 +02:00
alex caf5bcb172 fix: address database model quality issues
- Fix mutable default arguments with lambda
- Add indexes on foreign keys
- Replace deprecated datetime.utcnow
- Add __repr__ methods for debugging
- Remove redundant primary key indexes
2026-05-11 20:46:03 +02:00
alex 13488f7b21 feat: add database models and alembic setup
- SQLAlchemy async models for sources, jobs, schedules, executions, backups, settings
- Alembic migration configuration
2026-05-11 20:43:23 +02:00
alex 3deab5fdf3 fix: resolve frontend code quality issues
- Create missing tsconfig.node.json for Vite config compilation
- Create postcss.config.js for Tailwind CSS processing
- Add test dependencies (vitest, testing-library, jsdom)
- Remove missing /vite.svg favicon reference from index.html
2026-05-11 20:39:05 +02:00
alex eff41bd801 chore: setup project structure with dependencies 2026-05-11 20:28:22 +02:00
alex 4989652c5d docs: add comprehensive implementation plan
- 20 tasks covering backend, frontend, adapters, scheduler
- File structure with exact paths
- Complete code in every step
- Self-review with spec coverage verification
2026-05-11 20:23:54 +02:00
alex 56b68d7e57 docs: add backup tool design specification
- Architecture: Python FastAPI backend + React frontend
- Data model: 6 core tables (sources, jobs, schedules, executions, backups, settings)
- Backup flow: 7-step execution with incremental support
- Error handling: Retry logic, partial backup handling, retention policies
- Extensibility: Adapter pattern for sources and storage backends
2026-05-11 20:10:13 +02:00
alex 24e4b56616 Initial commit 2026-05-11 19:17:12 +02:00