Code Monkey home page Code Monkey logo

reactioncommerce / reaction Goto Github PK

View Code? Open in Web Editor NEW
12.2K 431.0 2.2K 110.04 MB

Mailchimp Open Commerce is an API-first, headless commerce platform built using Node.js, React, GraphQL. Deployed via Docker and Kubernetes.

Home Page: https://mailchimp.com/developer/open-commerce/

License: GNU General Public License v3.0

Shell 0.36% JavaScript 99.51% Dockerfile 0.04% CSS 0.01% HTML 0.08%
ecommerce-platform ecommerce commerce reactioncommerce e-commerce javascript cart shop storefront marketplace

reaction's Introduction

Mailchimp Open Commerce (formerly Reaction Commerce)

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.

MOC Admin

Features

FastReturns data in split seconds, and faster queries mean faster web pages
ProvenOpen Commerce fuels sites doing 10's of thousands of orders per day with 100's of thousands of products
ComposableA flexible plugin system allows you to pick and choose which integrations work best for you
Multi-tenantHost multiple shops in the same installation
ScalableStart out with a single server and scale up to hundreds
Flexible ProductsAllows Products, with options and variants to fit a wide variety of needs
InventoryTrack inventory, allow or disallow backorders and more
ShippingIntegrate with a shipping rate provider or build your own custom table
TaxesIntegrate with a tax rate provider or build your own custom tax table
FulfillmentFlexible fulfillment system allows you create your own fulfillment methods
Order TrackingView and manage your orders in the included admin system
EmailsCustomizable templates for Order confirmations and more
OpenFully open source. Never be locked in again

Getting started

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.

What you need

Install the CLI

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

Creating a project

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.

Congratulations!! You're ready to start developing with 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

API development

If you are working on core plugins (not developing plugins for your own installation) you should follow these instructions

What you need

Install PNPM

Clone and Start the source

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

Development Flow

  1. Make some changes in one or more packages.
  2. Add a changeset in that same PR.
  3. Repeat the process of making changes and adding changesets.
  4. Create PR

How to release

  1. Run release action to create Version PR. This PR will remove all changeset files, bump up packages versions, update CHANGELOG files.
  2. Merge Version PR into trunk, CircleCI will publish all the packages into npm.

Prerelease flows

  1. All PRs will be merged into prerelease branch before triggering PRERELEASE action.
  2. Before merging PRs into prerelease branch, please make sure that all the changesets are added.
  3. Manually trigger PRERELEASE action to create Version Packages (next) PR. After merged, the changeset/action will bump up packages versions as {next-version}-next.{number}, update CHANGELOG files.
  4. Merge Version Packages (next) PR into prerelease branch, action will publish all the packages into npm.

Get involved

Contribute

⭐ 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

License

Reaction is GNU GPLv3 Licensed

reaction's People

Contributors

aanchirinah avatar aaronjudd avatar akarshit avatar aldeed avatar dancastellon avatar delagroove avatar dependabot[bot] avatar focusaurus avatar impactmass avatar jamesporl avatar joykare avatar jshimko avatar kieckhafer avatar lcampanis avatar loan-laux avatar machikoyasuda avatar mikemurray avatar mpaktiti avatar newsiberian avatar nnnnat avatar prinzdezibel avatar rosshadden avatar saarmstrong avatar snyk-bot avatar spencern avatar sujithvn avatar trojanh avatar vanpho93 avatar willopez avatar zenweasel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reaction's Issues

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.

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

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.

Variant Option fieldset background color confusing

The fieldset background of Variant Options turns green when in focus. Because it is the same green that is used to indicate field autosave in other areas, it can be confusing to see this same green color but with a different meaning.

example product3

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
                }
            ]
        }
    ]

Warn @ text spacing is off

The "Warn @" label is too far from the field in the variant settings. It would make more sense if the label was over directly next to the field.

example product

Can't unselect tag in product detail

When tag is selected as the hashtag in product detail it can't then be unselected. It seems that it should either be required to make the product live, or allow for unselection.

silicon beach tee

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.

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.

screen shot 2014-04-14 at 9 02 15 am

When a new created product is purchased it does not appear in basket navbar

  1. Clone or create new product and make it visible.
  2. Purchase one product, it appears in basket navbar
  3. 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.

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' }"

Errors in displaying order dashboard

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)

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.

Product detail display issue on mobile

When logged in as admin, the product detail view has horizontal scroll bar and some elements extend beyond the screen. This happens when the viewport goes below 768px and the elements all stack.

screen shot 2014-04-14 at 8 54 05 am

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.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.