Coder Social home page Coder Social logo

workarea-commerce / workarea Goto Github PK

View Code? Open in Web Editor NEW
326.0 15.0 66.0 31.51 MB

Workarea is an enterprise-grade Ruby on Rails commerce platform

Home Page: https://www.workarea.com

License: Other

Ruby 60.04% JavaScript 7.57% HTML 0.57% CSS 0.02% Shell 0.01% Dockerfile 0.01% SCSS 5.79% Haml 25.62% EJS 0.36%
ecommerce ecommerce-platform ecommerce-framework ruby ruby-on-rails mongodb elasticsearch redis workarea workarea-commerce

workarea's Introduction

Workarea Commerce Platform

CI Status Contributor Covenant

Workarea is an enterprise-grade commerce platform written in Ruby on Rails. It uses MongoDB, Elasticsearch, and Redis. Workarea also uses a whole lot of gems you can see in our gemspec.

Workarea Commerce Cloud
Documentation
Demo
Getting Started
Plugins
Extension
Deploying
Sites Running Workarea
Contributing
Slack

Workarea Screenshot

Features

Workarea combines commerce, content, search, and insights into a unified platform to enable merchants to move faster and work smarter. Out-of-the-box features include:

Storefront

  • Mobile-first frontend
  • Localization support
  • First-class SEO
  • Built-in analytics
  • Cart and checkout
  • Customer accounts
  • Discounts
  • Basic taxes
  • Shipping services

Content

  • Responsive CMS
  • Asset management
  • Localized content
  • Intelligent merchandising
  • Content-based navigation

Search

  • Product search
  • Search-driven categories
  • Filtering and sorting
  • Search merchandising
  • Results tuning
  • Advanced reporting

Insights

  • Robust dashboards
  • Sales reports
  • Trending reports
  • Search reports
  • Advanced insights

Admin

  • Site planning and automation
  • Workflows for common tasks
  • Inline insights
  • Search-first administration
  • Commenting
  • Audit logs for changes

Demo

You can run a demo version of Workarea after installing Docker by running the following command in your terminal:

curl -s https://raw.githubusercontent.com/workarea-commerce/workarea/master/demo/install | bash

If you are using MacOS or Windows, this will require you to increase Docker's memory allocation to at least 4GB. Go to your Docker preferences, select the advanced tab, and adjust the memory slider.

Once complete, you can view the Workarea Storefront at http://localhost:3000 and the Workarea Admin at http://localhost:3000/admin. The seed data provides an admin user with an email/password of [email protected]/w0rkArea!.

See the README in the demo directory for more information.

Getting Started

We'd suggest checking out our introductory overview article on Workarea to wrap your head around the technology. Read the Workarea developer overview article.

Then try following our guide on creating a new Workarea Rails app

If you have any problems, reach out on our public Slack. We're happy to help!

Watch the Quickstart Video: https://vimeo.com/370085475

Plugins

Workarea extends functionality with a library of plugins. These plugins add everything from additional content blocks, to wish lists, to payment gateway integrations and more. Here are some of the most popular plugins:

Plugin Description
API Provides APIs for storefront and admin
Blog Integrated blogging
Reviews Adds product reviews
Google Analytics Integrates GA with Workarea's analytics
Paypal Adds Paypal checkout
Wish Lists Adds customer wish lists
Sitemaps Autogenerating sitemaps
Share Adds page sharing via social media or email
Package Products Allows displaying products as a group in browse and details pages
Gift Cards Adds Workarea-native digital gift cards

To see a full list of open-source plugins, check out the Workarea Github organization. More plugins like B2B functionality, order management, and running multiple sites are available through the Workarea Commerce Cloud.

Extension

Workarea is meant to be extended and customized to fit merchant needs. It's built as a collection of Rails Engines so the Rails guides on customizing engines apply. Workarea also includes the Rails Decorators to provide a easy and familiar path for Rails developers to customize Ruby classes. To read more, check out our documentation on extension.

Deploying

Workarea is fairly complex application to host, we recommend our Commerce Cloud hosting.

If you'd like to host on your own, we have some documentation to help:

Sites Running Workarea

The Bouqs
Sanrio
BHLDN
Reformation
Woodcraft
Lonely Planet
Paragon Sports
Costume Super Center
and many more!

Contributing

All contributors in any way are expected to follow the code of conduct.

Looking for how to contribute code?

We encourage you to contribute to Workarea! Check out our articles on contribution on https://developer.workarea.com.

Looking for how to submit a bug?

Please check out our article on how to submit a bug for how to proceed

Looking for how to report a security vulnerability?

Please check out our security policy for how to proceed.

License

Workarea Commerce Platform is released under the Business Software License

workarea's People

Contributors

benparsell avatar brandongoodman615 avatar btarbell avatar chriscressman avatar dependabot[bot] avatar eric-pigeon avatar heyqule avatar jakebhu avatar jurgenhahn avatar leviathant avatar luismerk avatar mcfearsome avatar meowsus avatar mmartyn avatar mttdffy avatar tubbo 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

workarea's Issues

Fix Rakefile

Some tasks were broken after the migration to GitHub. Others are just useless.

