Mailchimp Open Commerce is an API-first, headless commerce platform built using Node.js, MongoDB, and GraphQL. It plays nicely with npm, Docker and Kubernetes.
Fast | Returns data in split seconds, and faster queries mean faster web pages |
Proven | Open Commerce fuels sites doing 10's of thousands of orders per day with 100's of thousands of products |
Composable | A flexible plugin system allows you to pick and choose which integrations work best for you |
Multi-tenant | Host multiple shops in the same installation |
Scalable | Start out with a single server and scale up to hundreds |
Flexible Products | Allows Products, with options and variants to fit a wide variety of needs |
Inventory | Track inventory, allow or disallow backorders and more |
Shipping | Integrate with a shipping rate provider or build your own custom table |
Taxes | Integrate with a tax rate provider or build your own custom tax table |
Fulfillment | Flexible fulfillment system allows you create your own fulfillment methods |
Order Tracking | View and manage your orders in the included admin system |
Emails | Customizable templates for Order confirmations and more |
Open | Fully open source. Never be locked in again |
To start working with your own project built on Mailchimp Open Commerce you can start by using our new CLI. The CLI is the quickest and easiest way to develop on Open Commerce. It allows you to create and work with API, Admin, and Storefront projects all via the command line.
-
We recommend installing nvm
-
In addition, you need to have your system setup for SSH authentication with GitHub
First install the cli by running:
npm install -g reaction-cli
You can test to see if it has worked here by running:
reaction help
You can create your Open Commerce project by running:
reaction create-project api <your-project-name>
This will create an Open Commerce project in the directory . Once this is complete, navigate to the project directory:
cd <your-project-name>
Install the project dependencies:
npm install
Finally, start the server in development mode:
reaction develop api
Note: Optionally, from within the project-directory you may issue the above command without mentioning the project type and the CLI would check your package.json for the "projectType" and pick it up from there. This expects that the project itself was built using the latest version of the CLI as explained in the above steps.
Example, instead of the above command, you may skip mentioning 'api' and just use:
reaction develop
This will start the Open Commerce GraphQL server and Mongo Server. Press Ctrl+C to stop.
- A sample custom plugin has been installed, and you should see its output in the logs. (Your Sample Plugin)
- To add a new plugin based on our plugin template run:
reaction create-plugin api <your-plugin-name>
Validate whether the plugin was created in the custom-packages
cd custom-packages
cd <your-plugin-name>
npm install
You now need to change back up to the root:
cd ../../
now you can run:
reaction develop
This plugin will now be loaded the next time you start Open Commerce.
See the Complete CLI instructions for how to create your local storefront and admin.
Go to the complete installation instructions to see how to set up your store
If you are working on core plugins (not developing plugins for your own installation) you should follow these instructions
npm i -g [email protected]
git clone https://github.com/reactioncommerce/reaction.git
cd reaction
pnpm install
cp apps/reaction/.env.example apps/reaction/.env
Start dev-server with mongo on local:
## you must change MONGO_URL in the .env to mongodb://localhost:27017/reaction before start
pnpm run start:dev
Start dev-server with mongodb on docker
docker-compose up -d
pnpm run start:dev
- Make some changes in one or more packages.
- Add a changeset in that same PR.
- Repeat the process of making changes and adding changesets.
- Create PR
- Run
release
action to createVersion PR
. This PR will remove all changeset files, bump up packages versions, update CHANGELOG files. - Merge
Version PR
into trunk, CircleCI will publish all the packages into npm.
- All PRs will be merged into
prerelease
branch before triggeringPRERELEASE
action. - Before merging PRs into
prerelease
branch, please make sure that all the changesets are added. - Manually trigger
PRERELEASE
action to createVersion Packages (next)
PR. After merged, the changeset/action will bump up packages versions as{next-version}-next.{number}
, update CHANGELOG files. - Merge
Version Packages (next)
PR intoprerelease
branch, action will publish all the packages into npm.
⭐ If you like what you see, star us on GitHub.
Find a bug, a typo, or something that’s not documented well? We’d love for you to open an issue telling us what we can improve! This project uses commitlint, please use their commit message format.
We love your pull requests! Check out our Good First Issue
and Help Wanted
tags for good issues to tackle.
Check out our contributors guide for more information
Reaction is GNU GPLv3 Licensed
reaction's People
Forkers
jalalhejazi ryeo eahefnawy fesp21 swrobel n2ray assyme johandroid ginotoo johnkchiu xm1999 gmist nate-strauser kharv aferreroc samkohli edgency sd031 kinpro anandarajpandey ciaraburkett techgaun paurosello willjleong alihalabyah debraid mrvictorn prakhar-goel alexsuslov xiaolinlu utkarshx nagites stuffshit subratamal padioca kkdg tvtritin beepiams chirox zmilan kwikiel jimbog vforeman fcostantino andreireitz blairfetzer marcinsikora sarahmworthy zarazi renonet hasantayyar prasanthsgandiva designblooz danilopaez keyang89 amber87 antonyhatchet gitter-badger viewplatgh eyes2design lavaina aloveless vishoverip shekar73 jasonnathan irkinosor byennen ramusus mrinalr25 pcoady idrisjafer dklounge physicsdude apomeran putstrln desfasao arjunmantri tuksik krishnamisra cedric-coroir xcopyco youngdev leetzsche kosir halilertekin npeteinidis vwish mcules mrmading vngo99 gouthamve spencern adlenafane meher19 topseniors celloudiallo vitrum meteorlyon acidsound uberscientistreaction's Issues
Product detail image gallery has strange behavior
Footer links lose header/wrapper
Drag and drop performance issue on product grid
On Chrome/Mavericks
When dragging a product on product grid performance is noticeably off. The dragged product lags behind mouse movement in jumpy/glitchy movements.
Unable to add to cart after successful order completion
Check that all sessions and subs for cart have been cleared (used to work)
Embeddable Email Capture JS
https://github.com/ongoworks/reaction-greetramp
Create an embeddable asynchronous javascript that runs on external sites
that:
- displays a popup modal with an input field to capture email
- adds email capture to mongo captures collection
Field highlight overlapping on product detail
Azimuth cms package support
Is there a way to integrate this package and use admin interfaces together? As soon as possible I'll try out reaction with azimuth cms package. I'll start building simple website with azimuth and then adding to it reactioncommerce package. I think it's a good idea to use this package as a cms module and reaction as a shopping module.
Variant field alignment off on right side
Can't assign same tag to other products
Only can add a tag per product, when is supposed to be assigned also to other products.
default images to variant[0], or parent variant
If variant has no images default to variant[0] image
if child variant has no images, default to parent variant image, else variant [0]
When a new created product is purchased it does not appear in basket navbar
- Clone or create new product and make it visible.
- Purchase one product, it appears in basket navbar
- Purchase the other product, in basket navbar only appears one product, not the two purchased.
*) click basket icon --> disappears navbar (ok), press again --> appears correctly basket navbar with the 2 puchased products.
cart drawer display of new items
Automatic open of the cart drawer is currently disabled, problem with refreshing the carousel with Meteor 0.8.0
Todo: auto open when adding new items, refresh cart items in owl carousel.
Likely solution coding the owl-carousel add items rather than refreshing entire owl instance
Mobile select variant / add to cart issues
Selecting / adding works only sporadically. Seems delayed.
Maybe related to to removal of tap events in Meteor 0.8. Researching.
Add connector for Google Analytics
link app gallery cards to app settings page
add link to settings route on the app cards, and remove from main dashboard panel
only link "hasWidget" links in dashboard panel
Saving address in accounts general
Failing with:
Error: MongoError: have conflicting mods in update [409]
Can't unselect tag in product detail
Product detail display issue on mobile
error: no such package: 'reaction-flatrates'
Hi, I was on 5e94d7c and followed the startup , but get error: no such package: 'reaction-flatrates'.
Here is all message:
=> Started proxy.
=> Started MongoDB.
iron-router: updating npm dependencies -- connect...
simple-schema: updating npm dependencies -- string...
data-man: updating npm dependencies -- mime, simple-bufferstream, request, temp...
cfs-filesystem: updating npm dependencies -- chokidar, mkdirp...
cfs-gridfs: updating npm dependencies -- mongodb, gridfs-stream...
handlebars-server: updating npm dependencies -- handlebars...
reaction-commerce: updating npm dependencies -- node-geocoder, phantomjs, >node-phantom...
cfs-s3: updating npm dependencies -- aws-sdk...
reaction-paypal: updating npm dependencies -- paypal-rest-sdk...
=> Errors prevented startup:While building the application:
error: no such package: 'reaction-flatrates'=> Your application has errors. Waiting for file change.
client/templates/layout not on git
With a fresh pull and mrt update.
$ ./bin/reset
Project reset.
[[[[[ ~/Proyectos/initiumsys/reaction ]]]]]
=> Started proxy.
=> Started MongoDB.
=> Errors prevented startup:
While building package reaction-commerce
:
error: File not found: client/templates/layout/notFound/notFound.html
=> Your application has errors. Waiting for file change.
(client/templates/layout doesn't exist)
checks for server side methods
add check(doc,schema) and isOwner to all server side methods
Logout doesn't work unless rerendered
Logout dropdown closes, but doesn't change the toggle state. Needs to re-render on fadeout.
progressbar for image uploads
add progressbar to image uploads - right now just a broken image shows until image is loaded.
click image should also select associated variant
Entry to product with multiple variants should not select initial variant.
When no variant is selected:
Images should be collection of all primary images for variants (variant.media.0)
Selecting variant, or an image, should select variant and display child variant options.
Delay in adding items to cart
When adding a product to cart from detail view, there is a moment when the cart opens and it says "we're sad..." and the cart appears empty, then the product fills in. It seems that the cart shouldn't appear until your item is loaded or at least shouldn't show the big "we're sad" message, even for a second, when the customer has just opted to start purchasing something.
Tag focus jumps if editing both sections on detail view
If you start editing the top bar tags while on a product detail page, then go down and start adding tags to the product, the focus keeps jumping back up to the top bar even though you were adding tags to the product.
Variant Option fieldset background color confusing
Placeholder text should disappear when field is in focus
When clicking to edit a field on a product that still has placeholder text, the text should disappear to indicate that the field is ready to accept your input (and then reappear if you click out of focus without entering any characters). Currently the placeholder text remains when the field is in focus which makes it feel to the user as if you aren't editing the field.
Product detail tags section needs spacing on mobile
Hero Manager
Hero manager:
- Drag and drop images into a carousel that can be placed on any page.
- Individual items should have date range, and links
- Should be able to accept html as well as images. (to allow advanced usage)
- Add links to tracking.
Package updates from remote
Flat rate shipping manager
Flat rates are stored in ConfigData collection, add manager screens in dashboard to modify contents.
"shipping" : [
{
"name" : "Flat Rate Service",
"serviceAuth" : "",
"serviceSecret" : "",
"serviceUrl" : "",
"format" : "json",
"methods" : [
{
"name" : "Free",
"group" : "Ground",
"label" : "Free Shipping",
"rate" : "0",
"handling" : "0",
"validRanges" : [
{
"begin" : "0",
"end" : "0"
}
],
"validDestinations" : [
{
"US" : true,
"CA" : true,
"UK" : false
}
],
"validOrigination" : [
{
"US" : true
}
]
},
{
"name" : "Free",
"group" : "2-Day",
"label" : "Express 3-Day",
"rate" : "2.99",
"handling" : "0",
"validRanges" : [
{
"begin" : "0",
"end" : "0"
}
],
"validDestinations" : [
{
"US" : true,
"CA" : true,
"UK" : false
}
],
"validOrigination" : [
{
"US" : true
}
]
}
],
"containers" : [
{
"envelope" : true
}
]
}
]
Variant option field spacing is off
Dropdown menu style issues on mobile
Errors in displaying order dashboard
Meteor 0.8 induced errors:
Exception in Meteor UI: undefined debug.js:43
Exception from Deps recompute function: undefined debug.js:43
Exception from Deps recompute function: undefined debug.js:43
Exception from Deps recompute function: Error: Can't call non-function: [object Object]
at Spacebars.call (http://localhost:3000/packages/spacebars.js?5d478ab1c940b6f5a88f78b8adc81a47f022da77:176:13)
at Spacebars.mustacheImpl (http://localhost:3000/packages/spacebars.js?5d478ab1c940b6f5a88f78b8adc81a47f022da77:110:25)
at Object.Spacebars.dataMustache (http://localhost:3000/packages/spacebars.js?5d478ab1c940b6f5a88f78b8adc81a47f022da77:142:39)
at Template.define.HTML.LI.HTML.DIV.Spacebars.With.UI.block.self (http://localhost:3000/packages/reaction-commerce.js?6535bb2f9a99a2b61efab0b7aad7a16eccfdcc07:27424:22)
at http://localhost:3000/packages/ui.js?b523ef986d3d39671bcb40319d0df8982acacfe8:2013:23
at callWithNoYieldsAllowed (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:74:5)
at _.extend.compute (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:212:7)
at new Deps.Computation (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:144:10)
at Object..extend.autorun (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:361:13)
at http://localhost:3000/packages/ui.js?b523ef986d3d39671bcb40319d0df8982acacfe8:2010:17
Error saving GA Settings
Editing of tags broken
Tag editing broken in Meteor 0.8.0 refactor
Connectors Documentation
Line appearing in end user view of product grid
Package controller in admin
Warn @ text spacing is off
Click cart product should take you to product / variant / child variant page
Broken since 0.8 - click cart product should bring up pdp with selected variants.
user view of orders/accounts information
a user view of orders and account information, linked in their account dropdown.
Add support for more file types in media gallery
Currently only image types are supported in the media gallery. It would be useful to be able to include videos as well.
Clicking save on variant doesn't update main price
When updating the price of a selected variant, the main price doesn't change as soon as you click the save button.
To reproduce:
- Select and open a variant
- Change Price
- Click "Save"
- Note that while the variant price changed, the big price did not. Only when you click the variant bar again does the price update.
When run the latest source nothing display
When run the latest source it is the bank page,nothing display.
it is because of the Meteor 0.8.0 ?
Package system documentation
product hashtags managed as array, most recent used in url
add hashtags (handles) as an array, so when you change hashtags you redirect to new one, old hashtags for products direct to newest.
Detail name and information fields overlap on mobile
Google Analytics Connector
Package to add google analytics tracking:
Users should be able to select a GA package and then login to GA and choose a reporting profile.
GA profile information should be stored in
reaction_config {userid:packages:ga}
Template should be created to add GA tracking (generic) and track events where elements have been configured as
data-track="Open slideshow" data-track-attrs="{ show: 'Xmas' }"
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.