An open source eCommerce platform giving you full control and customizability. Modular and API-first. Build any eCommerce solution that your business requires. Developed by @vendo-dev
OTHER License
Bot releases are visible (Hide)
Published by rafalcymerys 12 months ago
Full Changelog: https://github.com/spree/spree/compare/v4.6.2...v4.6.3
Published by rafalcymerys about 1 year ago
Full Changelog: https://github.com/spree/spree/compare/v4.6.1...v4.6.2
Published by rafalcymerys about 1 year ago
Full Changelog: https://github.com/spree/spree/compare/v4.6.0...v4.6.1
Published by rafalcymerys over 1 year ago
Published by rafalcymerys over 1 year ago
Full Changelog: https://github.com/spree/spree/compare/v4.5.2...v4.5.3
Published by rafalcymerys over 1 year ago
Full Changelog: https://github.com/spree/spree/compare/v4.5.1...v4.5.2
Published by rafalcymerys almost 2 years ago
Add compatibility for Ruby 3.1 and 3.2
Published by rafalcymerys almost 2 years ago
Spree 4.5 is a technology update that lets you use Spree with the latest version of Ruby and Rails. It also comes with a new set of tools to make it easy to work with Spree as a part of complex projects - Spree CLI and Spree Platform API SDK.
Read our 4.4 to 4.5 Upgrade Doc for how to upgrade your app to the latest version.
V1 API is now deprecated and won't be maintained. For new projects, please use V2 Platform API.
If you need the V1 API for existing integrations, it's still available as a standalone gem. Just add the following to your Gemfile:
gem 'spree_api_v1'
The admin panel got a clean look and minor usability improvements.
To help you easily create and manage projects based on Spree and one of the available storefront options, we built a new CLI to guide you through the process. To get started, simply run:
npx @spree/cli new app
While Rails storefront (spree_frontend gem) is still available, we went one step ahead to give you an option to easily get started with a modern PWA storefront. It offers the same features as the Rails storefront, but is based on a modern Vue/Nuxt.js stack which gives a lot of performance benefits. Check out Vue Storefront here.
For details on changes made to other Spree gems as part of the 4.5.0 release, see the following:
Published by rafalcymerys over 2 years ago
Backport fix for CSRF issue: https://github.com/spree/spree_backend/releases/tag/v4.4.1
Published by rafalcymerys over 2 years ago
Backport fix for CSRF issue from Spree 4.4.1: https://github.com/spree/spree_backend/releases/tag/v4.4.1
Published by damianlegawiec over 2 years ago
In this latest release, following the low-code and no-code trends, Spree becomes even more composable by introducing Webhooks and Platform API as well as more customizable with Metadata. That translates into easier integration opportunities and shorter delivery timelines. On the business front, this latest Spree version introduces downloadable Digital Product sales (documents, ebooks, images, audio tracks, video files) and Wishlists making it an even more universally useful open-source eCommerce platform.
With the new Digital Products downloads functionality you may use Spree to sell the following example product and file types:
You may also sell any variations of the above download types such as e-tickets, e-courses, music and videos files, and just about anything else that comes in a digital format.
This feature also allows you to attach files to physical products, such as users manuals, vouchers, or exclusive digital artworks associated with the product.
Digital products are created the same way as physical products (for the most part), with the only difference being that when a customer has only digital products in their cart, the delivery step of the checkout will be skipped entirely. After purchase, the customer will be able to download their files.
As with any Spree feature, Digital Products may be managed through the admin panel and are fully supported with API endpoints in Storefront and Platform API collections.
A Wishlist allows registered users to create personalized collections of products they want to buy and then save them for future reference in their user account. Wishlists represent your customers’ interest in the product without an immediate intent to purchase or if the product is currently out of stock.
Wishlists provide you with a wide range of marketing opportunities, from identifying user trends and tracking marketing campaign effectiveness to planning new email or PPC campaigns centered around the items commonly included within users’ wishlists.
As with any Spree feature, Wishlists are fully supported with API endpoints in Storefront and Platform API collections.
Anyone may use Webhooks as a no-code way to connect Spree with 3rd party solutions. For instance, an order webhook may send an updated, up-to-date list of orders every time someone makes a purchase. Getting this information using API would require sending periodic API requests to the “Return a list of Orders” endpoint. On the other hand, a properly set up webhook would feed the relevant order information only when the order list changes triggered by a new purchase.
Webhooks are one of the many ways that apps can communicate with one another by sending automated messages or information. A webhook delivers data to other applications as it happens, meaning you get data immediately and without asking for it.
So the main upside of using webhooks is that applications don’t have to make periodic calls to APIs while waiting for changes. Instead, webhooks will notify your application on a specific endpoint informing them that something interesting has happened.
There are many integration platforms as a service (iPaaS), such as Zapier, Celigo, Workato, Mulesoft Anypoint, Automate.io, which allow for no-code system integrations and composing event-triggered workflows.
With Webhooks you may use these platforms to easily configure tens of connections between systems and compose software solutions yourself without doing any development work whatsoever. Pretty great, huh?
For example, Zapier allows you to create automated workflows by connecting over 3000 applications without any coding involved:
Every eCommerce platform is a bit different but customizing it with code changes and database schema adjustments not only requires engineering know-how and skills but also introduces complexity and possibly bugs, complicates future upgrade paths, and generally is not recommended.
With Spree 4.4 you may leverage the Metadata functionality to easily add custom attributes on the fly for Products, Variants, Taxons, Orders, Carts, or Users without any code or database changes. Meta fields may be either public or private and all are easily accessible using Spree APIs.
For example:
If the low-code Metadata method is not sufficient to customize your Spree platform, you may need to consider using Platform API to create an external app talking to Spree Platform API.
Platform API also comes in handy when connecting Spree with 3rd party systems which may consume its API responses.
Platform API is useful for application to application integrations based on oAuth 2.0 authentication and permissions.
Platform API is built on the same foundations and technology as Storefront API, which means JSON API format, Swagger (Open API) documentation, and oAuth 2.0 authentication.
Platform API is the biggest and most robust API for Spree with the largest number of API endpoints to cover all features available in the Admin Panel plus much more.
This API completely replaces API v1 which will be extracted from Spree in 5.0.
Spree 4.4 comes equipped with a much smoother dashboard user experience thanks to Hotwire (Turbo and Stimulus).
With Turbo you get the speed of a single-page web application without having to write any JavaScript. Stimulus pairs beautifully with Turbo to provide a complete solution for fast, compelling applications with a minimal amount of effort.
As DHH has said: “This is how we’re building Basecamp 4. This is how we built HEY. Now it’s going to be the default answer to JavaScript in Rails 7 together with the new import-map approach. All the missing pages are being printed.”
That being said, we’re excited to present you with this huge Spree 4.4 release and are already working on Spree 5.0 running on Rails 7 with all its goodies included.
https://github.com/spree/spree/blob/main/CHANGELOG.md
Published by damianlegawiec almost 3 years ago
Full Changelog: https://github.com/spree/spree/compare/v4.4.0.rc1...v4.4.0.rc2
Published by damianlegawiec almost 3 years ago
This patch release contains bug fixes backported from the main branch. We'd like to thank all the contributors who made this happen 👍
Published by damianlegawiec almost 3 years ago
NumberIdentifier
concern by @damianlegawiec in https://github.com/spree/spree/pull/11346
Base#spree_base_uniqueness_scope
and UniqueName
concern by @damianlegawiec in https://github.com/spree/spree/pull/11348
Spree::Oauth
models by @damianlegawiec in https://github.com/spree/spree/pull/11349
ActiveRecord#insert_all
to cut seed loading time by @damianlegawiec in https://github.com/spree/spree/pull/11352
spree_frontend
into a separate repo by @damianlegawiec in https://github.com/spree/spree/pull/11358
Active Storage Validations
gem by @KacperMekarski in https://github.com/spree/spree/pull/11419
product.discontinued
when a Product is discontinued by @aleksandarpetrushev in https://github.com/spree/spree/pull/11462
order.resumed
after Order is resumed (order.resume!) by @aleksandarpetrushev in https://github.com/spree/spree/pull/11463
variant.out_of_stock
if Variant is sold out by @aleksandarpetrushev in https://github.com/spree/spree/pull/11464
Product#for_store
scope by @damianlegawiec in https://github.com/spree/spree/pull/11516
active_storage_validations
to 0.9.5
, 0.9.6
broke our test builds by @damianlegawiec in https://github.com/spree/spree/pull/11524
Api::V2::BaseController
by @damianlegawiec in https://github.com/spree/spree/pull/11538
Full Changelog: https://github.com/spree/spree/compare/v4.3.0...v4.4.0.rc1
Published by damianlegawiec about 3 years ago
We've completely decoupled Storefront (spree_frontend
), Admin Panel (spree_backend
) and extracted transactional Emails into their own gem (spree_emails
). Thanks to this you can:
We're also making Spree less dependent on the Rails framework while supporting Rails 5.2, 6.0, and 6.1 on Ruby 2 and 3.
Next.js Commerce is an all-in-one React starter kit for high-performance eCommerce sites. With the new API-first architecture it was very easy to connect Spree APIs via Spree SDK to the new blazing fast react storefront.
BTW we have more storefront integrations news lined up in the coming weeks!
This release gives Spree users a powerful content management system that goes beyond creating basic text pages.
Spree Content Management System allows you to create:
Home Pages
Standard Pages
Feature pages
Menus
Users can create navigation menus for their Spree stores.
Each menu is unique by language and location within the store and has the following features:
A new set of fast and modern APIs for application to application integrations based on oAuth 2.0 authentication and permissions.
This API completely replaces API v1 which will be extracted from Spree core in 5.0. Platform API is built on the same foundations and technology as Storefront API which means JSON API format, Swagger (Open API) documentation, and oAuth 2.0 authentication.
Platform API is the biggest and most robust API for Spree with the biggest number of API endpoints to cover all features
available in Admin Panel plus more.
We've greatly expanded the product filters feature. Now you can:
This way you can create new custom filters in the Admin UI from Option Types or Properties and the system will do the rest work for you.
Follow 4.2 to 4.3 upgrade guide
Please review each of the noteworthy changes to ensure your customizations or extensions are not affected. If you are affected by a change and have any suggestions, please submit a PR to help the next person!
Added caching to API v2 serialized increasing API responsiveness 3-5 times Damian Legawiec
This also includes new confirmation option Spree::Api::Config[:api_v2_cache_ttl]
for the cache expiration TTL. Default value is 3600
(1 hour). Cache also auto-expires when cachd record is updated, more on this topic: https://github.com/jsonapi-serializer/jsonapi-serializer#caching
Added universal collection caching for Platform/Storefront API responses #11245
Increased API v2 per page limit to 500 #11257
Multi-Store Storefront Products API returns Products from the current Store Damian Legawiec
Multi-Store Storefront Account Orders API returns Orders from the current Store Damian Legawiec
Multi-Store Storefront Order Status API returns Order from the current Store Damian Legawiec
Multi-Store Return only Store resources in Storefront API, Platform API, and Storefront UI #11126 (damianlegawiec)
Fix API V2 Platform products by price sorting #11276 (szymoniwacz)
Platform API Classifications endpoints #11195 (damianlegawiec)
Platform API - Products endpoints #11194 (damianlegawiec)
Added API endpoint for changing cart currency #11331 (rafalcymerys)
Storefront API Products endpoint returns filter options with products #11318 (rafalcymerys)
Storefront API Adresses endpoint - display addresses from countries supported in the current store #11271 (v10110)
Add public preferences to payment methods in Storefront API Checkout endpoints #11301 (damianlegawiec)
Storefront Countries API returns all countries on a single page #11289 (damianlegawiec)
Fix API V2 Platform products by price sorting #11276 (szymoniwacz)
Storefront API / Platform API - allow to dynamically specify image dimensions/quality in API URLs to get the transformed image #11264 (damianlegawiec)
Multi-Store Order#available_payment_methods
by default will return only Payment Methods available in Order's Store Damian Legawiec
Passing store
argument to that method will result in deprecation warning
Multi-Store Deprecated Store.current
in favour of Stores::FindCurrent
Damian Legawiec
Also, this finder class can be replaced by custom one by setting
Spree::Dependencies.current_store_finder = YourCustomStoreFinder
in config/initializers/spree.rb
(please check documentation)
Multi-Store Product
, Promotion
and PaymentMethod
models require at least one Store
associated Damian Legawiec
Multi-Store Promotion
is now associated to multiple Store
records via StorePromotion
model Damian Legawiec
You can disable this behaviour by setting:
Spree::Config[:disable_store_presence_validation] = true
in your config/initializers/spree.rb
file
Multi-Store Store Credit
model is now associated with Store
Szymon Iwacz
Taxon
model now requires Taxonomy
presence and that Taxonymy
needs to match Taxon's Parent (if present) Damian Legawiec
Transactional emails were extracted into a separate gem called spree_emails
Damian Legawiec
Replaced twitter_cldr
gem with much smaller validates_zipcode
Damian Kaczmarczyk
Removed premailer-rails
gem dependency Damian Legawiec
Removed rails
dependency - only require Rails gems that we really use Damian Legawiec
Removed responders
dependency Damian Legawiec
Removed sprockets
dependency Damian Legawiec
Moved spree.js
file to frontend/backend Damian Legawiec
Moved polyfill.min.js
and fetch.umd.js
files to frontend Damian Legawiec
Moved cleave.js
file to frontend/backend Damian Legawiec
Moved jquery.payment.js
file to frontend Damian Legawiec
Migrate User Roles code from Spree Auth Devise to Spree Core #11108 (damianlegawiec)
Change integer id columns into bigint #11182 (szymoniwacz)
Published by damianlegawiec about 3 years ago
Published by damianlegawiec about 3 years ago
Monolith is gone replaced with a truly headless modular design!
We've completely decoupled Storefront (spree_frontend
), Admin Panel (spree_backend
) and extracted transactional Emails into their own gem (spree_emails
). Thanks to this you can:
We're also making Spree less dependent on the Rails framework, while supporting Rails 5.2, 6.0 and 6.1 on Ruby 2 and 3.
This release gives Spree users a powerful content management system that goes beyond creating basic text pages.
Spree Content Management System allows you to create:
Home Pages
Standard Pages
Feature pages
Menus
Users can create navigation menus for their Spree stores.
Each menu is unique by language and location within the store and has the following features:
A new set of fast and modern APIs for application to application integrations based on oAuth 2.0 authentication and permissions.
This API completely replaces API v1 which will be extracted from Spree core in 5.0. Platform API is built on the same
foundations and technology as Storefront API
that means JSON API format, Swagger (Open API) documentation and oAuth 2.0 authentication.
Platform API is the biggest and most robust API for Spree with the biggest number of API endpoints to cover all features
available in Admin Panel plus more. All API v1 usage in Admin Panel was also replaced with Platform API.
We've greatly expanded product filters feature. Now you can:
This way you can create new custom filters in the Admin UI from Option Types or Properties and the system will do the rest work for you.
bin/setup
in spree_starter-main
directoryFollow 4.2 to 4.3 upgrade guide
Please review each of the noteworthy changes to ensure your customizations or extensions are not affected. If you are affected by a change and have any suggestions, please submit a PR to help the next person!
Added caching to API v2 serialized increasing API responsiveness 3-5 times Damian Legawiec
This also includes new confirmation option Spree::Api::Config[:api_v2_cache_ttl]
for the cache expiration TTL. Defualt value is 3600
(1 hour). Cache also auto-expires when cachd record is updated, more on this topic: https://github.com/jsonapi-serializer/jsonapi-serializer#caching
Multi-Store Storefront Products API returns Products from the current Store Damian Legawiec
Multi-Store Storefront Account Orders API returns Orders from the current Store Damian Legawiec
Multi-Store Storefront Order Status API returns Order from the current Store Damian Legawiec
Multi-Store Order#available_payment_methods
by default will return only Payment Methods available in Order's Store Damian Legawiec
Passing store
argument to that method will result in deprecation warning
Multi-Store Deprecated Store.current
in favour of Stores::FindCurrent
Damian Legawiec
Also, this finder class can be replaced by custom one by setting
Spree::Dependencies.current_store_finder = YourCustomStoreFinder
in config/initializers/spree.rb
(please check documentation)
Multi-Store Product
, Promotion
and PaymentMethod
models require at least one Store
associated Damian Legawiec
Multi-Store Promotion
is now associated to multiple Store
records via StorePromotion
model Damian Legawiec
You can disable this behaviour by setting:
Spree::Config[:disable_store_presence_validation] = true
in your config/initializers/spree.rb
file
Multi-Store Store Credit
model is now associated with Store
Szymon Iwacz
Taxon
model now requires Taxonomy
presence and that Taxonymy
needs to match Taxon's Parent (if present) Damian Legawiec
Transactional emails were extracted into a separate gem called spree_emails
Damian Legawiec
Replaced twitter_cldr
gem with much smaller validates_zipcode
Damian Kaczmarczyk
Removed premailer-rails
gem dependency Damian Legawiec
Removed rails
dependency - only require Rails gems that we really use Damian Legawiec
Removed responders
dependency Damian Legawiec
Removed sprockets
dependency Damian Legawiec
Moved spree.js
file to frontend/backend Damian Legawiec
Moved polyfill.min.js
and fetch.umd.js
files to frontend Damian Legawiec
Moved cleave.js
file to frontend/backend Damian Legawiec
Moved jquery.payment.js
file to frontend Damian Legawiec
You can view the full changes using Github Compare.
Published by damianlegawiec over 3 years ago
Spree 4.2 now runs on Rails 5.2, 6.0, and 6.1 🚀
localizedPathFor
function for API addresses https://github.com/spree/spree/commit/432a890871d38498486ab3c0ea50b8bd490b1d31
Published by damianlegawiec over 3 years ago
Published by damianlegawiec over 3 years ago