Direct Uploads Fail Locally

Describe the bug
When directly uploading assets, either on /admin/content_assets or in a content block itself, and the S3 bucket is configured properly, assets can still fail to upload if the Workarea.config.host does not match

To Reproduce
Steps to reproduce the behavior:

  1. Configure your app with S3 secrets and a config.host like example.com.
  2. Go to /admin/content_assets and try to upload an asset
  3. You'll get a "Something Went Wrong" message, and CORS warnings in the JS console

Expected behavior
The asset should upload successfully.

Workarea Setup (please complete the following information):

  • Workarea v3.4.14

Inverse aspect ratio not being stored on Dragonfly models

Describe the bug
product_image.inverse_aspect_ratio isn't being saved in MongoDB as a magic Dragonfly attribute. This is causing requests to fetch the asset from S3 on every request.

Expected behavior
The value should be stored in a field on the model, like other magic Dragonfly attributes.

Workarea Setup (please complete the following information):

  • Workarea Version: v3.4.16

Digital Products

Better out of the box functionality for selling digital products

Improve Plugin Template

Is your feature request related to a problem? Please describe.

  1. The generated, namespaced asset directories are missing admin or storefront engine namespaces
  2. The generated plugin's gemspec is malformed
  3. The generated version number is assumed to be beta, e.g. 0.1.0

Describe the solution you'd like

  1. Change asset directories from app/assets/[TYPE]/[NAMESPACE] to app/assets/[TYPE]/workarea/[ENGINE]/[NAMESPACE]
  2. Align the final end properly in the resulting gemspec
  3. Begin versioning at 1.0.0.pre

Remove wish_lists robots.txt entry

This line should be removed and appended from the wish-lists plugin instead. Let's consider this a change for a minor so hopefully the next wish-lists minor will be taken in tandem with workarea.

Limit cart size

add a config to the admin config settings to limit the total number of skus that can be added to a user's cart. Default setting will be 100

OOTB Segments

Segments functionality will be improved and expanded. Several life cycle segments (for example 'first time visitor') will exist out of the box and collect analytics data per segment. Segment controls will also be added to releases.

Cap number of segments

Test the impact of running multiple segments to determine the max threshold before causing significant performance degradation. Set limits in the code and admin UI based on the threshold testing results.

Alt text UI refinements

Remove alt text defaults from content DSL
Always show alt text message on content image fields
Add alt text to asset selection

Upgrade docs/ Middleman app

We're getting considerable Security alerts from GitHub regarding the dependencies of this old Middleman app. Plus Duffy's work to publish the docs can't be finished due to a dependency on The Ruby Racer.

  1. Upgrade Middleman to its latest version
  2. Figure out a solution for The Ruby Racer dependency in middleman-search

Disable Cart Popup Buttons When Quantity is Changing

Describe the bug
Changing quantity and immediately clicking "View Cart" or "Checkout" on the popup when you add an item to cart can cause the quantity change request to be cancelled before the next page is loaded. This causes some confusion on the user's part (I know it did for me) and might result in someone accidentally ordering the wrong quantity. To help prevent this, add data-disable-with to the buttons below the cart popup summary, ensuring they're disabled until the ajax request(s) complete.

To Reproduce
Steps to reproduce the behavior:

  1. Add a product to cart
  2. Change quantity in the form
  3. Before it submits, click "Checkout"
  4. Quantity will be different than the last value

Expected behavior
"Checkout" should not be clickable until the quantity update request finishes.

Workarea Setup (please complete the following information):

  • Workarea Version: v3.5.0

Unhandled exception in admin when viewing a product

Workarea 3.4.11

  • Product matches a category product_rule
  • Category is not active.
  • Admin views product and the "Categories" card attempts to reference an inactive category.

