Skip to content

christag/moss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

M.O.S.S.

Material Organization & Storage System

An open-source IT asset management and documentation platform for comprehensive hardware, software, and network infrastructure tracking.


Overview

M.O.S.S. is a modern alternative to other IT inventory products, built specifically for IT departments managing complex infrastructure including traditional IT equipment, broadcast/AV systems, and cloud services. It provides a single source of truth for all IT assets, their relationships, and documentation.

Key Features

  • Comprehensive Asset Tracking: Manage devices, software, SaaS services, licenses, and contracts
  • Network Topology Mapping: Visualize network infrastructure from physical interface relationships
  • Universal Interface Model: Track all connection types (network, broadcast, power, data) in a single unified system
  • Relationship-First Design: Maintain complex relationships between devices, people, software, networks, and locations
  • Role-Based Access Control: Granular permissions with global, location-based, and object-specific scoping
  • Modular Equipment Support: Parent-child relationships for chassis-based systems with independent warranty tracking
  • Admin Settings Panel: Comprehensive system configuration dashboard for branding, authentication, storage, integrations, and more

Quick Start

Prerequisites

  • For Docker Deployment (Recommended):

    • Docker 20.10+
    • Docker Compose 2.0+
  • For Development:

    • PostgreSQL 14+
    • Node.js 18+
    • Modern browser (Chrome, Firefox, Safari, Edge)

Docker Deployment (Production)

Deploy using pre-built images from GitHub Container Registry:

# Clone the repository
git clone https://github.com/yourusername/moss.git
cd moss

# Create production environment file
cp .env.production.example .env.production
# Edit .env.production with your settings (see Docker Deployment Guide)

# Pull and start services
docker compose -f docker-compose.prod.yml --env-file .env.production pull
docker compose -f docker-compose.prod.yml --env-file .env.production up -d

# View logs
docker compose -f docker-compose.prod.yml logs -f app

The application will be available at http://localhost:3000 (or your configured domain).

📚 Full Docker Deployment Guide: See docs/docker-deployment.md for complete instructions including:

  • Using pre-built images from GHCR
  • Environment configuration
  • Reverse proxy setup
  • Backup and restore
  • Upgrading and monitoring

Local Development

# Clone the repository
git clone https://github.com/yourusername/moss.git
cd moss

# Install dependencies
npm install

# Configure environment (optional - defaults work for local PostgreSQL)
cp .env.example .env
# Edit .env with your database credentials if needed

# Start development server
npm run dev

The application will be available at http://localhost:3001

On first launch, visit /setup to complete the initialization wizard. The setup will:

  1. Automatically create the database
  2. Create all tables and schema
  3. Guide you through creating your admin account
  4. Set up your primary organization

No manual database setup required! The setup wizard handles everything automatically.


Core Concepts

Universal IO Object

All interfaces, ports, and connectors are tracked through a single ios table that handles:

  • Network: Ethernet, fiber, WiFi with VLAN tagging support
  • Broadcast: SDI, HDMI, XLR, Coax for AV equipment
  • Power: AC/DC inputs and outputs for power topology
  • Data: USB, Thunderbolt, DisplayPort connections

This unified approach enables comprehensive topology mapping across different connection types.

Template-Driven UI

Rather than unique screens for each object type, M.O.S.S. uses three reusable templates:

  • Generic List View: Browse and filter any standard object type
  • Generic Detail View: View/edit complete information with relationship tabs
  • Generic Form: Create or edit any standard object

Specialized views are only created for unique workflows (network topology, IP management, RBAC configuration).

Modular Equipment

Devices can have parent-child relationships to represent:

  • Chassis-based systems (switches with line cards, blade servers)
  • Rack-mounted equipment with independent modules
  • Each child module maintains its own warranty, serial number, and lifecycle data

Data Model

M.O.S.S. manages 16 core object types across 4 categories, all with full CRUD operations, relationship tracking, and enhanced table views.

Core Objects (Physical Infrastructure & People)

Object Purpose Key Features
Company Organizations (your company, vendors, manufacturers, partners) 7 company types, 16 fields including billing/technical contacts
Location Physical sites and facilities 5 location types, timezone support, address fields
Room Spaces within locations (offices, server rooms, studios) Floor/capacity tracking, access requirements
Person All people (employees, contractors, vendor contacts) Manager hierarchy, 14 fields, organizational structure
Device All hardware assets with parent-child support 17 device types, chassis/module relationships, warranty tracking
IO Universal interface/port/connector object Network, broadcast, power, data connections with VLAN tagging
Network Network segments with VLAN configuration DHCP management, subnet tracking, DNS servers
IPAddress IP address assignments and allocation IPv4/IPv6, static/DHCP/reserved types

