Skip to content

SSM Tech Stack Overview

Squirrel Servers Manager (SSM) is built with a modern, scalable, and maintainable technology stack. This page details the core technologies and patterns used in both the server and client applications.

🖥️ Server (Backend)

  • Framework: NestJS (TypeScript, modular, dependency injection)
  • API: REST & WebSocket (Socket.IO)
  • ORM/Database: Mongoose (MongoDB ODM)
  • Task Queue: Bull (Redis-backed job queue)
  • Authentication: Passport.js (JWT, Bearer, custom strategies)
  • Configuration: dotenv, @nestjs/config
  • Validation: class-validator, Joi
  • Logging: pino, nestjs-pino, pino-mongodb
  • Container Management: dockerode, dockerode-compose
  • Ansible Integration: Python subprocess, custom Ansible runner
  • Monitoring: prom-client, prometheus-query
  • Other Integrations: AWS ECR SDK, Redis, PostHog analytics
  • Testing: Vitest, Supertest, Testcontainers, Python unittest (for Ansible)
  • Code Quality: ESLint, Prettier, strict TypeScript config
  • Architecture:
    • Clean architecture: domain, application, infrastructure, presentation
    • Modular: src/modules/* for features, src/infrastructure/* for adapters
    • DTOs, interfaces, and dependency injection throughout

🖥️ Client (Frontend)

  • Framework: React 18 (TypeScript)
  • UI Library: Ant Design Pro, Ant Design 5
  • State & Routing: UmiJS Max, plugin-based routing
  • Charts & Visualization: @ant-design/charts, @antv/g2plot
  • Code Editor: Monaco Editor (with YAML/JSON support)
  • Drag & Drop: @dnd-kit/core
  • Terminal Emulation: xterm.js
  • Animation: framer-motion, rc-banner-anim, rc-tween-one
  • Internationalization: UmiJS i18n
  • Testing: Vitest, Testing Library, Jest
  • Code Quality: ESLint, Prettier, strict TypeScript config
  • Architecture:
    • Modular: src/pages/* for routes, src/components/* for UI, src/services/* for API
    • Plugin system: src/plugins/*
    • Shared types and utilities in src/types, src/utils

🔗 Shared Library

  • Location: shared-lib/ (imported by both server and client)
  • Purpose: Shared types, API contracts, and utilities for type-safe integration

This stack enables SSM to deliver a robust, extensible, and user-friendly experience for both administrators and developers. For more details, see the codebase or reach out on Discord.

Next step

🧩
Plugin Development

Learn how to extend SSM with custom plugins.

Made with love