Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
e0ceb68
fix: Resolve TypeScript compilation errors
Serph91P Jan 24, 2026
6e14dcd
fix(security): address critical security vulnerabilities
Serph91P Jan 24, 2026
3aee2e1
feat: Add comprehensive testing infrastructure and backup engine impr…
Serph91P Jan 24, 2026
a6bdd0a
fix: Correct imports in test_database.py and test_scheduler.py
Serph91P Jan 24, 2026
f7886fd
fix: CI workflow fixes
Serph91P Jan 24, 2026
c3ad6d4
fix: exclude test files from production TypeScript build
Serph91P Jan 24, 2026
7278666
fix: nginx proxy to localhost for single-container deployment
Serph91P Jan 24, 2026
0775fec
fix: resolve all linting issues
Serph91P Jan 25, 2026
17e63a2
fix: format all Python code with black and isort
Serph91P Jan 25, 2026
727fcde
fix: update test fixtures to properly mock database
Serph91P Jan 25, 2026
2a67711
fix(tests): Fix 45 failing tests to match actual implementation
Serph91P Jan 25, 2026
5c88e8e
fix(frontend): Add ESLint flat config for ESLint 9.x
Serph91P Jan 25, 2026
34c824f
fix(ci): Use vitest test:coverage script instead of --watchAll flag
Serph91P Jan 25, 2026
2497184
fix(frontend): improve ESLint config ignore patterns for CI
Serph91P Jan 25, 2026
fac4543
chore(deps): update frontend dependencies to latest versions
Serph91P Jan 26, 2026
af10e75
Translate frontend from German to English
Serph91P Jan 26, 2026
b8e6038
Simplify configuration - remove unnecessary environment variables
Serph91P Jan 26, 2026
b4f414a
Fix: remove unused settings import in main.py
Serph91P Jan 26, 2026
1a3959c
Fix: format backup_engine.py with black
Serph91P Jan 26, 2026
e3eb708
Fix: refactor websocket test to avoid this-alias lint error
Serph91P Jan 26, 2026
e2a7e44
Fix: use docker compose v2 syntax in CI workflow
Serph91P Jan 26, 2026
d27d633
Fix: simplify docker-compose to use single container with multi-stage…
Serph91P Jan 26, 2026
6bca3cb
Fix: docker-compose uses image from GHCR, CI builds from Dockerfile
Serph91P Jan 26, 2026
49c601c
Fix: update header comments in .env.example for clarity
Serph91P Jan 26, 2026
26f236b
Fix: remove nginx default site that overrides our config
Serph91P Jan 26, 2026
84815c6
Fix: update TailwindCSS 4.x syntax - use @import and @theme for custo…
Serph91P Jan 26, 2026
51ca39c
Fix: auto-detect Docker socket GID in entrypoint script
Serph91P Jan 26, 2026
10bae42
Fix storage API route prefix
Serph91P Jan 27, 2026
9f62548
Improve remote storage test diagnostics
Serph91P Jan 27, 2026
ea15a5a
Run release after successful tests
Serph91P Jan 27, 2026
ae38941
feat: Add complete authentication system and backup encryption
Serph91P Jan 27, 2026
f6f4fed
fix: Linting and test fixes for CI pipeline
Serph91P Jan 27, 2026
4e1ee99
ci: Fix release workflow to trigger reliably on push
Serph91P Jan 27, 2026
bd4de72
fix: Ensure password truncation to 72 bytes in hash and verify functions
Serph91P Jan 27, 2026
4624f88
fix: Refactor password hashing and verification for consistency with …
Serph91P Jan 27, 2026
5de74f0
fix: Update password hashing and verification to handle byte truncati…
Serph91P Jan 27, 2026
aa74c46
fix: Replace passlib with bcrypt for password hashing
Serph91P Jan 27, 2026
a1a1eae
style: Fix import formatting in auth.py
Serph91P Jan 27, 2026
23102b5
feat: Add encryption setup to setup wizard
Serph91P Jan 27, 2026
de46bc5
fix: Improve encryption UI
Serph91P Jan 27, 2026
0426db1
chore(deps): Bump eslint-plugin-react-refresh
dependabot[bot] Feb 2, 2026
3b7c9c3
chore(deps): Bump date-fns from 3.6.0 to 4.1.0 in /frontend
dependabot[bot] Feb 2, 2026
d2f6873
Merge pull request #16 from Serph91P/dependabot/npm_and_yarn/frontend…
Serph91P Feb 2, 2026
60ab6b5
Merge branch 'develop' into dependabot/npm_and_yarn/frontend/npm-mino…
Serph91P Feb 2, 2026
2f6a5bb
Merge pull request #15 from Serph91P/dependabot/npm_and_yarn/frontend…
Serph91P Feb 2, 2026
26cb80c
Add schedule editor to Targets page and improve logging
Serph91P Feb 2, 2026
5c19000
Add editable Komodo settings in frontend
Serph91P Feb 2, 2026
7ebd7e8
Remove ARM64 build from CI workflow
Serph91P Feb 2, 2026
cac4f87
Fix linting errors in backend and frontend
Serph91P Feb 2, 2026
1019ce8
Fix TypeScript type error: use undefined instead of null for schedule…
Serph91P Feb 2, 2026
2d457c8
Add link from Schedules page to Targets page for schedule configuration
Serph91P Feb 2, 2026
dce585b
feat: Add Setup-Wizard for backup targets and redesign schedules
Serph91P Feb 4, 2026
e7de3b7
fix: Update Dashboard to use new ScheduleEntity interface
Serph91P Feb 4, 2026
383adfd
feat: Add retention policy per target support
Serph91P Feb 4, 2026
6fb29cd
docs: Update FEATURES_TODO - Retention Policy pro Target complete
Serph91P Feb 4, 2026
09fb24b
fix: Add database migration for encrypted columns in backups table
Serph91P Feb 4, 2026
0d04ec5
style: Format database.py with ruff
Serph91P Feb 4, 2026
67eac31
docs: Add mandatory pre-commit linting checklist to copilot instructions
Serph91P Feb 4, 2026
7b0d5b2
fix: Fix flake8 line-too-long and unused import errors
Serph91P Feb 4, 2026
06a7f85
fix: Fix isort import ordering in targets.py
Serph91P Feb 4, 2026
e227034
fix: Add schedule = None to mock targets in scheduler tests
Serph91P Feb 5, 2026
a06f3d5
fix: Add database migrations for schedule_id, retention_policy_id, ke…
Serph91P Feb 5, 2026
08adbca
fix: Update frontend tests for new ScheduleEntity model
Serph91P Feb 5, 2026
8f81a27
feat: Implement stack backup support
Serph91P Feb 5, 2026
7b4c752
refactor(ui): restructure to backup-focused interface with unified Ba…
Serph91P Feb 5, 2026
51b2d2f
fix: run container as root to access Docker volumes
Serph91P Feb 5, 2026
d1a7351
fix: remove unused HttpResponse import in Backups.test.tsx
Serph91P Feb 5, 2026
91396db
fix: run backend as root for Docker socket access
Serph91P Feb 5, 2026
3008593
docs: update FEATURES_TODO.md - mark Stack-Backup and UI restructurin…
Serph91P Feb 5, 2026
29a448b
feat: Add automatic stack dependency detection
Serph91P Feb 5, 2026
c7ba067
feat: selective volume backup, path filtering, backups page redesign …
Serph91P Feb 6, 2026
d65b853
fix: linting issues - remove trailing blank line and shorten long line
Serph91P Feb 6, 2026
cc53dc1
fix: apply black formatting to backups.py
Serph91P Feb 6, 2026
adee32c
fix: update Backups.test.tsx for new page design
Serph91P Feb 6, 2026
de6ba3b
fix: add migration for selected_volumes, include_paths, exclude_paths…
Serph91P Feb 8, 2026
89e1e95
refactor: remove Targets page and improve encrypted backup UX
Serph91P Feb 8, 2026
bc91195
fix: add cascade delete to Backup relationship in BackupTarget model
Serph91P Feb 10, 2026
99acef5
fix: enhance delete_target endpoint to remove associated backup files
Serph91P Feb 10, 2026
fa8dd23
feat(wizard): add searchable, sorted target selection lists
Serph91P Feb 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 3 additions & 35 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Docker Backup Manager - Environment Configuration
# DockerVault - Environment Configuration
# Copy this file to .env and adjust values as needed

