# Software Requirements Specification (SRS) ## AtlasOS - Calypso Backup Appliance ### Alpha Release **Version:** 1.0.0-alpha **Date:** 2025-01-XX **Status:** In Development --- ## 1. Introduction ### 1.1 Purpose This document provides a comprehensive Software Requirements Specification (SRS) for AtlasOS - Calypso, an enterprise-grade backup appliance management system. The system provides unified management for storage, backup, tape libraries, and system administration through a modern web-based interface. ### 1.2 Scope Calypso is designed to manage: - ZFS storage pools and datasets - File sharing (SMB/CIFS and NFS) - iSCSI block storage targets - Physical and Virtual Tape Libraries (VTL) - Backup job management (Bacula/Bareos integration) - System monitoring and alerting - User and access management (IAM) - Object storage services - Snapshot and replication management ### 1.3 Definitions, Acronyms, and Abbreviations - **ZFS**: Zettabyte File System - **SMB/CIFS**: Server Message Block / Common Internet File System - **NFS**: Network File System - **iSCSI**: Internet Small Computer Systems Interface - **VTL**: Virtual Tape Library - **IAM**: Identity and Access Management - **RBAC**: Role-Based Access Control - **API**: Application Programming Interface - **REST**: Representational State Transfer - **JWT**: JSON Web Token - **SNMP**: Simple Network Management Protocol - **NTP**: Network Time Protocol ### 1.4 References - ZFS Documentation: https://openzfs.github.io/openzfs-docs/ - SCST Documentation: http://scst.sourceforge.net/ - Bacula Documentation: https://www.bacula.org/documentation/ - React Documentation: https://react.dev/ - Go Documentation: https://go.dev/doc/ ### 1.5 Overview This SRS is organized into the following sections: - **SRS-01**: Storage Management - **SRS-02**: File Sharing (SMB/NFS) - **SRS-03**: iSCSI Management - **SRS-04**: Tape Library Management - **SRS-05**: Backup Management - **SRS-06**: Object Storage - **SRS-07**: Snapshot & Replication - **SRS-08**: System Management - **SRS-09**: Monitoring & Alerting - **SRS-10**: Identity & Access Management - **SRS-11**: User Interface & Experience --- ## 2. System Overview ### 2.1 System Architecture Calypso follows a client-server architecture: - **Frontend**: React-based Single Page Application (SPA) - **Backend**: Go-based REST API server - **Database**: PostgreSQL for persistent storage - **External Services**: ZFS, SCST, Bacula/Bareos, MHVTL ### 2.2 Technology Stack #### Frontend - React 18 with TypeScript - Vite for build tooling - TailwindCSS for styling - TanStack Query for data fetching - React Router for navigation - Zustand for state management - Axios for HTTP requests - Lucide React for icons #### Backend - Go 1.21+ - Gin web framework - PostgreSQL database - JWT for authentication - Structured logging (zerolog) ### 2.3 Deployment Model - Single-server deployment - Systemd service management - Reverse proxy support (nginx/caddy) - WebSocket support for real-time updates --- ## 3. Functional Requirements ### 3.1 Authentication & Authorization - User login/logout - JWT-based session management - Role-based access control (Admin, Operator, ReadOnly) - Permission-based feature access - Session timeout and refresh ### 3.2 Storage Management - ZFS pool creation, deletion, and monitoring - Dataset management (filesystems and volumes) - Disk discovery and monitoring - Storage repository management - ARC statistics monitoring ### 3.3 File Sharing - SMB/CIFS share creation and configuration - NFS share creation and client management - Share access control - Mount point management ### 3.4 iSCSI Management - iSCSI target creation and management - LUN mapping and configuration - Initiator access control - Portal configuration - Extent management ### 3.5 Tape Library Management - Physical tape library discovery - Virtual Tape Library (VTL) management - Tape drive and slot management - Media inventory ### 3.6 Backup Management - Backup job creation and scheduling - Bacula/Bareos integration - Storage pool and volume management - Job history and monitoring - Client management ### 3.7 Object Storage - S3-compatible bucket management - Access policy configuration - User and key management - Usage monitoring ### 3.8 Snapshot & Replication - ZFS snapshot creation and management - Snapshot rollback and cloning - Replication task configuration - Remote replication management ### 3.9 System Management - Network interface configuration - Service management (start/stop/restart) - NTP configuration - SNMP configuration - System logs viewing - Terminal console access - Feature license management ### 3.10 Monitoring & Alerting - Real-time system metrics - Storage health monitoring - Network throughput monitoring - Alert rule configuration - Alert history and management ### 3.11 Identity & Access Management - User account management - Role management - Permission assignment - Group management - User profile management --- ## 4. Non-Functional Requirements ### 4.1 Performance - API response time < 200ms for read operations - API response time < 1s for write operations - Support for 100+ concurrent users - Real-time metrics update every 5-30 seconds ### 4.2 Security - HTTPS support - JWT token expiration and refresh - Password hashing (bcrypt) - SQL injection prevention - XSS protection - CSRF protection - Rate limiting - Audit logging ### 4.3 Reliability - Database transaction support - Error handling and recovery - Health check endpoints - Graceful shutdown ### 4.4 Usability - Responsive web design - Dark theme support - Intuitive navigation - Real-time feedback - Loading states - Error messages ### 4.5 Maintainability - Clean code architecture - Comprehensive logging - API documentation - Code comments - Modular design --- ## 5. System Constraints ### 5.1 Hardware Requirements - Minimum: 4GB RAM, 2 CPU cores, 100GB storage - Recommended: 8GB+ RAM, 4+ CPU cores, 500GB+ storage ### 5.2 Software Requirements - Linux-based operating system (Ubuntu 24.04+) - PostgreSQL 14+ - ZFS support - SCST installed and configured - Bacula/Bareos (optional, for backup features) ### 5.3 Network Requirements - Network connectivity for remote access - SSH access for system management - Port 8080 (API) and 3000 (Frontend) accessible --- ## 6. Assumptions and Dependencies ### 6.1 Assumptions - System has root/sudo access for ZFS and system operations - Network interfaces are properly configured - External services (Bacula, SCST) are installed and accessible - Users have basic understanding of storage and backup concepts ### 6.2 Dependencies - PostgreSQL database - ZFS kernel module and tools - SCST kernel module and tools - Bacula/Bareos (for backup features) - MHVTL (for VTL features) --- ## 7. Future Enhancements ### 7.1 Planned Features - LDAP/Active Directory integration - Multi-site replication - Cloud backup integration - Advanced encryption at rest - WebSocket real-time updates - Mobile responsive improvements - Advanced reporting and analytics ### 7.2 Potential Enhancements - Multi-tenant support - API rate limiting per user - Advanced backup scheduling - Disaster recovery features - Performance optimization tools --- ## Document History | Version | Date | Author | Changes | |---------|------|--------|---------| | 1.0.0-alpha | 2025-01-XX | Development Team | Initial SRS document |