{"id":13394947,"url":"https://github.com/solidusio/solidus","last_synced_at":"2025-11-11T11:39:00.259Z","repository":{"id":27505392,"uuid":"30985840","full_name":"solidusio/solidus","owner":"solidusio","description":"🛒 Solidus, the open-source eCommerce framework for industry trailblazers.","archived":false,"fork":false,"pushed_at":"2025-05-09T16:15:11.000Z","size":107502,"stargazers_count":5145,"open_issues_count":125,"forks_count":1334,"subscribers_count":121,"default_branch":"main","last_synced_at":"2025-05-11T05:49:28.786Z","etag":null,"topics":["ecommerce","ecommerce-framework","ecommerce-platform","hacktoberfest","rails","ruby","solidus","storefront"],"latest_commit_sha":null,"homepage":"https://solidus.io","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solidusio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"solidus"}},"created_at":"2015-02-18T20:41:58.000Z","updated_at":"2025-05-10T10:03:18.000Z","dependencies_parsed_at":"2024-03-27T13:22:17.659Z","dependency_job_id":"3988c7f5-9899-41bc-98c9-d58959cddff9","html_url":"https://github.com/solidusio/solidus","commit_stats":{"total_commits":23398,"total_committers":1016,"mean_commits":23.02952755905512,"dds":0.8273784084109753,"last_synced_commit":"89730ee488fe83d8e69dd039f5ca4bed3ab1fdbf"},"previous_names":[],"tags_count":210,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidusio%2Fsolidus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidusio%2Fsolidus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidusio%2Fsolidus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solidusio%2Fsolidus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solidusio","download_url":"https://codeload.github.com/solidusio/solidus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253523734,"owners_count":21921819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecommerce","ecommerce-framework","ecommerce-platform","hacktoberfest","rails","ruby","solidus","storefront"],"created_at":"2024-07-30T17:01:37.070Z","updated_at":"2025-11-03T17:35:00.741Z","avatar_url":"https://github.com/solidusio.png","language":"Ruby","readme":"\u003cimg width=\"250\" src=\"./logo.svg\" alt=\"Solidus logo\"\u003e\n\n# Solidus\n\n[![Test](https://github.com/solidusio/solidus/actions/workflows/test.yml/badge.svg)](https://github.com/solidusio/solidus/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/solidusio/solidus/branch/main/graph/badge.svg)](https://codecov.io/gh/solidusio/solidus/branch/main)\n[![Gem](https://img.shields.io/gem/v/solidus.svg)](https://rubygems.org/gems/solidus)\n[![License](http://img.shields.io/badge/license-BSD-blue.svg)](LICENSE.md)\n\n[![Supporters on Open Collective](https://opencollective.com/solidus/tiers/supporter/badge.svg?label=Supporters\u0026color=brightgree)](https://opencollective.com/solidus)\n[![Bronze Partners on Open Collective](https://opencollective.com/solidus/tiers/bronze/badge.svg?label=Bronze\u0026nbsp;Partners\u0026color=brightgree)](https://opencollective.com/solidus)\n[![Silver Partners on Open Collective](https://opencollective.com/solidus/tiers/silver/badge.svg?label=Silver\u0026nbsp;Partners\u0026color=brightgree)](https://opencollective.com/solidus)\n[![Gold Partners on Open Collective](https://opencollective.com/solidus/tiers/gold/badge.svg?label=Gold\u0026nbsp;Partners\u0026color=brightgree)](https://opencollective.com/solidus)\n[![Open Source Helpers](https://www.codetriage.com/solidusio/solidus/badges/users.svg)](https://www.codetriage.com/solidusio/solidus)\n[![Slack](https://shields.io/badge/slack-start_chatting-blue?logo=slack)](http://slack.solidus.io)\n\n**A free, open-source e-commerce platform that gives you complete control over your store.**\n\n- **Visit our website**: [https://solidus.io/](https://solidus.io/)\n- **Read our Community Guidelines**: [https://guides.solidus.io/policies/community-guidelines/](https://guides.solidus.io/policies/community-guidelines/)\n- **View the project roadmap**: [https://github.com/orgs/solidusio/projects/7](https://github.com/orgs/solidusio/projects/7)\n- **Read our guides**: [https://guides.solidus.io/](https://guides.solidus.io/)\n- **Join our Slack**: [http://slack.solidus.io/](http://slack.solidus.io/)\n- **Solidus Security**: [mailing list](https://groups.google.com/forum/#!forum/solidus-security)\n\n## Table of Contents\n- [Supporting Solidus](#supporting-solidus)\n- [Summary](#summary)\n- [Demo](#demo)\n- [Getting Started](#getting-started)\n- [Installation Options](#installation-options)\n- [Performance](#performance)\n- [Developing Solidus](#developing-solidus)\n- [Contributing](#contributing)\n\n## Supporting Solidus\nAs a community-driven project, Solidus relies on funds and time donated by developers and stakeholders who use Solidus for their businesses. If you'd like to help Solidus keep growing, please consider:\n\n- [Become a backer or sponsor on Open Collective](https://opencollective.com/solidus).\n- [Contribute to the project](https://github.com/solidusio/.github/blob/main/CONTRIBUTING.md).\n\n### Main Contributor \u0026 Director\nAt present, Nebulab is the main code contributor and director of Solidus, providing technical guidance and coordinating community efforts and activities.\n\n[![Nebulab](https://raw.githubusercontent.com/solidusio/brand/master/partners/Nebulab/logo-dark-light.svg)](https://nebulab.com/)\n\n### Ambassadors\nSupport this project by becoming a Solidus Ambassador. Your logo will show up here with a link to your website. [Become an Ambassador](https://opencollective.com/solidus).\n\n[![Super Good Software](https://raw.githubusercontent.com/solidusio/brand/master/partners/SuperGood/logo-dark-light.png)](https://supergood.software/)\n\n---\n\n## Summary\n\nSolidus is a complete open source e-commerce solution built with Ruby on Rails.\nIt is a fork of [Spree](https://spreecommerce.org).\n\nSee the [Solidus class documentation](http://docs.solidus.io) and the [Solidus\nGuides](https://guides.solidus.io) for information about the functionality that\nSolidus provides.\n\nSolidus consists of several gems. When you require the `solidus` gem in your\n`Gemfile`, Bundler will install all of the following gems:\n\n- [`solidus_api`](https://github.com/solidusio/solidus/tree/master/api) (RESTful API)\n- [`solidus_backend`](https://github.com/solidusio/solidus/tree/master/backend) (Admin area)\n- [`solidus_core`](https://github.com/solidusio/solidus/tree/master/core) (Essential models, mailers, and classes)\n- [`solidus_sample`](https://github.com/solidusio/solidus/tree/master/sample) (Sample data)\n\nAll of the gems are designed to work together to provide a fully functional\ne-commerce platform. However, you may only want to use the\n[`solidus_core`](https://github.com/solidusio/solidus/tree/master/core) gem\ncombine it with your own custom frontend, admin interface, and API.\n\n## Demo\n\nYou can try the live Solidus demo [here.](http://demo.solidus.io/) The admin section can be accessed [here.](http://demo.solidus.io/admin)\n\n## Getting started\n\nBegin by making sure you have\n[Imagemagick](http://imagemagick.org/script/download.php) installed, which is\nrequired for Paperclip. (You can install it using [Homebrew](https://brew.sh) if\nyou're on a Mac.)\n\nTo add Solidus, begin with a newly created Rails application with its database.\n\n```bash\nrails new my_store\n```\n\n\u003e [!CAUTION]\n\u003e Due to [a bug in `sprockets-rails`](https://github.com/rails/sprockets-rails/pull/546) we need to manually add the sprockets manifest into the generated rails app **before** running any rails commands inside the rails app folder.\n\n```bash\nmkdir -p my_store/app/assets/config\ncat \u003c\u003cMANIFEST \u003e my_store/app/assets/config/manifest.js\n//= link_tree ../images\n//= link_directory ../javascripts .js\n//= link_directory ../stylesheets .css\nMANIFEST\n```\n\n### Installing Solidus\n\nIn your application's root folder run:\n\n```bash\nbundle add solidus\nbin/rails g solidus:install\n```\n\n\u003e [!NOTE]\n\u003e Please make sure to generate the sprockets manifest before running the `solidus:install` generator.\n\nAnd follow the prompt's instructions.\n### Accessing Solidus Store\n\nStart the Rails server with the command:\n\n```bash\nbin/rails s\n```\n\nThe storefront will be accessible at\n[http://localhost:3000/](http://localhost:3000/) and the admin can be found at\n[http://localhost:3000/admin/](http://localhost:3000/admin/).\n\nFor information on how to customize your store, check out the [customization guides](https://guides.solidus.io/customization/customizing-your-storefront).\n\n### Default Username/Password\n\nAs part of running the above installation steps, you will be asked to set an admin email/password combination. The default values are `admin@example.com` and `test123`, respectively.\n\n### Questions?\n\nThe best way to ask questions is to [join the Solidus Slack](http://slack.solidus.io/) and join the [#support channel](https://solidusio.slack.com/messages/support/details/).\n\n## Installation options\n\nInstead of a stable build, if you want to use the bleeding edge version of\nSolidus, use this line:\n\n```ruby\ngem 'solidus', github: 'solidusio/solidus'\n```\n\n**Note: The master branch is not guaranteed to ever be in a fully functioning\nstate. It is too risky to use this branch in production.**\n\nBy default, the installation generator (`solidus:install`) will run\nmigrations as well as adding seed and sample data. This can be disabled using\n\n```bash\nbin/rails g solidus:install --migrate=false --sample=false --seed=false\n```\n\nYou can always perform any of these steps later by using these commands.\n\n```bash\nbin/rails railties:install:migrations\nbin/rails db:migrate\nbin/rails db:seed\nbin/rails spree_sample:load\n```\n\nThere are also options and rake tasks provided by\n[solidus\\_auth\\_devise](https://github.com/solidusio/solidus_auth_devise).\n\n## Performance\n\nYou may notice that your Solidus store runs slowly in development mode. This\ncan be because in development each CSS and JavaScript is loaded as a separate\ninclude. This can be disabled by adding the following to\n`config/environments/development.rb`.\n\n```ruby\nconfig.assets.debug = false\n```\n\n### Turbolinks\n\nTo gain some extra speed you may enable Turbolinks inside of Solidus admin.\n\nAdd `gem 'turbolinks', '~\u003e 5.0.0'` into your `Gemfile` (if not already present)\nand change `vendor/assets/javascripts/spree/backend/all.js` as follows:\n\n```js\n//= require turbolinks\n//\n// ... current file content\n//\n//= require spree/backend/turbolinks-integration.js\n```\n\n**CAUTION** Please be aware that Turbolinks can break extensions\nand/or customizations to the Solidus admin. Use at your own risk.\n\n## Developing Solidus\n\n* Clone the Git repo\n\n  ```bash\n  git clone git://github.com/solidusio/solidus.git\n  cd solidus\n  ```\n\n### Without Docker\n\n* Install the gem dependencies\n\n  ```bash\n  bin/setup\n  ```\n\n  _Note_: If you're using PostgreSQL or MySQL, you'll need to install those gems through the DB environment variable.\n\n  ```bash\n  # PostgreSQL\n  export DB=postgresql\n  bin/setup\n\n  # MySQL\n  export DB=mysql\n  bin/setup\n  ```\n\n### With Docker\n\n```bash\ndocker-compose up -d\n```\n\nWait for all the gems to be installed (progress can be checked through `docker-compose logs -f app`).\n\nYou can provide the ruby version you want your image to use:\n\n```bash\ndocker-compose build --build-arg RUBY_VERSION=3.0 app\ndocker-compose up -d\n```\n\nThe rails version can be customized at runtime through the `RAILS_VERSION` environment variable:\n\n```bash\nRAILS_VERSION='~\u003e 5.0' docker-compose up -d\n```\n\nRunning tests:\n\n```bash\n# sqlite\ndocker-compose exec app bin/rspec\n# postgres\ndocker-compose exec app env DB=postgres bin/rspec\n# mysql\ndocker-compose exec app env DB=mysql bin/rspec\n```\n\nAccessing the databases:\n\n```bash\n# sqlite\ndocker-compose exec app sqlite3 /path/to/db\n# postgres\ndocker-compose exec app env PGPASSWORD=password psql -U root -h postgres\n# mysql\ndocker-compose exec app mysql -u root -h mysql -ppassword\n```\n\nIn order to be able to access the [sandbox application](#sandbox), just make\nsure to provide the appropriate `--binding` option to `rails server`. By\ndefault, port `3000` is exposed, but you can change it through `SANDBOX_PORT`\nenvironment variable:\n\n```bash\nSANDBOX_PORT=4000 docker-compose up -d\ndocker-compose exec app bin/sandbox\ndocker-compose exec app bin/rails server --binding 0.0.0.0 --port 4000\n```\n\n### Sandbox\n\nSolidus is meant to be run within the context of Rails application. You can\neasily create a sandbox application inside of your cloned source directory for\ntesting purposes.\n\nThis sandbox includes solidus\\_auth\\_devise and generates with seed and sample\ndata already loaded.\n\n* Create the sandbox application\n\n  ```bash\n  bin/sandbox\n  ```\n\n  You can create a sandbox with PostgreSQL or MySQL by setting the DB environment variable.\n\n  ```bash\n  # PostgreSQL\n  export DB=postgresql\n  bin/sandbox\n\n  # MySQL\n  export DB=mysql\n  bin/sandbox\n  ```\n\n  Depending on your local environment, it may be necessary for you to set environment variables for your RDBMS, namely:\n    - `DB_HOST`\n    - `DB_USER`\n    - `DB_PASSWORD`\n\n  If you need to create a Rails 5.2 application for your sandbox, for example\n  if you are still using Ruby 2.4 which is not supported by Rails 6, you can\n  use the `RAILS_VERSION` environment variable.\n\n  ```bash\n    export RAILS_VERSION='~\u003e 5.2.0'\n    bin/setup\n    bin/sandbox\n  ```\n\n* You can start the Rails server and other services from either the Solidus folder or the\nsandbox one by running the command:\n\n  ```bash\n  bin/dev\n  ```\n\nPlease note: if you run `bin/rails server` or similar commands, only the Rails server will\nstart. This might cause the error `couldn't find file 'solidus_admin/tailwind.css'` when you\ntry to load admin pages.\n\n### Tests\n\nSolidus uses [RSpec](http://rspec.info) for tests. Refer to its documentation for\nmore information about the testing library.\n\n#### CircleCI\n\nWe use CircleCI to run the tests for Solidus as well as all incoming pull\nrequests. All pull requests must pass to be merged.\n\nYou can see the build statuses at\n[https://circleci.com/gh/solidusio/solidus](https://circleci.com/gh/solidusio/solidus).\n\n#### Run all tests\n\n[ChromeDriver](https://chromedriver.chromium.org/downloads) is required to run\nthe backend test suites.\n\nTo execute all of the test specs, run the `bin/build` script at the root of the Solidus project:\n\n```bash\ncreateuser --superuser --echo postgres # only the first time\nbin/build\n```\n\nThe `bin/build` script runs using PostgreSQL by default, but it can be overridden by setting the DB environment variable to `DB=sqlite` or `DB=mysql`. For example:\n\n```bash\nenv DB=mysql bin/build\n```\n\nIf the command fails with MySQL related errors you can try creating a user with this command:\n\n```bash\n# Creates a user with the same name as the current user and no restrictions.\nmysql --user=\"root\" --execute=\"CREATE USER '$USER'@'localhost'; GRANT ALL PRIVILEGES ON * . * TO '$USER'@'localhost';\"\n```\n\n#### Run an individual test suite\n\nEach gem contains its own series of tests. To run the tests for the core project:\n\n```bash\ncd core\nbundle exec rspec\n```\n\nBy default, `rspec` runs the tests for SQLite 3. If you would like to run specs\nagainst another database you may specify the database in the command:\n\n```bash\nenv DB=postgresql bundle exec rspec\n```\n\n#### Code coverage reports\n\nIf you want to run the [SimpleCov](https://github.com/colszowka/simplecov) code\ncoverage report:\n\n```bash\nCOVERAGE=true bundle exec rspec\n```\n\n### Extensions\n\nIn addition to core functionality provided in Solidus, there are a number of\nways to add features to your store that are not (or not yet) part of the core\nproject.\n\nA list can be found at [extensions.solidus.io](http://extensions.solidus.io/).\n\nIf you want to write an extension for Solidus, you can use the\n[solidus_dev_support](https://github.com/solidusio/solidus_dev_support.git) gem.\n\n## Contributing\n\nSolidus is an open source project and we encourage contributions. Please read\n[CONTRIBUTING.md](https://github.com/solidusio/.github/blob/main/CONTRIBUTING.md) before contributing.\n","funding_links":["https://opencollective.com/solidus"],"categories":["Ruby","Happy Exploring 🤘","hacktoberfest","E-Commerce and Payments","Gems","Miscellaneous","E-commerce"],"sub_categories":["E-commerce","Rails codebases to study","Articles"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidusio%2Fsolidus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolidusio%2Fsolidus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolidusio%2Fsolidus/lists"}