# ==========================================
# General Settings
Expand All @@ -11,26 +12,9 @@ PORT=8080
TZ=Europe/Berlin

# Path where backups are stored on the host
# This gets mounted to /backups in the container
BACKUP_PATH=./backups

# ==========================================
# Docker Settings
# ==========================================

# Docker Group ID - find with: getent group docker | cut -d: -f3
# This is required for the container to access the Docker socket
DOCKER_GID=999

# ==========================================
# Retention Settings
# ==========================================

# Default retention period in days
DEFAULT_RETENTION_DAYS=30

# Default number of backups to keep
DEFAULT_RETENTION_COUNT=10

# ==========================================
# Komodo Integration (Optional)
# ==========================================
Expand All @@ -43,19 +27,3 @@ KOMODO_API_URL=

# Komodo API Key
KOMODO_API_KEY=

# Komodo WebSocket URL (optional, derived from API URL if not set)
KOMODO_WS_URL=

# ==========================================
# Advanced Settings
# ==========================================

# Maximum parallel backup jobs
MAX_PARALLEL_BACKUPS=2

# Compression level (1-9, higher = more compression but slower)
COMPRESSION_LEVEL=6

# CORS origins (comma-separated)
CORS_ORIGINS=http://localhost:8080,http://localhost:5173
106 changes: 106 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---
description: "Main repository instructions for DockerVault - Docker Volume Backup solution"
---

