{
  "version": "2",
  "generatedAt": "2026-11-06T20:51:57.517Z",
  "listing": {
    "slug": "solidusio--solidus",
    "name": "Solidus",
    "tagline": "Open-source Rails ecommerce framework with admin, REST API and a starter storefront.",
    "shortTagline": "Open-source Rails ecommerce",
    "description": "Solidus is a set of Ruby gems that add a full ecommerce engine to a Rails app: catalog, orders, payments, shipping, promotions and an admin. A documented REST API ships in the same repo and uses a user API key as a bearer token. You configure it in a Ruby initializer and in admin screens, and extend it with Rails code.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "ecommerce",
    "alternativeTo": [],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "deterministic",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "Ruby",
        "JavaScript"
      ],
      "frameworks": [
        "Ruby on Rails",
        "ViewComponent"
      ],
      "packageManager": "bundler",
      "database": [
        "PostgreSQL",
        "MySQL",
        "SQLite"
      ],
      "hostingTarget": [
        "any Rails host"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/solidusio/solidus",
        "owner": "solidusio",
        "name": "solidus",
        "license": "BSD-3-Clause",
        "stars": 5347,
        "lastCommit": "2026-11-05"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://github.com/solidusio/solidus/tree/main/api",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Manage products, variants and images",
        "reachable": true,
        "evidence": "api/config/routes.rb: resources :products, :variants, :images; OAS /products"
      },
      {
        "job": "Organize taxonomies, taxons, option types and properties",
        "reachable": true,
        "evidence": "routes.rb: resources :taxonomies, :taxons, :option_types, :properties"
      },
      {
        "job": "Create and manage orders",
        "reachable": true,
        "evidence": "routes.rb: resources :orders with line_items, payments, coupon_codes; OAS /orders"
      },
      {
        "job": "Run checkout",
        "reachable": true,
        "evidence": "routes.rb: resources :checkouts; api/openapi/checkout-flow.md"
      },
      {
        "job": "Ship orders and move shipments",
        "reachable": true,
        "evidence": "routes.rb: resources :shipments; OAS /shipments/transfer_to_location"
      },
      {
        "job": "Track inventory and stock locations",
        "reachable": true,
        "evidence": "routes.rb: resources :stock_locations, :stock_items, :stock_movements"
      },
      {
        "job": "Handle returns and customer returns",
        "reachable": true,
        "evidence": "routes.rb: resources :return_authorizations, :customer_returns"
      },
      {
        "job": "Manage users and addresses",
        "reachable": true,
        "evidence": "routes.rb: resources :users with address_book. Store credit is read-only: store_credit_events has only mine"
      },
      {
        "job": "Create promotions",
        "reachable": false,
        "evidence": "routes.rb exposes resources :promotions, only: [:show]; the promotions and legacy_promotions engines route creation only under admin. Coupon codes can be applied to orders, not created"
      },
      {
        "job": "Configure payment methods, shipping methods and tax rates",
        "reachable": false,
        "evidence": "No routes for them in api/config/routes.rb, only zones and stores; set in the admin or the initializer"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/solidusio/solidus"
          },
          {
            "kind": "installable",
            "url": "https://rubygems.org/gems/solidus",
            "command": "bundle add solidus && bin/rails generate solidus:install"
          }
        ]
      },
      {
        "name": "Solidus Cloud",
        "price": null,
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://solidus.io/enterprise"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md or agent instructions file found in the repo tree."
    },
    "customization": {
      "summary": "config/initializers/spree.rb (generated from spree.rb.tt) sets Spree.config preferences such as currency, inventory tracking, image attachment modules, admin logo and static payment credentials read from ENV. Store rules (promotions, shipping, tax, payment methods) live in the admin and database. Storefront changes copy the starter frontend into your app and edit views; new behavior is Rails code or extension gems.",
      "envVars": [
        "SOLIDUS_STRIPE_API_KEY",
        "SOLIDUS_STRIPE_PUBLISHABLE_KEY",
        "SOLIDUS_STRIPE_WEBHOOK_SIGNING_SECRET"
      ],
      "configFiles": [
        "config/initializers/spree.rb"
      ],
      "promptFiles": [],
      "effort": "light-edit",
      "surfaceKind": "admin-ui",
      "editCount": 4
    },
    "useWhen": [
      "you have a Rails team and want a full ecommerce engine you can change, not a hosted shop",
      "you want your agent to manage products and orders through a REST API with an API key"
    ],
    "accounts": [
      "payment provider such as Stripe or PayPal (optional)"
    ],
    "active": true,
    "lastActivity": "2026-11-05",
    "gotchas": [
      "It is a framework: you generate a Rails app, so adapting means Ruby, not config",
      "The API needs a user API key. Keys are generated only for admins by default and shown at admin/users/<id>/edit; sign-in for other users needs solidus_auth_devise or custom code",
      "No MCP server or agent skill; the agent calls the REST API directly",
      "Some extensions that rely on the legacy frontend do not work with the starter storefront"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: Ruby on Rails ecommerce gems with admin and API",
      "executionModel": "no model in the stack",
      "operability": "api/README.md and api/openapi/authentication.md in solidusio/solidus (bearer API key); routes in api/config/routes.rb",
      "effort": "core/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt; storefront/README.md says views are copied into your project",
      "editions": "BSD-3-Clause open source. solidus.io/enterprise offers hosted Solidus Cloud with resource-based pricing and no published price, so price is null",
      "active": "gh api: pushed 2026-11-05; release v4.8.1 on 2026-11-05",
      "license": "LICENSE, solidus.gemspec and the GitHub license API all say BSD-3-Clause on 2026-11-06",
      "install": "guides.solidus.io/getting-started/installing-solidus: bundle add solidus, then bin/rails generate solidus:install"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.95,
      "operability": 0.85,
      "effort": 0.75,
      "reach": 0.9,
      "editions": 0.8,
      "provenance": 0.3
    },
    "openQuestions": [
      "Is the openapi file complete against routes.rb? The OAS lists fewer paths than the routes file.",
      "Solidus Cloud has no published price; the page says to get in touch."
    ],
    "sources": [
      {
        "url": "https://solidus.io/",
        "foundBy": "sourcing:ecommerce:curated"
      },
      {
        "url": "https://github.com/solidusio/solidus/tree/main/api",
        "foundBy": "analysis"
      }
    ],
    "published": true,
    "lastCheckedAt": "2026-11-06",
    "research": {
      "stage": "verified",
      "verdict": "approve",
      "reason": "Verified: BSD-3-Clause, 5.3k stars, security fixes and releases on 2026-11-05, official bearer-key REST API in the same repo. Promotion creation stays unreachable: both promotion engines route it only under admin. Fixed: the license gotcha is stale, store credit is read-only, and hosted Solidus Cloud exists. Effort stays light-edit because the initializer sets some rules but storefront changes mean editing views.",
      "disputed": []
    },
    "url": "apps/solidusio--solidus.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/solidusio--solidus.json"
  }
}