Software & Services

Object Purpose Key Features
Software Product catalog (independent of deployments) Vendor tracking, version management, categories
SaaSService Cloud service instances with SSO/SCIM tracking Environment types (prod/staging/dev), criticality levels, API configuration
InstalledApplication Deployed software via MDM/GPO Deployment status, version tracking, device/group assignments
SoftwareLicense License tracking with seat counts Seat management, expiration tracking, cost tracking

Access Control & Groups

Object Purpose Key Features
Group All group types (AD, Okta, Jamf, Intune, custom) 8 group types, external ID syncing, member management
Role RBAC role definitions Hierarchical inheritance via parent_role_id, 64 permissions (16 objects × 4 actions)
Permission Granular permission definitions Object-type and action-based (view, edit, delete, manage_permissions)
RoleAssignment User/group-to-role mappings with scoping Global, location-based, or object-specific scope
ObjectPermission Object-level permission overrides Grant/deny permissions on specific items

Documentation & Contracts

Object Purpose Key Features
Document Internal documentation (policies, runbooks, SOPs) Markdown editor, multi-object associations, version tracking
ExternalDocument Links to external systems (password vaults, wikis, tickets) Multi-object associations, URL tracking
Contract Vendor agreements with renewal tracking Renewal dates, cost tracking, multi-company associations

Admin & System Settings

Object Purpose Key Features
SystemSetting Key-value configuration store Branding, auth backend, storage backend, SMTP settings
Integration External system connections IdP, MDM, RMM, cloud providers, ticketing systems
IntegrationSyncLog Audit trail of synchronization operations Success/failure tracking, record counts, error messages
CustomField User-defined fields for extensibility Per-object-type field definitions with validation rules
AdminAuditLog Complete audit trail of administrative actions Before/after values, IP tracking, timestamp logging

Architecture

Technology Stack

  • Database: PostgreSQL with UUID primary keys
  • Backend: Next.js API Routes with REST conventions
  • Frontend: React 19 + Next.js 15 (App Router)
  • Language: TypeScript (strict mode)
  • Styling: Custom design system CSS
  • Validation: Zod schemas
  • Testing: Jest + React Testing Library
  • Hosting: Cloudflare Pages/Workers (planned)
  • Storage: Cloudflare R2 for file uploads (planned)