# DockerVault Development Guidelines

DockerVault is an automated Docker backup solution with a modern web interface, built with Python FastAPI backend and React TypeScript frontend.

## Project Architecture

- **Backend**: Python FastAPI with SQLAlchemy, Docker SDK, APScheduler for task scheduling
- **Frontend**: React 19 + TypeScript, Vite build system, TailwindCSS styling
- **Database**: SQLite with async support via aiosqlite
- **Infrastructure**: Docker containerized, nginx for frontend serving
- **Storage**: Local Docker volumes with remote backup support (S3, FTP, WebDAV)

## Development Standards

### Code Quality
- Follow language-specific guidelines in [instructions/](./instructions/) directory
- Maintain consistent naming conventions across frontend and backend
- Write comprehensive tests for both API endpoints and React components
- Use TypeScript strict mode for frontend type safety
- Follow Python PEP 8 standards with type hints

### Architecture Principles
- Keep backend and frontend loosely coupled via REST API
- Use WebSocket for real-time backup progress updates
- Implement proper error handling and user feedback
- Design for scalability with async patterns
- Follow Docker best practices for containerization

### Security
- Never commit sensitive configuration or credentials
- Use environment variables for all configuration
- Implement proper input validation on both frontend and backend
- Follow security best practices for Docker containers
- Use non-root users in containers

### Testing Strategy
- Unit tests for backend services and utilities
- Integration tests for API endpoints
- Component tests for React components
- End-to-end tests for critical backup workflows
- Maintain test coverage above 80%

### Documentation
- Keep README.md updated with setup and usage instructions
- Document API endpoints with OpenAPI/Swagger
- Add inline documentation for complex business logic
- Update deployment guides for any infrastructure changes

## Specific Guidelines

### Backup System
- Implement robust error handling for backup operations
- Provide clear progress indicators and status messages
- Support resumable operations where possible
- Log all backup activities with appropriate detail levels

### Docker Integration
- Use Docker SDK for container and volume management
- Implement proper cleanup for failed operations
- Handle Docker daemon connection errors gracefully
- Support both local and remote Docker endpoints

### File Operations
- Use async file I/O patterns for better performance
- Implement proper stream processing for large files
- Handle disk space issues and quota limits
- Support compression and encryption options

### User Interface
- Provide intuitive backup configuration workflows
- Display real-time status and progress information
- Implement responsive design for various screen sizes
- Use consistent icons and terminology throughout

## Pre-Commit Checklist (MANDATORY)

**ALWAYS run these checks before EVERY commit:**

### Backend (Python)
```bash
cd backend
python -m ruff check app/
python -m ruff format --check app/
# If format check fails, run:
python -m ruff format app/
```

### Frontend (TypeScript/React)
```bash
cd frontend
npx tsc --noEmit
npx eslint src/
```

**Do NOT commit without passing all linting checks!**

When implementing new features, consider:
1. Impact on existing backup processes
2. Resource usage and performance implications
3. User experience and workflow efficiency
4. Error scenarios and recovery procedures
5. Documentation and help text requirements
193 changes: 193 additions & 0 deletions .github/instructions/code-review.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
---
applyTo: "**/*"
description: "Code review standards and GitHub review guidelines for DockerVault"
---

# Code Review Guidelines

## General Code Review Principles

- Focus on code correctness, readability, and maintainability
- Provide constructive feedback with specific suggestions
- Consider the bigger picture: architecture, design patterns, and consistency
- Review for security vulnerabilities and performance implications
- Check that tests are adequate and meaningful
- Ensure documentation is updated when necessary

## What to Look For

### Code Quality

