# 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 |