Design System

  • Font: Inter family
  • Base Size: 18px with 1.25 scale ratio
  • Primary Colors: Morning Blue (#1C7FF2), Brew Black (#231F20), Off White (#FAF9F5)
  • Secondary Colors: Green (#28C077), Lime Green (#BCF46E), Light Blue (#ACD7FF), Orange (#FD6A3D), Tangerine (#FFBB5C)
  • Grid: Symmetrical columns with margin = 1/4 column width, gutter = 1/2 margin width

See styles/design-system.css for complete implementation.


Documentation

Planning & Architecture Documents

M.O.S.S. includes comprehensive planning documentation to guide development and onboarding:

  • CLAUDE.md - Primary development guide for AI assistants (Claude Code)

    • Project overview and key design principles
    • Development workflow and testing requirements
    • Container management (macOS-specific instructions)
    • Quick reference for database, UI, and admin architecture
  • CLAUDE-TODO.md - Active task tracking and session summaries

    • UAT remediation status and defect tracking
    • Phase-by-phase task completion tracking
    • Session documentation for continuity
  • planning/database-architecture.md - Complete database documentation

    • Schema design and relationships
    • Query patterns and examples
    • Foreign key relationships and constraints
    • Junction table usage
  • planning/ui-specifications.md - UI/UX standards

    • Page structure patterns (list, detail, form)
    • Component architecture (GenericListView, GenericDetailView, GenericForm)
    • Relationship navigation patterns
    • Responsive design breakpoints
  • planning/designguides.md - Design system rules

    • Color palette (primary and secondary colors)
    • Typography system (Inter font, type scale)
    • Grid system and spacing
    • Accessibility standards (WCAG 2.1 AA)
  • planning/admin-panel-architecture.md - Admin settings panel

    • 11 configuration sections
    • System settings architecture
    • Integration management
    • Audit logging system
  • planning/rbac-implementation.md - RBAC system details

    • Hierarchical roles and permission inheritance
    • Permission checking logic
    • Role assignment scoping
    • Object-level permission overrides
    • API endpoints and usage examples
  • planning/prd.md - Product requirements document

    • Use cases and user stories
    • Feature specifications
    • Success metrics

Development Guides


Roadmap

Phase 0: Foundation ✅ COMPLETED

  • Database schema design with UUID primary keys
  • Design system implementation (Morning Blue color scheme)
  • Next.js 15 + React 19 + TypeScript setup
  • ESLint + Prettier configuration
  • Git hooks with Husky
  • Jest testing framework
  • Core UI component library (Button, Input, Select, Textarea, Checkbox, Badge, Card)
  • Database connection utilities
  • API response utilities
  • Request validation with Zod
  • Database migrations system
  • Database rebuild script

Phase 1: Core Features (MVP) ✅ COMPLETED

  • All 16 core object types with full CRUD (Companies, Locations, Rooms, People, Devices, Groups, Networks, IOs, IP Addresses, Software, SaaS Services, Installed Applications, Software Licenses, Documents, External Documents, Contracts)
  • Relationship management (companies → locations → rooms → devices → people)
  • Enhanced tables with column management, sorting, and per-column filtering
  • Groups and group membership
  • Networks and network topology (VLAN configuration, IO-to-IO connectivity)
  • IOs (interfaces/ports) with universal connectivity tracking
  • IP address management (IPv4/IPv6, static/DHCP/reserved)
  • Software catalog and SaaS services with SSO/SCIM configuration
  • License management with seat tracking
  • Documents with Markdown editor
  • External documents (links to external systems)
  • Contracts with renewal tracking
  • Authentication (NextAuth.js v5 with credentials provider)
  • Admin panel (11 sections: Overview, Branding, Storage, Authentication, Integrations, Fields, RBAC, Import/Export, Audit Logs, Notifications, Backup)
  • Enhanced RBAC with hierarchical roles, permission inheritance, and object-level permissions
  • Dashboard with widgets (recent activity, quick stats, expiring warranties/licenses/contracts)
  • Global search across all objects
  • Security hardening (XSS protection, SQL injection prevention, rate limiting)
  • Accessibility improvements (WCAG 2.1 AA compliance - Phases 1-4)
  • Production readiness (UAT testing, 95/100 score)

Phase 2: Advanced Features 🔜 NEXT UP

High Priority:

  • Network topology visualization (interactive graph using D3.js or Cytoscape.js)
  • IP address management with subnet visualization
  • Bulk import/export (CSV with field mapping)
  • File attachments (documents, device photos, diagrams)
  • Custom reports and dashboards
  • Advanced search with saved filters

Medium Priority:

  • Complete remaining frontend testing (15 objects - currently 6% coverage)
  • Optimize complex JOIN queries with composite indexes
  • Add negative warranty validation
  • Fix dashboard widget errors (expiring warranties/licenses)
  • Add missing foreign key indexes (15 identified)

Low Priority:

  • Power topology visualization
  • Broadcast signal flow mapping
  • Custom fields UI implementation
  • Notification system (email alerts for expiring warranties/licenses)

Completed (Phase 2.10):

  • UI Polish & Animations (Framer Motion integration, page transitions, micro-interactions, loading states) - Completed 2025-10-25

Phase 3: Automation & Integration 📅 FUTURE

Authentication & Authorization:

  • SAML 2.0 authentication with SCIM integration (Okta, Azure AD, Google Workspace)
  • User and admin provisioning via SCIM
  • Role synchronization from identity provider
  • Group membership sync
  • Automated user lifecycle management
  • Multi-factor authentication (TOTP, WebAuthn)

API & LLM Integration:

  • OpenAPI-compatible REST endpoints for ChatGPT integration
  • MCP (Model Context Protocol) SSE/HTTP server with OAuth2
  • Support for Claude and other LLM clients
  • Structured data access for AI assistants
  • Context-aware API documentation
  • GraphQL API (optional)

External Integrations:

  • Active Directory sync (user/group import)
  • MDM integration (Jamf, Intune, Google Workspace)
  • Cloud provider APIs (AWS, Azure, GCP for auto-discovery)
  • SNMP/SSH polling for network devices
  • Automated warranty/license expiration alerts
  • Webhook support for external systems
  • Ticketing system integration (Jira, ServiceNow)
  • Password vault integration (1Password, Bitwarden)

Use Cases

Network Troubleshooting

  1. Search for user → view assigned device
  2. View device network interfaces with IP addresses
  3. Click interface → view connected switch port
  4. View VLAN configuration and trunk mode
  5. Trace to upstream router interface
  6. Generate visual topology to identify misconfiguration

License Audit

  1. Search for software (e.g., "Adobe Creative Cloud")
  2. View SaaS service showing total licensed seats
  3. Review assigned users and group memberships
  4. Identify unused licenses
  5. Right-size contract or reclaim licenses

Power Redundancy Planning

  1. View all UPS devices in data center location
  2. For each UPS, view powered devices via power IOs
  3. Calculate total wattage per UPS
  4. Identify single-PSU devices (risk)
  5. Plan redundant power paths
  6. Generate power topology diagram

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

# Install dependencies
npm install

# Run database migrations
npm run db:migrate

# Run tests
npm test

# Lint code
npm run lint

# Format code
npm run format

Code Style

  • Follow the established design system for all UI components
  • Use TypeScript for type safety
  • Write tests for new features
  • Update documentation for API changes

License

GNU Affero General Public License v3.0 (AGPL-3.0)

M.O.S.S. is free and open-source software licensed under AGPL-3.0. You are free to use, modify, and distribute this software under the following conditions:

  • Free for internal business use - IT departments can deploy and use M.O.S.S. within their organizations
  • Free for personal use - Individuals can use M.O.S.S. for personal projects
  • Modifications must be shared - If you modify the code and run it as a service, you must share your changes
  • No commercial SaaS reselling - You cannot sell M.O.S.S. as a hosted service to others

The AGPL-3.0 ensures that M.O.S.S. remains free and open-source, while preventing commercial exploitation through SaaS offerings.

See LICENSE for full legal terms


Acknowledgments

  • Named for Maurice Moss from The IT Crowd
  • Design themes based on Morning Brew

Support


Status

Current Version: Pre-production (Phase 1 Complete, Production Hardening Complete, UI Polish Complete) Production Readiness Score: 95/100 ✅ CLEARED FOR PRODUCTION LAUNCH

Latest Updates (2025-10-25)

UI Polish & Animations Complete!

Comprehensive animation system implemented across M.O.S.S. using Framer Motion with 100% UAT pass rate (10/10 tests). All animations respect accessibility preferences and maintain 60 FPS performance.

New Features:

  • Animation Infrastructure: Config, presets, utils, and hooks for consistent animations
  • New Components: PageTransition, AnimatedList, Skeleton (4 variants), ProgressBar, Modal
  • Enhanced Components: Button (hover/tap), Card (lift), Input (shake on error), Checkbox (spring)
  • Dashboard: Count-up animations for statistics
  • Documentation: Complete animation guidelines (823 lines)

Key Achievements:

  • 9 reusable animation presets (fadeIn, slideUp, scaleUp, etc.)
  • Full reduced motion support (prefers-reduced-motion)
  • GPU-accelerated animations only (transform, opacity)
  • Standard durations: Fast (150ms), Normal (250ms), Slow (400ms)
  • Zero build errors or warnings

Previous Updates (2025-10-12)

🚀 Production Readiness Achieved!

The system has undergone comprehensive UAT testing with 88.7% pass rate (197/222 tests) and achieved a 95/100 Production Readiness Score. All critical (P0) and high-priority (P1) defects have been resolved.

UAT Round 2 Remediation Complete

  • Phase 1 (P0 Critical): 3/3 defects resolved in 2.25 hours
    • Rate limiting implemented (DoS protection)
    • Hostname uniqueness constraints enforced
    • People API schema mismatch fixed
  • Phase 2 (P1 High Priority): 2/2 defects resolved in 0.5 hours
    • Parent-child device creation working
    • Legacy XSS data verified clean (0 instances)
  • Total: 5/5 critical defects resolved, 69% under time estimate

Security Hardening Complete

  • XSS protection with input sanitization library
  • SQL injection prevention with parameterized queries
  • Rate limiting on all API endpoints (auth, API, admin, public routes)
  • CSRF protection via NextAuth.js
  • Secure password hashing with bcrypt

All 16 Core Objects Production-Ready

  1. Companies - Multi-type organizations (customer, vendor, partner, manufacturer, MSP, ISV, carrier)
  2. Locations - Physical sites with timezone support (datacenter, office, warehouse, retail, remote)
  3. Rooms - Spaces within locations with floor/capacity tracking
  4. People - Manager hierarchy, contact info, organizational structure
  5. Devices - 17 device types with parent-child relationships (chassis/modules)
  6. Groups - 8 group types (AD, Okta, Jamf, Intune, Google Workspace, generic LDAP, SCIM, custom)
  7. Networks - VLAN configuration, subnet tracking, DHCP management
  8. IOs (Interfaces/Ports) - Universal connectivity tracking (network, broadcast, power, data)
  9. IP Addresses - IPv4/IPv6 support, static/DHCP/reserved types
  10. Software - Product catalog with vendor/category tracking
  11. SaaS Services - Cloud services with SSO/SCIM/API configuration
  12. Installed Applications - Deployment tracking via MDM/GPO
  13. Software Licenses - License tracking with seat management
  14. Documents - Internal documentation with Markdown editor
  15. External Documents - Links to external systems (password vaults, wikis, ticketing)
  16. Contracts - Vendor agreements with renewal tracking

Enhanced RBAC System (Implemented 2025-10-12)

  • Hierarchical roles with permission inheritance via parent_role_id
  • 16 object types × 4 actions (view, edit, delete, manage_permissions) = 64 permissions
  • Role assignments with scoping (global, location-based, object-specific)
  • Object-level permission overrides
  • Permission testing tool for debugging
  • In-memory cache with 5-minute TTL and automatic invalidation
  • Circular hierarchy prevention in database

Admin Settings Panel

  • 11 configuration sections (Overview, Branding, Storage, Authentication, Integrations, Fields, RBAC, Import/Export, Audit Logs, Notifications, Backup)
  • Super admin-only routes for sensitive settings
  • Comprehensive audit logging of all admin actions
  • Custom field support per object type

Authentication & Authorization

  • NextAuth.js v5 integration with credentials provider
  • Bcrypt password hashing
  • Session management with 30-day expiration
  • Protected routes with middleware
  • User-to-person relationship (1:1 mapping)
  • Three role levels: user, admin, super_admin

Enhanced UI/UX Features

  • Enhanced Tables: All list pages with column management, sorting, per-column filtering
  • Dropdown Navigation: Organized menu structure (Places, Assets, IT Services, Docs & Contracts)
  • Active State Highlighting: Visual indication of current page
  • Relationship Panels: Quick links to related objects
  • Status Badges: Consistent design system colors
  • Accessibility: WCAG 2.1 AA compliant (Phases 1-4 complete)
  • Mobile-First Design: Responsive layouts for all devices

Performance & Quality

  • All database queries under 200ms (10x faster than 2s target)
  • Enhanced table views optimized for large datasets
  • Database indexes on all foreign keys
  • Hostname uniqueness constraints
  • API test pass rate: 93% (56/60 tests)

Foundation Complete

  • Next.js 15 + React 19 with App Router
  • PostgreSQL database with complete schema and constraints
  • Design system implementation (Morning Blue, Brew Black, Off White)
  • Core UI component library
  • API infrastructure with Zod validation
  • Playwright MCP integration for automated testing
  • Database rebuild script
  • Database migrations system

Key Features Working:

  • Full CRUD operations for all 16 core object types
  • Search and filtering on all list pages
  • Enhanced table views with column management
  • Relationship tracking (companies → locations → rooms → devices → people)
  • Detail pages with multiple tabs (Overview, Relationships, History)
  • Create/edit forms with real-time validation
  • Delete with confirmation and dependency checking
  • Parent-child device relationships (chassis/line cards)
  • Network topology tracking (IO-to-IO connectivity)
  • Software license seat management
  • SSO/SCIM configuration for SaaS services
  • Dashboard with widgets (recent activity, quick stats, expiring warranties/licenses/contracts)
  • Global search across all objects
  • Enhanced RBAC with hierarchical roles and object-level permissions

Production Launch Status:

  • Internal MVP: Ready for deployment
  • Public Beta: Ready with monitoring (Phases 1+2 complete)
  • ⚠️ Production Optimization: Optional (Phases 3-5 remaining)
    • Phase 3 (P2 - Medium Priority): 4 defects, 4-6 hours (warranty validation, indexes, dashboard errors)
    • Phase 4 (P3 - Low Priority): 2 defects, 1 hour (documentation updates)
    • Phase 5 (Frontend Testing): Test remaining 15 objects (currently 6% coverage - companies only)

Next Steps (Optional - Post-Launch):

  1. Complete remaining frontend testing (15 objects)
  2. Add negative warranty validation
  3. Optimize complex JOIN queries
  4. Fix dashboard widget errors
  5. Add missing foreign key indexes

See CLAUDE-TODO.md for detailed UAT results and remediation tracking.

About

An open-source IT asset management and documentation platform for comprehensive hardware, software, and network infrastructure tracking.

Resources

License

Stars

Watchers

Forks

Contributors