- Adherence to project coding standards and style guides
- Proper error handling and edge case coverage
- Clear and descriptive variable and function names
- Appropriate code organization and separation of concerns
- Elimination of code duplication and dead code
- Proper use of design patterns and architectural principles

### Functionality

- Code does what it's supposed to do
- Business logic is correct and complete
- Edge cases and error scenarios are handled
- Input validation is comprehensive
- Output formats match specifications
- Integration points work correctly

### Security

- Input sanitization and validation
- Proper authentication and authorization
- No hardcoded secrets or sensitive data
- Secure handling of file operations and paths
- Proper use of environment variables
- Adherence to security best practices

### Performance

- Efficient algorithms and data structures
- Appropriate use of caching and optimization
- Proper resource management and cleanup
- Async patterns used correctly
- No obvious performance bottlenecks
- Reasonable memory usage patterns

### Testing

- Adequate test coverage for new functionality
- Tests are meaningful and test the right things
- Test data is appropriate and realistic
- Mocking is used appropriately
- Tests are maintainable and not brittle
- Edge cases and error scenarios are tested

## Language-Specific Review Points

### Python Backend Reviews

- Type hints are used consistently
- Async/await patterns are used properly
- Database operations use proper transaction handling
- API endpoints follow REST conventions
- Error responses are consistent and informative
- Docker SDK usage is efficient and safe

### React Frontend Reviews

- Components follow React best practices
- State management is appropriate (local vs global)
- TypeScript types are comprehensive and accurate
- Accessibility considerations are addressed
- Performance optimizations are appropriate
- Error boundaries handle failures gracefully

### Docker Reviews

- Dockerfile follows multi-stage build practices
- Security best practices are implemented
- Image size is optimized
- Resource limits are appropriate
- Health checks are implemented
- Environment configuration is externalized

## Review Process

### Before Submitting a PR

- Self-review your code thoroughly
- Ensure all tests pass and coverage is adequate
- Update documentation as needed
- Write a clear PR description with context
- Link to relevant issues or requirements
- Consider the impact on existing functionality

### Conducting a Review

- Understand the context and requirements
- Review the code changes line by line
- Test the changes locally when appropriate
- Provide specific, actionable feedback
- Suggest alternatives when requesting changes
- Acknowledge good practices and improvements

### Review Comments

- Use clear, respectful language
- Explain the reasoning behind suggestions
- Provide code examples when helpful
- Use appropriate prefixes (nit, optional, blocking)
- Focus on the code, not the person
- Ask questions to understand intent when unclear

### GitHub Review Features

- Use GitHub's suggestion feature for small changes
- Mark conversations as resolved after addressing
- Use appropriate review status (Comment, Approve, Request Changes)
- Add reviewers with relevant expertise
- Use draft PRs for work-in-progress reviews
- Link PRs to issues and project boards

## DockerVault-Specific Review Areas

### Backup Operations

- Proper error handling for backup failures
- Progress tracking and user feedback
- Resource cleanup after operations
- Validation of backup integrity
- Proper handling of large files and volumes
- Scheduling and automation logic

### Docker Integration

- Safe Docker socket access
- Proper container lifecycle management
- Volume mounting and permissions
- Network configuration and security
- Resource limits and monitoring
- Error handling for Docker daemon issues

### User Interface

- Consistent user experience across features
- Proper loading states and error messages
- Accessibility and responsive design
- Real-time updates and WebSocket handling
- Form validation and user feedback
- Navigation and routing logic

### Configuration Management

- Environment variable usage
- Configuration validation
- Default values and documentation
- Security of sensitive configuration
- Deployment and environment differences
- Migration and upgrade procedures

## Common Issues to Watch For

- Hardcoded configuration values
- Missing error handling or overly broad exception catching
- Security vulnerabilities (path traversal, injection, etc.)
- Performance issues (N+1 queries, inefficient algorithms)
- Inconsistent code style or naming conventions
- Missing or inadequate tests
- Outdated or missing documentation
- Breaking changes without proper versioning
- Resource leaks or improper cleanup
- Race conditions in concurrent code

## Review Checklist

- [ ] Code follows project style and conventions
- [ ] Functionality is correct and complete
- [ ] Error handling is comprehensive
- [ ] Security best practices are followed
- [ ] Performance considerations are addressed
- [ ] Tests are adequate and meaningful
- [ ] Documentation is updated as needed
- [ ] No breaking changes without proper communication
- [ ] Configuration is externalized appropriately
- [ ] Resource usage is reasonable and monitored
Loading
Loading