# Technology Stack ## AtlasOS - Calypso Backup Appliance **Version:** 1.0.0-alpha **Last Updated:** 2025-01-XX --- ## Overview This document provides a comprehensive list of all technologies, frameworks, libraries, and tools used in the Calypso backup appliance. --- ## 1. Operating System & Base Platform ### 1.1 Operating System - **Ubuntu Server 24.04 LTS** (Primary target) - **Linux Kernel** 6.8+ (with ZFS, SCST support) - **systemd** - Service management - **journald** - System logging ### 1.2 Base System Tools - **chrony** - NTP time synchronization - **ufw** - Firewall management - **nftables** - Network filtering (alternative) - **udev** - Device management - **lsb-release** - Linux Standard Base --- ## 2. Backend Technology Stack ### 2.1 Programming Language - **Go 1.22+** (golang) - Version: 1.22.0 or later - Architecture: linux-amd64 ### 2.2 Web Framework - **Gin** - HTTP web framework - `github.com/gin-gonic/gin` - RESTful API implementation - Middleware support ### 2.3 Database - **PostgreSQL 14+** - Primary database for metadata - Connection pooling (pgxpool) - Migration system ### 2.4 Database Drivers - **pgx/v5** - PostgreSQL driver - `github.com/jackc/pgx/v5` - `github.com/jackc/pgx/v5/pgxpool` - **lib/pq** - PostgreSQL driver (for array types) - `github.com/lib/pq` ### 2.5 Authentication & Security - **JWT** - JSON Web Tokens - `github.com/golang-jwt/jwt/v5` - **bcrypt** - Password hashing - `golang.org/x/crypto/bcrypt` - **Argon2** - Password hashing (alternative) ### 2.6 Configuration Management - **Viper** - Configuration management - `github.com/spf13/viper` - **YAML** - Configuration format ### 2.7 Logging - **Zerolog** - Structured logging - `github.com/rs/zerolog` - **JSON** - Log format ### 2.8 HTTP Client & Utilities - **HTTP Client** - Standard library - **Context** - Request context management - **Time** - Time handling ### 2.9 Additional Go Libraries - **UUID** - UUID generation - `github.com/google/uuid` - **Errors** - Error handling - `github.com/pkg/errors` - **Sync** - Concurrency primitives - `golang.org/x/sync/errgroup` --- ## 3. Frontend Technology Stack ### 3.1 Core Framework - **React 18** - UI library - Version: 18.x - TypeScript support ### 3.2 Build Tool - **Vite** - Build tool and dev server - Fast HMR (Hot Module Replacement) - Optimized production builds ### 3.3 Programming Language - **TypeScript** - Type-safe JavaScript - Type checking - Modern ES6+ features ### 3.4 Routing - **React Router DOM** - Client-side routing - `react-router-dom` - Version: 6.x ### 3.5 State Management - **Zustand** - Lightweight state management - `zustand` - Global state (auth, UI state) ### 3.6 Data Fetching - **TanStack Query (React Query)** - Server state management - `@tanstack/react-query` - Caching, refetching, mutations ### 3.7 HTTP Client - **Axios** - HTTP client - `axios` - Request/response interceptors ### 3.8 Styling - **TailwindCSS** - Utility-first CSS framework - `tailwindcss` - PostCSS integration - Dark theme support ### 3.9 Icons - **Lucide React** - Icon library - `lucide-react` - Modern icon set ### 3.10 UI Components - **shadcn/ui** - UI component library (planned) - **Custom Components** - Built with TailwindCSS ### 3.11 Charts & Visualization - **Recharts** - Chart library - `recharts` - Line, bar, pie charts ### 3.12 Notifications - **Sonner** - Toast notifications - `sonner` - Success, error, warning toasts --- ## 4. Storage Technologies ### 4.1 File System - **ZFS** - Zettabyte File System - `zfsutils-linux` - `zfs-dkms` - Pool and dataset management - Snapshots and replication ### 4.2 Block Storage - **LVM2** - Logical Volume Manager - Volume group management - Thin provisioning ### 4.3 File Systems - **XFS** - High-performance filesystem (primary) - **ext4** - Alternative filesystem ### 4.4 Disk Management - **parted** - Partition management - **gdisk** - GPT partition editor - **smartmontools** - SMART disk monitoring - **nvme-cli** - NVMe device management --- ## 5. Network & File Sharing ### 5.1 File Sharing Protocols - **NFS** - Network File System - `nfs-kernel-server` - `nfs-common` - NFSv4 support - **Samba** - SMB/CIFS protocol - `samba` - `samba-common-bin` - Windows file sharing compatibility ### 5.2 iSCSI - **SCST** - SCSI Target Subsystem - Kernel module - `iscsi-scst` - `scstadmin` - Management tool ### 5.3 Network Tools - **open-iscsi** - iSCSI initiator - **iscsiadm** - iSCSI administration --- ## 6. Backup & Tape Technologies ### 6.1 Backup Software - **Bacula** - Backup software - `bacula-common` - `bacula-sd` - Storage daemon - `bacula-client` - `bacula-console` - Management console - **Bareos** - Bacula fork (alternative) ### 6.2 Virtual Tape Library - **MHVTL** - Virtual Tape Library - `mhvtl` - `mhvtl-utils` - `vtlcmd` - Management tool ### 6.3 Physical Tape - **lsscsi** - List SCSI devices - **sg3-utils** - SCSI generic utilities - **mt-st** - Magnetic tape utilities - **mtx** - Media changer control --- ## 7. Security & Antivirus ### 7.1 Antivirus - **ClamAV** - Antivirus engine - `clamav` - `clamav-daemon` - `clamav-freshclam` - Virus definition updates - `clamav-unofficial-sigs` - Unofficial signatures --- ## 8. Object Storage ### 8.1 S3-Compatible Storage - **MinIO** - Object storage (planned/integration) - S3-compatible API - Bucket management --- ## 9. Development Tools ### 9.1 Build Tools - **Make** - Build automation - **Go Build** - Go compiler - **npm/pnpm** - Node.js package manager ### 9.2 Version Control - **Git** - Version control system ### 9.3 Code Quality - **gofmt** - Go code formatter - **goimports** - Go import organizer - **golint** - Go linter (optional) - **go vet** - Go static analysis ### 9.4 Frontend Tools - **Prettier** - Code formatter - **ESLint** - JavaScript/TypeScript linter - **TypeScript Compiler** - Type checking --- ## 10. System Services ### 10.1 Service Management - **systemd** - Service manager - **journalctl** - Log viewing ### 10.2 Reverse Proxy (Optional) - **Nginx** - Web server and reverse proxy - **Caddy** - Web server with automatic HTTPS --- ## 11. Monitoring & Observability ### 11.1 Metrics Collection - **Custom Metrics Service** - Built-in metrics - **System Metrics** - CPU, memory, disk, network ### 11.2 Logging - **Structured Logging** - JSON format - **Audit Logging** - Database-backed audit trail ### 11.3 Health Checks - **Health Endpoint** - `/api/v1/health` - **Service Status** - Component health monitoring --- ## 12. Database Technologies ### 12.1 Primary Database - **PostgreSQL 14+** - Metadata storage - User management - Audit logs - Task tracking - Alert management ### 12.2 Database Tools - **psql** - PostgreSQL client - **pg_dump** - Database backup - **pg_restore** - Database restore --- ## 13. Web Technologies ### 13.1 Protocols - **HTTP/1.1** - Web protocol - **HTTPS** - Secure HTTP (with TLS) - **WebSocket** - Real-time communication (planned) ### 13.2 API - **RESTful API** - Resource-based API - **JSON** - Data interchange format --- ## 14. Container & Virtualization (Future) ### 14.1 Container Technologies (Not in V1) - **Docker** - Containerization (future) - **Kubernetes** - Orchestration (future) --- ## 15. Package Management ### 15.1 Backend - **Go Modules** - Dependency management - `go.mod` - `go.sum` ### 15.2 Frontend - **npm** - Node.js package manager - **pnpm** - Fast, disk space efficient package manager --- ## 16. Testing Tools (Development) ### 16.1 Backend Testing - **Go Testing** - Built-in testing framework - **Testify** - Testing toolkit (if used) ### 16.2 Frontend Testing - **Vitest** - Unit testing (with Vite) - **React Testing Library** - Component testing --- ## 17. Documentation Tools ### 17.1 Documentation - **Markdown** - Documentation format - **Mermaid** - Diagram generation (in docs) --- ## 18. Security Tools ### 18.1 Encryption - **TLS/SSL** - Transport layer security - **bcrypt** - Password hashing - **Argon2** - Password hashing (alternative) ### 18.2 Access Control - **JWT** - Token-based authentication - **RBAC** - Role-Based Access Control - **Permission System** - Resource-based permissions --- ## 19. Version Information ### 19.1 Backend Dependencies See `backend/go.mod` for complete list of Go dependencies. ### 19.2 Frontend Dependencies See `frontend/package.json` for complete list of npm dependencies. --- ## 20. External Integrations ### 20.1 System Integrations - **ZFS Commands** - `zpool`, `zfs` - **SCST Commands** - `scstadmin` - **Bacula Commands** - `bconsole` - **MHVTL Commands** - `vtlcmd` - **Systemd Commands** - `systemctl` ### 20.2 File System Integrations - **NFS Exports** - `/etc/exports` - **Samba Config** - `/etc/samba/smb.conf` - **ClamAV Config** - `/etc/clamav/` --- ## 21. Build & Deployment ### 21.1 Build Process - **Go Build** - Compile Go binary - **Vite Build** - Build frontend assets - **Makefile** - Build automation ### 21.2 Deployment - **Systemd Services** - Service deployment - **Installer Scripts** - Automated installation - **Configuration Management** - YAML-based config --- ## Summary ### Core Stack - **Backend:** Go 1.22+ + Gin + PostgreSQL - **Frontend:** React 18 + TypeScript + Vite + TailwindCSS - **Storage:** ZFS + LVM2 + XFS - **File Sharing:** NFS + Samba - **iSCSI:** SCST - **Backup:** Bacula/Bareos - **Tape:** MHVTL + Physical tape tools - **Antivirus:** ClamAV - **Security:** JWT + bcrypt + RBAC ### Technology Categories - **Languages:** Go, TypeScript, JavaScript, SQL, Bash - **Frameworks:** Gin, React, TailwindCSS - **Databases:** PostgreSQL - **Storage:** ZFS, LVM2, XFS - **Networking:** NFS, SMB/CIFS, iSCSI - **Security:** JWT, bcrypt, ClamAV - **Tools:** Git, Make, systemd, journald --- ## Version Matrix | Component | Version | Purpose | |-----------|---------|---------| | Go | 1.22+ | Backend language | | Node.js | 20.x LTS | Frontend runtime | | React | 18.x | Frontend framework | | PostgreSQL | 14+ | Database | | ZFS | Latest | Storage filesystem | | SCST | Latest | iSCSI target | | Bacula | Latest | Backup software | | ClamAV | Latest | Antivirus | | NFS | Latest | Network file sharing | | Samba | Latest | SMB/CIFS file sharing | --- ## Dependencies Count - **Backend Go Dependencies:** ~30+ packages - **Frontend npm Dependencies:** ~300+ packages - **System Packages:** ~50+ packages --- ## License Information Most components use open-source licenses: - **Go:** BSD-style license - **React:** MIT License - **PostgreSQL:** PostgreSQL License - **ZFS:** CDDL License - **ClamAV:** GPL License - **Samba:** GPL License --- ## References - Backend dependencies: `backend/go.mod` - Frontend dependencies: `frontend/package.json` - System requirements: `scripts/install-requirements.sh` - Architecture: `docs/alpha/Calypso_System_Architecture.md` --- **Document History** | Version | Date | Author | Changes | |---------|------|--------|---------| | 1.0 | 2025-01-XX | Development Team | Initial technology stack documentation |