Error: ActionView::Template::Error: undefined method `id' for nil:NilClass

This test demonstrates the error:

require 'test_helper'

module Workarea
  module Admin
    class ProductCardsIntegrationTest < Workarea::IntegrationTest
      include Admin::IntegrationTest

      setup do
        rule = {
          name: 'price',
          operator: 'less_than',
          value: '10'
        }
        create_category(product_rules: [rule], active: false)
        @product = create_product
      end

      def test_view_product_cards
        get admin.catalog_product_path(@product)
      end
    end
  end
end

`_id` Omitted from Customized Fields

Describe the bug
Any customized fields ending in _id will have the _id omitted from their instance variable name, which causes issues if that name conflicts with an ivar or method that already exists.

To Reproduce
Steps to reproduce the behavior:

  1. Add a customized field called :product_id
  2. Create your customizations with MyCustomizations.new('1234', 'product_id' => '5678')
  3. Call customizations.product_id, it will be "1234".

Expected behavior
Since the product_id param overrides the @product_id assigned by the first argument, the value of #product_id in the customization object should be "5678". Digging in reveals that the value of "5678" was actually assigned to @product, not @product_id.

Workarea Setup (please complete the following information):
Workarea v3.4

Additional context
This was originally reported by John Varady on discourse.

Fix display of Upcoming Changes on Timeline View

Right now activity is sorted descending, starting with Upcoming Changes, then Today, then Historical Changes. In Upcoming Changes, however, changes are sorted ascending. There is also little consideration paid to unreleased changes in this list.

  • Sort Upcoming Changes descending
  • Add a section for Unscheduled changes above the current Upcoming Changes section

Clean up on segments selection

The current UI for setting segments needs revised to be more like our discounts and category rules builder functionality.

check_mongo_notable_scan fails when adding authentication to mongodb

Describe the bug
Workare::Configuration::Mongoid.indexes_enforced? does not support mongodb authentication as is.

To Reproduce
Add authentication to mongodb, configure mongoid.yml for authentication, and start the application

Expected behavior
Application to start up without error

Workarea Setup (please complete the following information):

  • Workarea Version: 3.3.32

Additional context
check_mongo_notable_scan checks for !Rails.env.test?, the described issue could be avoided by checking for Rails.env.development? instead. Since tests are never run against a qa/staging/production mongo cluster, it is not possible for them to enter the state we are checking (without manual intervention) and so the need to check for it in these environments is diminished.

Offer a z-index appending function for plugin use

Is your feature request related to a problem? Please describe.
Plugins that add UIs which are intended to display over other UIs (such as Search Autocomplete, modals, etc) have a hard time hooking into the base z-index system.

Describe the solution you'd like
Without spending a ton of time thinking up solutions, perhaps providing a function, much like this one, would be helpful. Ideally plugins would be able to append their z-index name and have it affect the whole app.

This way a plugin could append its name to the beginning, middle, or end of the sass list and base/all other plugins would be affected accordingly.

Describe alternatives you've considered
The search-autocomplete component inside the workarea-search-autocomplete plugin contains code that cracks into the $page-container z-index list to append itself to the end of the list. This works because it's reactionary, but it would be nice to have a solution baked into base to avoid this boilerplate code in the future.

License Language - Legal

We plan to use a hosting company to host Workarea. However, your license agreement (copied below), appears to suggest that a hosting company cannot actually host this software, as that would be a "Commerce Service" for the hosting company under your definition. This implies that the software is not really open source, as you can't have any company host it, other than your own. As most companies are not set up to manage hardware and software, how exactly is this supposed to work? We can only host the software on our own servers and are not permitted to use a hosting company to host it for us? Please clarify. Thanks.

Legal Language:

You may make production use of the Licensed Work without an additional license agreement with WebLinc so long as you do not use the Licensed Work for a Commerce Service. A "Commerce Service" is a commercial offering that allows third parties (other than your employees and contractors) to access the functionality of the Licensed Work by creating or managing commerce functionality, the products, taxonomy, assets and/or content of which are controlled by such third parties.

Install on Digital Ocean

Any documentation on how to install this application on Digital Ocean? The docs for installation are really based on a local installation, not a host. Not really clear how to install this on a third-party server, like at Digital Ocean, other than that we need Docker and Rails installed. Any ideas? Thanks.

Unify top "back to..." link in Releases flow

Is your feature request related to a problem? Please describe.
Now that Releases Calendar is back, when a user navigates to view a release from either the Index or the Release Calendar, the link at the top of the page will potentially take them back to the wrong page.

Describe the solution you'd like
Make all "back to" links in this flow say "Release Calendar" and link back to the calendar accordingly.

Additional context
Frustration gif from @ebigler:
All-Releases-Link

Fix combining category and not in category product rules

Describe the bug
When you create product rules with a category rule for multiple categories and another rule to exclude a category, it doesn't return the correct products.

To Reproduce
See attached test

Expected behavior
See attached test

Workarea Setup (please complete the following information):

  • Workarea Version: master

Tags Can Be Duplicate

Describe the bug
It's possible for tags on Workarea models to be duplicate, which causes incorrect tag counts in the UI.

To Reproduce

  1. Workarea::Catalog::Product.create!(name: 'foo', tags: %w(foo bar baz foo))
  2. tag = Workarea::Catalog::Product.all_tags.find { |tag| tag[:name] = "foo" }
  3. tag[:count] # => 2

Expected behavior
Duplicate tags in the same model shouldn't count as multiple instances. tag[:count] in the previous example should be 1.

Workarea Setup (please complete the following information):

  • Workarea Version: v3.4

Additional context
This was reported by an SI while working with the blog storefront.

Improve display of referrer URLs on Orders Show view

Is your feature request related to a problem? Please describe.
Long referrer URLs look terrible in the table on the Orders Show view.

Describe the solution you'd like
Plop these URLs in a text box. Add a copy icon/link.

Additional context
Screenshot:
Crazy-Long-Referrer-URL

Spruce up Admin Timeline View

Is your feature request related to a problem? Please describe.
The Timeline View for all objects in the Admin has been reported as confusing.

Describe the solution you'd like
Investigate and come up with a better solution for displaying past and upcoming changes in this view.

Additional context
v3-edge demo workarea com_admin_timeline_Z2lkOi8vZGVtby9Xb3JrYXJlYTo6Q29udGVudC81YzU0ODhkNDhlNDRkZDUwMGIyZDNjMGQ

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.