Sitecore Foundation for SXA

I've been looking deeply at Sitecore's Experience Accelerator (SXA) and have been pretty impressed by its approach, particularly how it handles tenants and Site Scaffolding. Although there is a lot of duplicate functionality between Sitecore Foundation and SXA, there is a decent amount of capability in Sitecore Foundation that is not available in SXA. For that reason, I decided to create a fork of Sitecore Foundation that was built to support SXA sites.

In this fork, I've removed much of what already exists in SXA. By doing so we went from over 40 modules to 20 modules.  For now, I've removed DEF as I want to manage that as a separate project, as it's useful regardless of what framework you use. I've modified the Sitecore information architecture to follow SXA standards. I also used this opportunity to update to Sitecore 9 Update 1, and got things working with the latest version of SXA (1.6).

So here's a run-down of what features remain:

  • Analytics - Our Client Side API for raising Analytics events.
  • Composite - Very similar to SXA's Snippets, but as this supports Async Composites (AKA Donut Hole Caching), I kept it in. If I can move that feature to support SXA snippets, I will.
  • GeoIP - Uses MaxMinds free DB to add GeoIP data.
  • Handlebars - The full set of components, with all logic moved to SXA controllers.
  • IPWhiteList - Hoping to make this a SXA Tenant and Site feature. I have not done this yet.
  • Owl Carousel - In case you prefer it to the stock SXA carousel
  • PDF - Render any Sitecore Item into a PDF using the Rotativa Library
  • Slick Carousel - Another option
  • Video JS Player - A more feature rich video player.

Foundation Wise the following modules are included:

  • API - base classes for building WebAPI's.
  • Cache - Moved it from Feature to Foundation. Still need to add back some cache management classes from other modules that were removed.
  • Code Editor - Works for Handlebar Templates. May want to try to get working with Media library css and JS.
  • Components - Base Classes and Extensions for Component development with SF Theme Support. (Should rename to not confuse with SXA themes)
  • Configuration - Need to reimplement Site App Settings to be SXA Tenant and Site Aware. Haven't done this yet.
  • Facets - User Settings and Personalization Rules
  • Search - Need to see if SXA supplants some of the custom fields implemented here.
  • Serialization - Updated Unicorn config to all the new SXA folder locations.
  • Shell - Helpers for Ribbons and the Friendly layout details are still here.
  • Structure - Still have the Link Manager Pipeline, but will probably move to configuration and remove this.
  • Trace logger - Still useful for profiling.

Other things I plan on doing before Iā€™d call things stable:

  • Get "Add AvailableRenderings" Working Consistently. I'm trying to get the SXA feature setup so new tenants have everything they need to use the components, but have seen some inconsistency in one of the rules I setup to add "available renderings". It doesn't seem to work when creating  a site, but does work if just adding the feature to it. Need to troubleshoot further.
  • Create Extension themes and Add JS/CSS for each feature. I have the JS and CSS files as files in each project, but need to add them as extension themes and extend the site theme as part of site provisioning. Right now getting errors when trying to upload them to the media library. Need to troubleshoot further.
  • Move Views into MVC Areas. Can tell this is going to get unwieldy if I keep adding view folders, so think it would be cleaner to implement a MVC area to keep the Sitecore foundation stuff separate.
  • Add back some of the simple renderings: Semantic, Silverlight, etc. Think I was too hasty in deleting the Html Components feature. Want to bring some of them back and just add them to the toolbox.

While it's currently somewhat functional and available on Github, it's not fully tested and there are a number of changes I plan on making over the next few weeks as mentioned. Stay tunes for updates.

Sitecore Foundation - Extending Rendering Variant Fields to Support Handlebar Templates

Sitecore Foundation - Upgrading to Sitecore 9