At Endertech, Planning is the first phase in our methodology for custom software development. The goal of this phase is to produce clear technical documentation that tells the development team exactly what they’re supposed to build, and how.
Through a series of consultations, we will interview you, discuss the features and goals of your project, share with you options for satisfying those goals, and help suggest specific solutions.
We will together make decisions about which solutions to implement, and then we will detail the technical requirements of those solutions, to include database design, business logic, and visualizations as necessary.
This all gets documented in our project management system, Jira, which is specialized for software development. The final result is an actionable, organized, prioritized, and estimated development plan, an engineered blueprint if you will, that the development team can work from.
Why do I need Software Planning?
You may be thinking, “I know what I need! I’ve already documented my business needs. I even have visuals of the system flow and various screens!”. Well, if you do, fabulous! You may already be ahead of many project requests we receive. On the other hand, you may have only the idea in your head… and perhaps that idea is grand in scope, but fuzzy on the details.
Either way, the idea has to move from your head into ours… and in fact, into many heads over here! It has to become crystal clear and in sync between all of our minds. Chances are, unless you are an experienced software developer, your current documentation is probably not yet at the level of detail needed to develop that mutual clarity and enable us to begin coding immediately.
So, how do we arrive at that crystal clear shared vision? That’s right, you guessed it! Through the consultations, discussions, meetings of the minds, and documentation style that occurs through our Planning Phase.
Completing this before estimating and beginning development on your project has so many benefits for you!
Make Clear the Scope
We meticulously document and estimate detailed technical requirements for every feature of the system, perhaps some you didn’t consider or even took for granted. For instance, the required administrative interface implied by your software’s outward facing UI is a common oversight.
We describe the tables needed in the database, the fields needed within the tables, and what their data types are. We write out the rules of any custom logic. We wireframe screens and create flow charts as needed.
The effect is like that of creating blueprints for a contractor about to build your house. There is a clear guide to follow and the potential for major misunderstandings is eliminated.
Without a solid software development plan, you risk out of control costs, or possibly worse… spending the money with no satisfactory working software produced.
There are many variables involved in custom software development, and the planning phase provides the forum to identify and flush those variables out. To reduce or eliminate variables, we perform research, pre-think how we will architect solutions, and confirm with you. This reduces the chance that costs differ from initial estimates, and reduces the chance that features are built incorrectly or with unforeseen consequences.
Increased Success & Satisfaction
The primary ingredient of our mutual success and satisfaction at the end is met expectations. When one side’s expectations are out of alignment with the other, and do not get realigned, this is a recipe for pain.
The meeting of the minds and resulting documentation produced through a planning phase create clear agreements on details before either party has spent too much time or money. The plan gives us accurate time and cost estimates, and shows us what the end result should look like before we begin coding.
The result is increased chances of success and satisfaction since we’ve developed mutual goals and they are clear, documented, and visualized.
How Software Planning Works
We have engaged in a potential partnership. The first step is to schedule a series of consultation meetings. Project Managers, System Architects, Analysts, and Designers will lead these meetings. Analysts will interview the subject matter experts to obtain valuable information about key features and potential end users of the system. This collaborative process guides the written documentation and technical blueprints of the project plan. Together, we will illustrate and flush out any visuals that need detailed analyst.
Developing Detailed Backlog
During the meeting sessions, all key features will be documented in our Project Management system Jira. We arrange large features into buckets we call Epics. Epics contain smaller details that we refer to as User Stories. All User Stories are categorized into Versions. Versions are typically related to specific business objective. To read more about how we setup project plans in Jira, please read here. https://endertech.com/blog/setup-jira-project-success All visuals derived from white board sessions, and wireframes will be attached to specific user stories.
Certain features will require creative solutions and visualizations. Designers will help assist in whiteboard sessions to illustrate a rough example of how the page will look and logically function. Workflows that span multiple end users can be illustrated effectively with wireframes. Business processes can have multiple steps, alerts, notifications, emails, functions, calculations, that require detailed analysis. Interviewing the subject matter experts is key to assist these visualizations. Example, if we are working in a financial area of the system, we will want input from accounting CFO’s as an example.
Endertech Project Managers, Architects, and Designers will have concluded a series of consultation meetings. We have arranged all project requirements into written documentation.Technical blueprints for the design and development of the system are ready to handoff to developers immediately. We have completed all white board illustrations, wireframes, sketches, and annotated screenshots with detailed notes. Endertech and Stakeholders have a comprehensive understanding of the entire projects scope, timeline, and cost.
At this stage, we are prepared to deliver an accurate proposal and all visual assets. The proposal will have multiple cost options per Version. Versions illustrate potential timelines for the project with specific objectives of scope.
Selecting a shopping platform is the foundation of an ecommerce business’ operation. Most of the leading platforms are industry agnostic, and all of them competently provide core shopping cart, payment, shipping, and store management features.
Yet, as with any choice, the larger the number of options available, the more nuanced the best decision becomes for a particular business’ needs. For this reason, we have constructed this guide, and encourage you to contact us, or other ecommerce professionals, to help you make the best decision for your specific business, after consulting about these nuanced differences.
The Endertech team has compiled the following overview of 7 factors to consider when deciding between the similar Shopify and BigCommerce SaaS ecommerce platforms, and the leading open source ecommerce platform, Magento.
With more than a decade’s experience developing successful online storefronts and operations for clients across a broad spectrum of industries, here are Endertech’s insights into factors, features, functionality, and costs to consider in your selection process.
1. Platform Costs
Shopify and BigCommerce require a perpetual monthly fee, but embedded within is the cost of hosting as well as general evolutionary platform upgrades. Shopify and BigCommerce both offer tiered pricing based on monthly sales volume at quite similar price points for small to midsize operations. For larger volumes, BigCommerce has a lower monthly cost than Shopify. All three platforms charge in the $2,000 neighborhood per month for their enterprise solutions:
In lieu of the mandatory and scaling monthly fees, required by Shopify and BigCommerce, Magento website owners have to pay only for hosting at a minimum, but should consider also engaging a development partner to help keep the Magento platform up to date with the latest versions and patches released by the community. Such fees are generally flat, monthly.
Highest payment processing fees of 2.9% + 30¢ fee per transaction. Designed for small businesses with revenue <$50K/year
Slightly lower 2.5% + 30¢ fee per transaction. Includes additional features: reports and gift card capabilities
Slightly lower 2.4% + 30¢ fee per transaction. Consider Plus if your shop’s revenue >$300K/year
Designed for large operations. Allows for operating a wholesale B2B channel, branded checkout, customer support, automation
Highest payment processing fees – 2.9% of sale + $0.30 per transaction. For small businesses with revenue <$50K/year
Slightly lower fees of 2.5% + $0.30 per transaction. For businesses with less than $125K in annual salesMore features like CC vaulting
Fees of 2.2% + $0.30 per transaction. For <$600K in annual sales. Increases $150 per $200K annual revenue
For large sales volumes, B2B, and comes with much more robust customer support. Subscription pricing is based on annualized order volume.
$2,000/mo*$4,000/mo. (cloud hosting included)
No per transaction fee levied by Magento; only by the payment processing partner chosen. Hosting and maintenance costs are separate cost line items, and are flat relative to revenue, removing calculation headaches tiered to revenue as charged by the SaaS platforms
Enterprise option is suited for larger corporations and comes with robust customer support
Initial development costs: Dependent on the complexity of the store desired. Out of the box development on all three ecommerce platforms can be similarly simple if all the product data and commerce configuration information is readily at hand. Shopify and BigCommerce are structured to service conventional ecommerce features. Magento is capable of being customized to service virtually any ecommerce scenario envisioned.
2. Product Pricing Capabilities
The art of ecommerce involves intricate pricing strategies. Each platform allows for basic strategies like sales pricing, discount pricing, BOGO offers, free shipping offers, etc.
Magento excels at offering a variety of pricing variants such as sales, wholesale, and designated customer group discounts. A broad roster of extensions (add-ons), which may carry a one time fee, augment its core capabilities for special scenarios such as flash (very short duration) pricing, specific customer negotiated pricing, or ability to mask pricing other than to enrolled subscribers. Add-on plugins involve a one-time cost to acquire plus some invested developer time to integrate.
The basic core Magento installation is able to produce multiple website viewing options, each website version possessing the ability to display different pricing for the same product/catalog.
BigCommerce and Shopify offer these advanced pricing functionalities only in their Pro/Plus and Enterprise levels, often by way of adding external plug-in applications, many of which carry a recurring monthly fee above and beyond the core platform’s monthly fee.
Magento is a shopping platform solution you own, and can viewed as a real asset for your business with a balance sheet presence. SaaS platforms are lease arrangements, so there is no recognized financial ownership of the platform.
3. Back-Office Integration
Back-office integration references the platform’s ability to integrate with back-office accounting, purchasing and inventory systems. All three platforms work well with the standard offerings from providers like Quickbooks, CounterPoint and Fishbowl using extensions from a variety of providers like Mag Manager, Mage Plaza, etc.
Magento is the most likely to be accommodating toward the more custom, obscure, or industry specific back-office solutions, as its source code can be customized to connect with a myriad of exotic backend softwares, but such integrations will typically involve some additive custom development expense. Magento can also be customized to read order data and add in inventory or products from any niche back-office system.
The Shopify and BigCommerce ecosystems have some supplemental back office services at a additional monthly fee. For example, BrightPearl is a large ERP and back-office provider offering integration with both Shopify and BigCommerce for order management, product purchase replenishment, financial management, and warehousing inventory management.
SellBrite is another popular multi-channel listing app that integrates with BigCommerce and Shopify. Magento offers the most flexibility. Among the SaaS offerings, BigCommerce Enterprise integrates with 13 established ERP platforms; a more robust back-office integration offering than Shopify Plus.
If making a choice to go with a SaaS platform, make sure back-office operations are not likely to have unusual needs that go beyond the restrictive SaaS options, especially given the expense already invested in a firm’s ERP.
4. Customization Options
Magento, as an open source solution, provides more options for customization of added features and functionality. The Magento community continues to expand and improve the feature set offerings. The upfront development costs will increase with the amount of customization desired.
It should be noted that currently, a transition is underway away from Magento 1 (with a support sunset deadline of June 2020) to the new Magento 2 architecture, necessitating a comprehensive platform upgrade for existing Magento 1 clients. Such a major platform upgrade with its associated costs presumably can be anticipated to happen about once a decade.
5. Payment Gateways
Magento, Shopify and BigCommerce work with most of the major payment gateways (such as QuickBooks, PayPal, Authorize.net, Stripe, Amazon Pay, World Pay, Samsung Pay, Apple Pay, Google Pay, etc.).
Magento can customize access for any payment gateway not already serviced by an existing extension in the marketplace.
Shopify integrates with many of the popular payment gateways, and has a pricing bias towards its own Shopify Pay. However, as Shopify Pay will not service some verticals (such as pharma, adult, cannabis, alcohol, gambling, weapons, etc.). Clients in those industries must use one of the other external payment gateways, enduring the additional percentage fee that Shopify levies when using another provider other than Shopify Pay.
BigCommerce does not tack on additional fees for using a different payment gateway as Shopify does.
6. Shipping Services
All three platforms handle simple shipping well with their out of the box configurations. The three integrate with all major standard shipping service providers like UPS, USPS, DHL Express, Fedex.
For more complicated shipping configurations, services like ShipStation offer more in-depth shipping management to leverage unique omnichannel setups. This is typically for larger scale business who handle hundreds of shipments per day.
Some businesses have unique shipping rules like a use of a courier service, adding 15% to UPS shipping costs, as well as specific shipping restrictions based on weight / destination / shape.
Custom rates can be loaded into each of the three systems based on geographic destination, zip-code, and product weights. These systems also allow for restricting designated shipping options based on destination or attributes of products in the shopping cart. Free shipping offered for orders over a specified dollar amount is a standard feature across all three platforms, and has become a compelling feature in enticing customers to make their purchase at an ecommerce store.
7. Sales Tax
All three platforms are adept at updating to account for changes to sales tax laws, which often happen at state and county levels.
Integration with tax software that automates tax calculation (TaxJar, Avalara, Vertex) are popular due to the increasingly complex nature of internet sales tax. BigCommerce comes already integrated with Avalara, which automates the complex tax laws based on a customer’s shipping address.
For international ecommerce, Magento excels at designating tax class definitions if tax needs to be charged for the transaction based on product, weight, and destination (including European VAT). Tax classes can be assigned to shipping, products and customers, as different regions apply taxes to varying baskets of categories.
8. Catalog Management
All three platforms can theoretically handle any size catalogue, however Shopify is capped at 100 variant combinations per complex product and only three discrete variant options – such as size, color, and sleeve length. BigCommerce is more flexible and can handle up to 600 variants, while Magento is the only option that offers truly unlimited scope for the size and varietal mix of a merchant’s product catalogue. Magento supports complex product types, including grouping and bundling designated products.
Configurable – aspects of a product like size, color, material can be configured as varietals of the core product
Simple – each product version has a unique SKU and price
Magento offers grouping and bundling of products, to package together multiple simple products to create a bundle that can be clustered and sold at a fixed or dynamically generated price.
Magento’s approach to catalog management enables a merchant to present products on their website in a variety of manners. A product can be presented as a singular static product, or as a product which can be configured by options the shopper selects, such as size, color, material, sleeve length, etc. Catalog management options also include the bundling together of multiple products allowing a merchant to package various product SKUs into a grouped offering, such as for a gift basket or a uniform consisting of multiple pieces. Grouped products enable customers to quickly add many products to the cart simultaneously.
Product Attributes are another key aspect of identifying and describing products as Magento allows for searching based on attributes. These can be grouped into attribute sets, which also is key to structuring a product catalog with well defined classifications. Different stores within the same database system can stem from different root categories offering different product catalogs and Magento also offers a ‘visibility’ tuning feature to control the how, when, and were any product can appear in any particular store.
BigCommerce can handle up to 600 variants for any product, and Shopify can handle up to 100 variants for any product.
8b. B2B and Wholesale
Magento’s core structure includes features that are important for B2B such as the ability to vary prices for specific customer groups; and the ability to display two different websites from the same Magento administration. The open source version can be expanded to fulfill many B2B business needs using pre-built extensions enabling customer specific pricing, request a quote functionality, custom catalogs per customer, multi-source inventory, dropship fulfillment, etc. through customizations that a website development agency like Endertech can undertake.
Magento Enterprise comes with B2B modules included for offering catalogs customized per customer (custom store experience, pricing, sales data reporting), staggered user access permissions (by team, role, task responsibility, status, geo) and an expansive content management system.
Shopify only handles B2B functionality via its Enterprise offering, which includes task automation and the ability for store activities to trigger response actions.
BigCommerce – offers B2B pricing features on Plus subscriptions and above. This allows for creating customer groups with special negotiated prices, tied to your customer’s user account (this means they have to be signed in, in order to see the price differences). These special prices can be tuned to any detail of your product catalog; meaning that you can place the discounts according to certain categories, SKUs, etc.
8c. Multiple Store Fronts (Brands)
For merchants who wish to present distinct store fronts for a collection of in-house brands, Magento offers the easiest pathway toward setting them up as individually branded web-stores with separate orders, items, and inventory data, all sourced from one single database installation. The multiple website mode allows Magento to sell the same product in different prices on each site, on completely different domain names with different payment types and distinct shopping carts. There is also a multiple store view approach (such as multilingual), which does not have as rigid a need for brand segregation, thus allowing for shared shopping carts in support of different product catalogs and different look/themes for each store.
Endertech is comfortable recommending all three platforms reviewed here to our clients. More small ecommerce sites in the USA are built on Shopify than any other platform simply because of its user friendly interface and its integration of Amazon services. BigCommerce, while owning a much smaller share of the market, has been growing rapidly due to its similar offering to Shopify, albeit with slightly lower costs and additional offerings bundled into its core offering with no additional cost. Shopify and BigCommerce are considered to be Software as a Service (Saas), so their platforms are essentially closed and unable to support unique or custom back-end office infrastructures. SaaS platform advantages rest mostly with being slightly easier to operate for simple use cases (small catalogs, simple e-commerce functions) and set up without developer assistance, yet carry embedded leasing fees for the life of the business operating on those platforms.
Magento, on the other hand, has no recurring monthly fee, as you own the store once development is complete. Firms like Endertech can help you craft an ecommerce storefront using Magento that precisely matches your unique business operations. Enterprise size operations (>$5M in annual sales) generally need a custom solution and pricing, which is Magento’s strong suit, but can also be achieved with each of the three platforms studied here.
For businesses planning on working with a professional development partner, Endertech has helped many businesses choose the right ecommerce platform and harness them effectively for store design, content creation, marketing initiatives (including SEO), and of course, ecommerce functionality. To learn how we can help you maximize the productivity of your business’ shopping cart platform, call us on (310) 400-0800, or use our contact form.
You’ve probably received several emails by now from both Authorize.Net, possibly from Magento, and maybe even a critical alert in the Magento admin about some upcoming breaking changes with Authorize.Net.
In this article we’ll try to help you understand what’s going on and what needs to be done.
What’s happening to my site?
Authorize.Net is making a change on June 28, 2019 that affects sites utilizing Authorize.Net. This includes Magento stores depending on their specific Authorize.Net configuration. The change will
Magento has put out a patch for legacy Magento 1.x and Magento 2.x sites that fixes the issue before the June 28, 2019 deadline.
The Magento patch is relatively straightforward but it will require the attention of a developer to apply and test it. You may also be using a third-party extension, and that may have its own update from the third-party vendor that needs to be applied and tested.
If your site isn’t using Magento but still uses Authorize.Net for transactions, you may need to incorporate a custom change, which we can help analyze and determine any necessary steps.
Can you help me figure this out?
Contact us if you need help identifying if you will be affect on June 28, 2019 and assistance with applying the patch.
I’d like more details on this change
What’s an MD5 hash?
Authorize.Net is removing a feature of their API that helps with security called a “hash”. A hash is an algorithm that takes a bunch of data and reduces it to a standard fixed amount, typically used for secure verification.
This original hash that Authorize.Net used is the MD5 algorithm, published in 1992, and is used in conjunction with an HMAC. The HMAC process uses a secret key only known to the website and Authorize.Net so that the website can confirm the data it received is valid and from Authorize.Net.
How is the hash involved?
Typically when communicating with Authorize.Net’s API, it’s from the website to Authorize.Net using HTTPS, like your web browser uses when talking to your website during checkout. HTTPS provides the authenticity and confidentially thus the API hash verification isn’t of much benefit.
However, some API integration methods of Authorize.Net, such as the Direct Post Method, relies on Authorize.Net making a connection the website to update the result of the transaction, such as success or failure.
How does the hash keep my site secure?
It is also possible for a malicious actor to pretend to be Authorize.Net, which they could also update the result of the transaction to say success as a method of fraud. However, since the malicious actor does not know the shared hash secret, hash verification fails and the attempt to update the transaction status is rejected.
Computers have become much faster since then which has threatened the security of MD5 and so newer hashing algorithms have been created to stay ahead of that curve.
A couple years ago Authorize.Net added a new hash method using SHA2 (in this case specifically SHA512, a specific method in the SHA2 family), which was published in 2001. This worked alongside MD5 with Authorize.Net providing both.
How will this change affect my site?
On June 28, 2019, Authorize.Net will no longer be providing the MD5 hash and only providing the SHA2 hash.
Applications that were built to depend on the MD5 hash will no longer be able to verify the MD5 hash after that deadline. Because the hash verification is a vital step in ensuring your website is communicating with Authorize.Net server, the transaction process should fail.
If you’re running a Magento site and using the “Authorize.Net Direct Post Method” payment method, you will need to patch your site or switch to a different payment processor, such as Braintree or PayPal.
If your site should be verifying the hash, it will need to migrate to verifying the SHA2 hash before June 28, 2019.
I’m a Magento developer. What do I do?
If you’re using the stock Authorize.Net payment method you basically just need to apply the appropriate patch. There’s different methods of doing so though depending on which version of Magento and which method it was setup.
Magento 2.x via composer
The steps for handling applying this patch are relatively straightforward and are based off this guide: https://support.magento.com/hc/en-us/articles/360005484154-Create-a-patch-for-a-Magento-2-Composer-installation-from-a-GitHub-commit
We recommend taking this approach because it tracks the patch as part of the project and automatically applies it. This aides projects with multiple developers and avoids the patch being forgotten on deployments.
Create a “patches/composer” directory in your code’s root
composer require cweagans/composer-patches
Download the patch file into that dir and replace “vendor/magento/module-authorizenet/” references with an empty string
Update composer.json’s “extra” section with the stuff below (the section probably exists already so add the “patches” and “composer-exit..” keys)
composer -v install (verify the patch applied by checking the source code since the output is a little confusing)
composer update –lock (updates your composer.lock hash)
In this case you probably cloned the magento repo from github and have all of the Magento code committed instead of in composer packages.
In this case, download the github version of the patch and use “git apply” to apply the patch. Test, commit/push.
Magento 1.x using Direct Post Method
You may not need to patch if you’re not using the “Direct Post Method” payment method. Check your store configuration to verify which method is being used. The Direct Post Method is recommended though due to its potentially lesser scope for PCI-DSS compliance.
The simplest is to download the PATCH_SUPEE-11085_CE_22.214.171.124_v1-2019-02-28-05-21-55.sh file from the “Release Archive” tab on the Magento Downloads page, or just this link: https://magento.com/tech-resources/download#download2280
Move that downloaded file to your project root and apply it via executing: “/bin/sh PATCH_SUPEE-11085_CE_126.96.36.199_v1-2019-02-28-05-21-55.sh”. Test, commit/push.
There’s been unofficial reports of issues with this patch. We’re still in the process of verifying this.
I have a custom site. What do I do?
This is more complex because it depends on your unique situation. You might not need to be verifying any hashes so you’re fine. Your site might be verifying the MD5 hash when it doesn’t need to. Or, your site might already be using the SHA2 hash.
You’ll need to engage with a developer to help you find out. One option that might be possible, after March 7th, you can test your site against the Authorize.Net sandbox and if nothing breaks, you probably don’t need to change anything before the June 28, 2019 deadline.
Now is a good time to review your Authorize.Net integration method
However, if your site is using a deprecated Authorize.Net integration method (SIM, AIM, CIM, DPM, etc.) then now is also a good time to begin the planning on updating the integration to one that is not deprecated. Either remaining with Authorize.Net or using a different payment processor.
The primary reason is that, much like the MD5 removal, the other integrations can be officially removed without much notice. Better to be on the safe side.
Can you help me with this?
Of course! Please contact us today so we can help you before the Authorize.Net deadline starts affecting your business.
I recently had the pleasure of being part of the team at Endertech that designed and developed the marketing and API documentation website for EdgePay, a new full-service payment gateway and merchant account provider. I was doubly excited to be both the creative director and frontend developer for the marketing part of the site, which we built in Drupal 8. In this day and age, it’s critical for web designers to also have solid knowledge of HTML and CSS, so they can understand the flip side of designing the UI of a website: actually implementing it. In the case of EdgePay, I got to take on both roles, and I learned some neat CSS3 tricks along the way. In this article, I’ll detail some of what I learned by focusing on the homepage hero banner, which represents some of the advanced CSS functions we employed throughout the site.
I was especially impressed by the complex and refined background styles that nowadays can be achieved through standard CSS alone, effects which historically would have required prebaked background images or hacky methods. There are many advantages to using pure CSS as opposed to images, which can be heavy and slow-loading, can appear blurry or distorted, and can complicate implementation of a responsive design that needs to work on both desktop and mobile. Elegant and well-designed CSS, on the other hand, loads in a snap, is always pixel perfect, and can be implemented in a way that works for both desktop and mobile without having to manage multiple sets of assets for different device types.
Now let’s take a more in-depth look at how Endertech leveraged CSS3 to translate EdgePay’s contemporary branding to a bespoke responsive website.
Hero Banner Overview
Here’s a screenshot of the EdgePay homepage hero banner:
There were several different challenges in implementing the design, including the rhomboid shape of the text box. However, let’s focus on just the background:
The hero banner’s CSS background attribute actually contains three discrete elements layered on top of each other to achieve the full effect. The base layer is a rotated linear-gradient with a sharp transition between color stops, which divides the hero banner space in half horizontally and echoes the slant of the EdgePay logo (which, by the way, Endertech also designed; you can read a case study here). On top of that, there’s a simple top-to-bottom linear-gradient, which fills in most of the color. Finally, the top layer is a repeating-linear-gradient, which produces the horizontal bands that, again, echo the “EP” symbol of the logo.
Here’s a mockup that illustrates the three layers and how they interact optically to produce the final effect:
In the shorthand background attribute, the first gradient is the top layer and the last is the bottom layer. The order is important because each layer will occlude any layer underneath it, or otherwise affect it depending on the background-blend-mode used. We’ll get to that attribute later, since it’s important, but for now let’s take a look at each background layer individually.
Layer 1: Linear Gradient with Rotation
The basic structure of the hero banner is a two-column layout, which is emphasized by the strong diagonal line running down the center of the box. In our CSS, this effect is achieved by a linear-gradient rotated 105 degrees clockwise from the vertical. Here is an annotated screenshot:
By default, a gradient will be vertical, with the first color stop located at the top of the box, and the last at the bottom; this could be explicitly defined with “to bottom” or “0deg,” but it’s not necessary. To rotate the gradient clockwise away from the vertical, you can define the amount of rotation in degrees or as a fraction of a complete turn (e.g., “.25turn” equals “90deg”). In our example, we have specified 105 degrees.
The starting and ending points for a rotated gradient are the points along the gradient line where imaginary perpendicular lines originating from the closest corners of the box intersect the gradient line.
To produce two solid bands of color, we need to define four color stops. In our example, the second and third color stops are actually placed at the same point down from the origin point of the gradient: 50%. This is what produces a sharp color transition, rather than a gradient per se.
Layer 2: Vertical Linear Gradient
With the base layer in place, we’ve blocked out the basic structure of the hero banner, but it still looks pretty bare. To fill in more color, we layer another linear-gradient that produces a gradual transition from lighter blue at the top to darker blue at the bottom. Here is a screenshot of the isolated layer:
And here’s the CSS:
This is by far the simplest CSS of the three gradient layers in our background. Indeed, our notation contains just the minimum elements needed to define a linear-gradient.
As noted before, a gradient will be perfectly vertical unless a rotation is specified.
Additionally, the minimum number of color stops is two. Since we want a progressive and consistent transition between the two end-point colors, we don’t need any additional color stops, and we don’t need to define the color stops’ positions, as we did with the first layer, since by default they’re placed at the top and bottom of the box (equal to 0% and 100%).
Layer 3: Repeating Linear Gradient
With the first two layers in place, we have a final layer to add: the two blue horizontal bands that echo the letterforms of the “EP” symbol in the EdgePay logo. We’ve rendered them with a repeating-linear-gradient. It’s similar to a linear-gradient, but the length of a repeating-linear-gradient doesn’t cover the entire box on its own, and the gradient repeats as many times as necessary to do so. Here’s a screenshot of the isolated top layer with some notes about what’s going on in terms of defining the bands of color:
And, as before, some notes to make sense of all of this:
Although the layer is made up of five bands, alternating transparent and blue, if we break them down in terms of percentages of the total hero banner height, we find that we can simplify the definition of the gradient to just two bands of color, repeating them to create the final effect. We could have used a more complex linear-gradient to explicitly define all five bands of color, but this is a good example of where using a repeating-linear-gradient can be more efficient.
Although the gradient is repeated three times, we don’t see six bands of color on the screen (2 bands x 3). The last blue band is hidden because the gradient will add up to 100% of the box height when it is repeated. The way we’ve defined the gradient, repeating it three times adds up to 112.5% of the element height; the extra 12.5% is the third blue band, which doesn’t get rendered.
As is the case with a linear-gradient, a repeating-linear-gradient by default begins at the top of the box and repeats vertically from there without any rotation, so we don’t have to explicitly include “to bottom” or “0deg” in our shorthand CSS as those values are implied.
The Final Piece: Background Blend Mode
We have all three layers in place, but without a background-blend-mode specified, this is what we see:
Because the top repeating-linear-gradient has transparency in it, we can see the darker blue linear-gradient behind it. However, the repeating-linear-gradient is too bright, and the bottom layer, with the diagonal line running down the middle, is completely hidden because of the middle layer.
This is where the background-blend-mode attribute comes in. If you’ve ever used Photoshop or other common graphics editing programs, you’ll be familiar with the possible values: multiply, screen, overlay, etc. You can see a full list of blend modes here. I could devote a whole separate article to the details of how blend modes work, but basically, blend modes take the color values of the two or more layers and manipulate them in a mathematical way. If you blend two colors with multiply, the resulting color will be darker than either of the two source colors (unless one of the source colors is white, in which case the resulting color will be the same as the darker of the source colors). Conversely, blending two colors with screen will result in a color that is lighter than either of the two source colors (unless one of the source colors is black, in which case the resulting color will be the same as the lighter of the source colors). The precise mathematical manipulations for the other blend modes get even more esoteric, but hopefully these two examples give you the basic idea.
In the case of our hero banner, we’re using multiply:
With the blend mode in place, we see the final result:
Voilà! I hope that this focused look at a single user interface element has illuminated a few of the powerful CSS functions that web designers and frontend developers have at their disposal these days. There’s much more to the linear-gradient, repeating-linear-gradient, and background-blend-mode functions than I’ve laid out in this article. For an even deeper dive, check out the following pages, which I found useful in putting together this post:
A growing roster of businesses have been snared by ADA lawsuits targeting websites. The Trump administration’s unfortunate decision to stop drafting rules for website ADA compliance leaves the marketplace vulnerable to a potential tidal wave of legal action.
Some websites having already experienced ADA lawsuits levied against them now have ugly disclaimers front and center on their homepage pushing down valuable information about their actual business below the fold, which is a form of Siberia for website content:
Breaking News 2019 - A class action lawsuit has been filed in New York on Thursday (1/3/2019) against Beyoncé’s company Parkwood Entertainment claiming its website denies equal access to visually impaired users. A blind woman named Mary Conner argues Beyonce.com has no alt-text coded behind its photos, which violates the Americans with Disabilities Act. There were 1,053 such suits filed during the first six months of 2018.
As the best protection is good prevention, here is what to know about ADA website violations and what is needed to be in compliance, so as to avoid potential lawsuits and content modifications to your website that would obscure your primary business purpose.
What is ADA Website Compliance?
The goal of the 1990Americans with Disabilities Act (ADA) is removing barriers preventing a disabled person from accessing facilities, services, and benefits akin to a non-disabled person. As a result, while businesses have made physical plant adjustments such as installing wheelchair ramps, many still don’t realize their websites should also be aligned with the ADA.
The key tenant for ADA website compliance relates to if the website can be used by people who have problems seeing or hearing. As such, an initiative by a consortium of web innovators has published the Web Content Accessibility Guidelines (WCAG), which addresses how to tweak business websites; typically stocked with images and video; the type of assets that tend to be more difficult to modify.
The key is what’s termed WCAG compliance testing. WCAG defines how to make web content more accessible to people with a wide range of disabilities including visual, auditory, physical, speech, cognitive, language, learning, and neurological disabilities.
For a website to be deemed accessible the content must be coded so screen-reading software can convert the words to an audio translation. Video that appears on a website must include descriptions for the deaf and images must have ALT text embedded in the code. All interactive functions must be operable through keyboard commands for people who can’t use a mouse. Color contrast needs to be verified to be in compliance. Proper HTML website code semantics must be in place in a manner where a computer screen reader can understand the web page document on behalf of a blind person.
Is My Website at Risk?
Consult a checker, such as: https://achecker.ca/checker/index.php – punch in a URL, specify what level of WCAG you want (though version 2.1 is not yet supported), and it will generate a report:
Development Agencies Can Remedy
Website development agencies can be enlisted to perform the necessary WCAG compliance testing and proceed to then make the assessed modifications. Most modifications will have no bearing on the general look, feel, and functionality of the site, but will be essential to the underlying codebase in a manner impacting how effectively and comprehensively the website conveys the same information to the tools used by a disabled visitor to that site.
B2B transactions can involve large and complex ordering processes necessitating robust front and back-end systems. Here are some of the inherent capabilities an ecommerce system built on the Magento (typically their enterprise edition) platform can provide that specifically aide in operating a multi-faceted B2B business.
Fast Ordering Process
Convenient features where buyers can directly enter product SKUs, use requisition lists, or copy a previous order for a fast checkout. This benefits customers who already know what they want; allowing them to bypass the product browsing step in order to quickly place an order of the products they desire. Benefits include accelerating the purchase process, facilitating rapid reorders for common purchases, and driving recurring revenue with fast, frictionless ordering.
Request a Quote System
Bulk orders are common in B2B so an advanced ecommerce system with a streamlined workflow can attract buyers requesting a quote. The process involves adding items to the shopping cart, followed by negotiating a quote, and eventually having credit reimbursed once payment is made. The website admin have a quote management panel that provide access to Quote Details, Historical logs, communication data, Quote Negotiations. A Merchant can offer price changes and shipping offers, and set expiration dates for quotes.
Personalized Customer Experience
Magento enables offering different buying experiences based on a customer’s size or industry to tailor experiences based on browsing behavior (products viewed or added to cart) or purchase history (spend and product quantity).
a) Custom Shared Catalogs
Magento allows you to create multiple catalogs and share them among different companies in your system. So the public catalog and what each B2B customer is able to view upon login could be different and highly customised exposing some catalogs to only some customers.
b) Customizable Pricing
Magento 2 has several pricing options in Magento 2 to help serve your business customers. Group pricing allows you to offer promo prices for selected customers. Tiered pricing makes it possible to offer a certain price to a customer group based on the quantity that is being purchased. Dynamic prices involve reflecting pre-configured business rules and negotiated contract pricing terms.
c) Content Staging
Magento’s content staging feature can help create dynamic pages for industries that are cyclical seasonally allowing for product displays, category selections, and prices to change according to a predetermined schedule.
d) Rule-Based Product Relations
Inherent product relationship rules in Magento allow creating of links between products in order to standardize targeted product merchandising, including if for just a specific period. Rules features exist to determine the order in which the products appear on the page, and decide which products are presented as related products for upselling and cross-selling opportunities
Multiple Brand Offerings
B2B firms may offer multiple brands through channel partners and specific to key accounts. while offering a consistent brand experience for each brand.
Magento allows you to create ‘separate Stores’ , websites and Store Views creating different branding experiences for each view if needed. This means you can have a separate B2B website, or B2B store within your website, and manage this offering from the same place as B2C sales. Additionally, the store view allows for multiple language options, making it easier to offer your B2B products to an international audience. You can also accept multiple types of currencies.
Advanced User Account Management Support
Magento offers a refined user management system for corporate accounts allowing companies to segment by teams, divisions, or regions. Each company (and buyer) can have their own set of roles and permissions into the system (such as for designating who can issue order approvals). New self-service tools allow corporate accounts with multiple buyers and layered organizational structures to interface with the system as per their allocated access.
Lines of Credit
B2B ecommerce often involves purchases financed on credit. Magento can store all payment and purchase transactions, and enable credit allowances to credible buyers. Magento B2B payment options included purchase orders, invoice me, and sophisticated authentications for various options – purchase order limits, good credit standing, etc. Also payment options can be set up separately for B2B and B2C customers when both exist on the same Magento installation.
Co-existence of B2C and B2B
Magento has the capacity to host both B2C and B2B on the same installation, with different pricing, catalogs, payment options to be made available on each site with ease.
ERP & Back Office Integrations Magento has a plethora of back office ERP (enterprise resource planning) connections to major companies like Netsuite, Microsoft Dynamics, SAP, Epicor, and many other ERP systems. ERP software improves the integration of data between different business processes. Many Magento installations incorporate ERP systems by using some form of ERP software to help power their business.
Hello, I’m Maira, UI/UX designer here at Endertech. My primary role is working directly with the intended end user of the software to optimize each feature being considered. I typically start by understanding the requirements of the feature. After a complete understanding of the requirements, I like to personally interview the intended user. These subject matter experts will provide key insight into how I should approach the design of the software.
Greets! My name is Cheyne Phillips, a Senior Project Manager here at Endertech. My core competency is leading the design and development of custom software projects. Maira and I typically work in harmony to develop and design integral pages for specific end users.
Custom software projects are typically intended to improve and digitize many aspects of business operations. Ideally, the design of those projects is measured against certain business requirements. These business requirements are calculated against a series of key performance indicators. If we have studied the requirements and key performance indicators correctly, we should have designed a system to maximize efficiency.
An often overlooked aspect of the design is the systems architecture. Database modeling defined user roles, and conceptual visual screens are typically the first steps of design. The business requirements and the iterations of the feature are visually and textually explained below.
A Car Dealership business came to us with an idea for a project. The general idea was a system that would digitize sales contracts between the dealer and buyers. We built a system that allowed the Dealer to associate products and product attributes with Sales Contracts.
The products are derived specifically from the makes and models of cars. Each car can have certain options like floor mats, sports packages, tire upgrades, and interior upgrades. Each of these products and attributes is associated with a Manufacturer Suggested Retail Price (MSRP).
Salesmen at the dealer use this as a guide when ultimately selling the total value of the sales contract. Based upon the MSRP and actual Sales Price, the dealer has a specific set of calculations to pay the salesman as an incentive.
These calculations were unorganized and being handled offline with spreadsheets. The page we designed is a cleaner digitized output of the total contract price and commission calculations. The page below is used by their accounting department to approve the sales price and ultimately pay out commissions.
The first step was building the estimate forms. This required us to fully understand all product types, and products. Each of these products had attributes and options associated with prices.
After we fully understood these associations, we architected a database to model the pricing book.
The next step was converting estimates into sales contracts for sales reps to formally convert into deals. If the estimate was approved by the customer, the estimate details are copied into a sales contract for a signature.
After the sales contract is signed, a commision calculation page is generated below. This displays in a table of 4 columns. Based upon the over / undervalue of the sales contract, the sales representative is paid a percentage of the total contract.
The complexity of the database design and the ability to add and update products took several iterations to build. The output of the design is functional and correctly allows Helen, the Accounts Payable Account, to view and pay sale representatives the correct amounts.
Functional Design Output
I was brought into the project once some of these forms & layouts were in place. Immediately I noticed there wasn’t attention paid to the focus of this page Why did the User navigate to this layout? What were they looking for amongst all this data? How can the User most efficiently utilize this page?. This prompted me to further speak with Helen, the Accounts Payable Accountant, to help me understand her job. This interview would allow me to create user journeys; user journeys are a way to understand the user’s motivations and goals when they are interacting with the product. After the discussion with Helen, it was clear that only info she wanted to know on this page was the Gross Commission due (currently it’s all the way to the bottom, right). This is the payable amount she adds to the salesmen’s paychecks every two weeks.
Implementation Design Approach
The main issue in the Functional Design Output was that it wasn’t easily scannable.
Firstly, there needed to be distinguishable markers separating the totals, from all the other numbers above.
Color coding can be effectively used here since there’s a lot of over/undervalues to understand profit/loss immediately when you navigate to this page.
Indenting the attributes helps to scan the product(s). In the example I’ve mocked up, its just one car, but in that transaction, there could be multiple products, so it helps to indent the attributes as they aren’t products themselves.
Layout change (side by side) helps with being able to compare and separate the values presented in either case.
User Centric Design Output
The design is an important part of the software. The architecture and outputs will allow for a functional utility that will improve most areas of business. The extra step of user-centric design adds the custom component that most businesses seek. Both approaches are valuable and at times necessary for the life cycle of the software project. These are iterative processes that take shape over time.
We specialize in producing all types of business software. This thoughtful design approach and process is what separates us from the competition. If you have an idea or an area of your business that needs to be improved, feel free to contact us below.
Wow… creative expression with color and canvas seemed so normal when we were 6… what happened?!
Let’s reclaim our youth! Let’s revive our creativity! Let’s have an unusual day…
It’s easy and fun. All you need is this, this, and this. Grab a paper plate, some paper towels, a paper cup, water… put it all in a bag, go find a scenic spot… sit down and enjoy a couple quiet hours documenting your impressions in vivid color!
I’ve been bringing paint back into my life lately. It started as I was planning a family vacation this summer to Yellowstone. Rather than photograph everything, I wanted to paint some highlights with my family.
We did that and it led to some fun times, pleasant memories, and personal stuff for our walls!
I thought why not bring this back to work?
At Endertech we have a regular practice of recruiting the team to help produce content for our site. Recently we decided to spice it up and match team members together to work collaboratively on articles. I was matched with Willem and Josh.
We brainstormed some of the usual suspects for blog articles… something about tech… something about design… and then I thought, “Hey, why not mix it up a bit? Let’s go painting one morning and just write about the experience interview style… we can call it a ‘company culture building’ exercise.”
And so we did…
We structured our written component with 4 sets of questions, before, immediately after, end of day, and end of week. Here are each participants responses:
Before the Park
When is the last time you painted anything? Describe the situation, what you painted, and any thoughts or feelings you remember.
Willem: I think the last time I painted anything was in high school for an art class. It would have been a paper mache mask. I remember creating the paper mache structure over a balloon and leaving it over the weekend, only to come back next week to be accused of stealing it (among others). It seems as if there was one mask short for the students in the class at that time. I remember painting the mask while still wondering “whodunit?” Did I have the correct mask? Were the newspaper clippings displaying the same ads in their now hardened state? I remember painting the mask, glancing over to the student who effectively drew the short straw and needed to create a new mask, even though I distinctly remember seeing them create one the previous week. I tried to make the design of the face silly, even though it was a somewhat awkward situation.
Josh: It’s been a while since I’ve painted anything with real brushes and real paint on a real surface (I do a fair amount of digital art, including using PS brushes etc. on an ongoing basis). The last time I painted something very intentionally (and not just with kids or whatever) was probably in art school quite a long time ago. At the time I was painting with the goal of completing some color theory assignments. I remember feeling very excited that by simply using color I was able to create forms that felt lit. It really upped my confidence that I could render something passably realistic if I needed to.
Gabe: The last time I painted was during my vacation in Yellowstone this past summer (2018). I had brought a painting kit for the family much like the one I provided for Josh & Willem today. We went to visit scenes from the Yellowstone area to paint them! I thought it would be an interesting twist as opposed to the common activity of photographing everything. Amongst the scenes we captured were a bridge and stream along a hiking path, the Grand Prismatic Springs, and some waterfalls. The waterfalls were a popular destination, so I remember feeling a touch awkward with all the travelers looking over my shoulder. Still, generally speaking, I remember enjoying the quiet focus of painting… a bit more peaceful in the mind compared to, say, the quiet focus of software development or writing.
What work do you have to do this afternoon? Do you expect your time spent painting to have any effect on your work product today?
Willem: I will continue to work on a site migration for a Drupal 8 site. The kind of work seems to involve creating very miniscule changes for a migration procedure to execute for hours at a time to try and move over as much data as possible to the new site database. I am not expecting the act of painting to change the main procedure as the work itself is not as creative.
Josh: This afternoon I will be continuing working on the visual design for CityGovJobs. I have no expectations about how painting this morning will influence this afternoon, but I hope to feel energized by the change in routine and hopefully inspired and able to see my current project in at least a slightly different light.
Gabe: Well, I’ve gotta finish the accounting, catch up on emails, and if possible, advance the construction scheduling portion of Secard’s project. The park time definitely puts time pressure on all of that… but I don’t think too much, and I expect the happiness I’ll feel afterwards will make it a pleasant time.
Right After Painting
What did you paint? What thoughts or feelings do you have about your painting experience today?
Willem: I painted a landscape of some hills with some trees, bushes, grass, and the opening of a set of wooden stairs on the hill that I was sitting on. During this trip, Gabe, Josh, and I lifted a nearby log up those stairs to use as a seat while we painted. During this time, other patrons of the park, mostly little children and their parents, would walk by and even stand around to watch us paint. I overheard one little boy exclaim several times “Look! They’re doing art!” In general, it was a very calm, relaxing morning.
Josh: My first reaction is… painting is hard! Some of my art school stuff came back to me, but yeah, I’m rusty at it. The experience was exciting, I gotta admit.Normally, on mornings when I’m returning back to work after a weekend (or in this case, a long weekend) are rough because I have to get up super early and take the kids to school. Today, however, was different. With the challenge of portraying a vista overlooking “scenic” Torrance, I worked fast and enthusiastically. Laying down color, roughing in the basic shapes, trying to get the perfect horizon, and at the end, struggling to add in highlights which would help define forms. It was a gloomy morning so the color was necessarily murky for my attempt at a somewhat realistic rendering. Fun – but not easy! Feeling respect for my artist friends who draw and paint better than I do.
Gabe: I painted a scene of the South Bay from a vantage point at Wilderness Park in Redondo Beach. There were lots of trees and dirt paths, with homes and industry off in the distance. It was overcast. I enjoyed the time painting, and I’m glad to have a memento to take back from the experience. It’s a nice change of pace to focus on tactile skills… mixing paints… brush strokes, etc.
Now what effect do you think your time spent painting will have on your work product today, if any?
Willem: During the painting process, I wasn’t thinking about work, just the land around me along with the quietness, only really thinking about the brush strokes and color mixing. So I think now that I am back at my desk, I can reevaluate my work plans. Maybe I will find a better or more efficient way of performing a task. In general, there is a bit less stress right now.
Josh: Returning back to work, I feel a need to take a break, let the painting experience subside, and perhaps eat. But the feeling of being energized in a way that I don’t normally feel is still there. I’m looking forward to banging out some comps for CGJ.
Gabe: I don’t really expect my work product today to be particularly influenced since mostly it’s about communications… but perhaps relating my experience today to someone will provide a bit more of a spark to the conversation than usual. I should add as well that today’s work inspires the content for our blog article!
Painting Day End
What effect did your time spent painting have on your work product today, if any?
Willem: It seems like there was less work done simply because of the time taken to paint. There were other factors that contributed as well, such as meetings related to the project along with several one-on-one meetings with other colleagues to help troubleshoot their issues. As such, there was less time to “get into the zone” and make significant progress.
Josh: While my first-day-of-the-work-week weariness lingered throughout the entire day (as it tends to do), there was something noticeably different about how the afternoon went. What was it? I think most of all, painting at the park was a break in the routine. Next, I think painting at the park woke up a little bit of love for and curiosity about a certain kind of creative activity. Whenever an experience sparks excitement and curiosity about the world, I think it’s a win.
Gabe: It squeezed my time available… I ended up staying until almost 6… but I got through everything I needed to do.
Would you like to organize more painting days at Endertech? If so, what advantage(s) do you think there would be for the company?
Willem: Having a day to paint seems like a fine idea to help relieve stress, so I wouldn’t mind doing it again. I suppose it would need to be scheduled well ahead of time on a day where the rest of the hours can be dedicated to completing smaller tasks. But I can see the benefit from it, just having some time to think about something other than work.
Josh: I think ET could have group painting sessions and the company would benefit. I think the benefits would be: group team-building, routine-breaking, providing a creative outlet that might encourage us to think about our work a little differently, or perhaps even see the world differently. I’d just add however, that I don’t think painting alone is the only way to get these good things – other creative art-making sessions could do the same thing, and I think we would want to mix it up with other kinds of mediums too. Also, if we really wanted to take it to the next level, we could invite/hire a local painting instructor to help get everyone started.
Gabe: I think it would be fun to bring the whole group to a location… hopefully a more scenic one with the sun out! It will be a memorable experience… probably create some bonding and give everyone something interesting to chat about… comparing each other’s work and artistry!
Painting Week End
What effect did your time spent painting have on your work week, if any?
Willem: I don’t think it affected the work week too much. I had some conversations with colleagues about my painting, but not so much that I couldn’t get work done. Since we went to a park, when I look out the window from my desk and see the trees, I can reminisce about the ones I painted.
Josh: While our painting expedition made the first day of the work week different and more interesting than it usually is, I’m not sure it affected the rest of the work week much beyond spending good time with some work colleagues and creating a pleasant memory of a grey Tuesday morning in September 2018 (not unsubstantial things!).
Gabe: I’d say minimal effect, if any. Gave us a bit of conversation topic internally and with visiting clients… and now we have something new to put on our walls… but the euphoria of the day faded quickly. We’ll see, if we do more of it and involve others it could grow into something more valuable.