jam-cloud/.planning/codebase/STACK.md

4.3 KiB

Technology Stack

Analysis Date: 2026-01-11

Languages

Primary:

  • Ruby 2.4.1 (pinned for production, with noted upgrade path to 2.5+) - All service Gemfiles
  • JavaScript/React - Frontend application code in jam-ui/src/
  • Protocol Buffers (proto3) - Real-time messaging definitions in pb/src/client_container.proto

Secondary:

  • TypeScript 3.9.10 (dev dependency) - jam-ui/package.json, used for type checking
  • Python - Utility scripts in web/script/py/

Runtime

Environment:

  • Node.js 14.21.3 - jam-ui/.nvmrc
  • Ruby 2.4.1 (production), Ruby 2.3.1 (legacy compatibility) - Multiple service Gemfiles
  • PostgreSQL database server

Package Manager:

  • npm - jam-ui/package.json (React frontend)
  • Bundler 1.17.3 - Ruby gem management (Gemfile.alt for Silicon/M1 Macs with MODERN_OS=1 flag)
  • Lockfiles: package-lock.json (npm), Gemfile.lock (bundler), Gemfile.alt.lock (M1 Macs)

Frameworks

Core:

  • Rails 4.2.8 - Backend API framework (web/Gemfile, admin/Gemfile, websocket-gateway/Gemfile)
  • React 16.13.1 - Frontend SPA framework (jam-ui/package.json)
  • React Router DOM 5.2.0 - Client-side routing
  • Redux Toolkit 1.6.1 - State management (jam-ui/src/store/)
  • EventMachine 1.0.4/1.2.3 - Async I/O for WebSocket gateway

Testing:

  • Jest - Unit testing for React (inferred from test patterns)
  • Playwright 1.40.0 - E2E testing (jam-ui/package.json, jam-ui/playwright.config.ts)
  • RSpec 2.11 - Ruby testing framework (ruby/Gemfile, test specs in */spec/)
  • Jasmine - Legacy JavaScript tests (web/spec/javascripts/karma.conf.js)
  • Capybara 2.13.0 - Browser automation for Rails tests

Build/Dev:

  • React Scripts 3.4.3 (Create React App) - jam-ui/package.json
  • Webpack CLI 4.10.0 - Module bundling
  • Gulp 4.0.2 - SCSS compilation (jam-ui/package.json)
  • Sprockets 3.6.3 - Rails asset pipeline (all Rails services)
  • Babel - JavaScript transpilation (via React Scripts)

Key Dependencies

Critical:

  • ruby-protocol-buffers 1.2.2 - WebSocket message serialization (all service Gemfiles)
  • Devise 3.3.0 - User authentication (all Rails services)
  • ActiveRecord 4.2.8 - ORM for PostgreSQL (ruby/Gemfile)
  • Resque - Background job processing (ruby/Gemfile, web/Gemfile, admin/Gemfile)
  • amqp gem - RabbitMQ messaging (ruby/Gemfile, web/Gemfile, websocket-gateway/Gemfile)

Infrastructure:

  • PostgreSQL adapter (pg 0.17.1/0.21.0) - Database connectivity
  • Redis (redis gem 3.3.0/3.3.3) - Job queue and session storage
  • CarrierWave 0.9.0/0.11.2 - File upload handling with S3 support
  • aws-sdk ~1 - AWS S3 integration for file storage

Frontend UI:

  • Bootstrap 4.5.3 - CSS framework
  • Reactstrap 8.6.0 - Bootstrap React components
  • Font Awesome 5.15.1 - Icon library
  • Howler.js 2.2.4 - Audio playback
  • Chart.js 2.9.3, ECharts 4.9.0 - Data visualization
  • FullCalendar 5.3.1 - Calendar UI
  • Leaflet 1.7.1 - Maps integration
  • React Hook Form 7.11.1 - Form handling
  • i18next 21.3.3 - Internationalization

Payment/Billing:

  • Stripe (via stripe gem) - Payment processing
  • PayPal SDK (paypal-sdk-merchant-jk 1.118.1) - PayPal integration
  • Recurly 2.19.14 - Subscription management

Configuration

Environment:

  • .env files for environment-specific config - jam-ui/.env.development, .env.staging, .env.production
  • Rails environments - web/config/environments/*.rb
  • Application config - web/config/application.rb (534 lines of configuration)
  • Initializers - web/config/initializers/ (26+ initialization files)

Build:

  • tsconfig.json - TypeScript compiler options (if TypeScript used)
  • jam-ui/package.json - Node dependencies and scripts
  • Gemfiles - Ruby dependencies for each service
  • .prettierrc - Code formatting (jam-ui/)
  • .eslintrc.json - JavaScript linting (jam-ui/)

Platform Requirements

Development:

  • macOS/Linux/Windows with Node.js 14.21.3
  • Ruby 2.4.1 (or 2.3.1 for legacy)
  • PostgreSQL server
  • Redis server (for Resque)
  • RabbitMQ server (for AMQP messaging)
  • Local hosts configuration: www.jamkazam.local (Rails), beta.jamkazam.local (React)

Production:

  • Linux server environment
  • PostgreSQL production database
  • Redis for job queuing
  • RabbitMQ for async messaging
  • AWS S3 for file storage with CloudFront CDN
  • WebSocket gateway server with EventMachine

Stack analysis: 2026-01-11 Update after major dependency changes