Git Product home page Git Product logo

dylanyoung-dev / helix-starter-kit Goto Github PK

View Code? Open in Web Editor NEW
8.0 2.0 2.0 6.32 MB

A simple starter kit, that's designed to be a basic developer accelerator for working with Sitecore. The issue with other helix starter kits, is that they add additional features you might not need, especially if you are not building out a full blown website.

JavaScript 68.23% C# 17.21% PowerShell 14.05% Batchfile 0.43% HTML 0.09%
sitecore sitecore-helix sitecore9 sitecore-solution starterkit helix-starter-kits yeoman batch-command helix-modules essential

helix-starter-kit's Introduction

Helix Starter Kit

Build status

This is a Helix Starter Kit. What makes it different than Habitat, Habitat Home or Helixbase? Well it's simple, those aren't truly built to be starter kits for your development project. We provide bear essentials and allow you the development manager to decide where you want to take this tool. It's great for smaller projects that can include component development for the Sitecore marketplace, or as big of projects as multiple sites running in a Sitecore instance.

We've made some assumptions, that you can use for your project that you are starting. But don't worry, if you are looking for a Helix starter kit that uses a didn't ORM Wrapper/Mapper or a different tool for serializing items, we are working on different projects coming soon that are based on different technology stacks.

> Sitecore Helix [Helix Documentation](https://helix.sitecore.net)
> .Net MVC 5.2.3
> Sitecore 9+
> Unicorn
> Glass Mapper 5
> Yeoman for module creation
> Leprechaun for template class generation

In addition, it includes scaffolding and developer enhancements, to make development quicker. To learn more about these enhancements, please read more about these commands that you can run in the Getting Started section.

Installation

To get started using this solution as a starting point for your Sitecore project, download the latest release from the Github Release page.

Then unzip the package with the name of the project that you plan to use. The files that you now have on your file system contain the essential building blocks so that you can start setting up your Sitecore solution.

To get started with this solution, you need to clone the repository and move to a folder where your new solution will live. Example, if I worked for ABC Widgets, I would potentially have a folder where I typically place all of my Git repositories, such as C:\Development, so for the ABC Widget project, I would create a new folder called ABC and place all of the files in that folder, so I would have something like C:\Development\ABC\ and you would see the following in that folder:

Update Configuration

Once your folder structure is setup, you next need to configure your yaml configuration. The yaml configuration is used to shorten and enhance the experience of initializing the solution and creating subsequent modules for your Sitecore instance. There are two configuration files that live under the generators folder in your repository:

  • config.local.example.yml
  • config.yaml

The main config.yaml is where you should place configuration specific to the repository. So all of the developers on your team will have the same settings in this config.yaml and it will be committed to source control. If you want to test out specific differences from the main configuration, you can rename config.local.example.yaml to config.local.yaml. The gitignore file, will automatically ignore this configuration file, so that you can make those changes locally without an issue.

The configuration file allows you to specify default values for Prompts that come up during the run command that you will use below. When setting up your instance, you should specify the following variables before you run your first .\starter run command.

Getting Started

Once you've got the core folder structure in place, you will need to initialize the npm install, plus any other pre-requisites. To do this, just run the following batch command:

c:\> .\starter setup

Once that completes, you should be ready to run the solution initialization process, which will run and setup your Sitecore Visual Studio solution based on settings that you specify during the guided commands (or based on configuration specified in the config.yaml file). To start the guided commands, run the following batch command in your favorite command line tool in the root folder:

c:\> .\starter run

This will initialize the Yeoman generator which will provide you with the simple option to either Initialize Solution or Create Helix Module. If this is your first time running this command, make sure you select Initialize Solution before you start creating your own Helix Modules.

The Initialization of the Sitecore solution contains 3 different types of solutions:

You can setup a Base install which will only contain the very bare essentials for a Sitecore Visual Studio solution with limited projects.

There is a Website focused solution, which contains a little more projects in your solution focused towards getting you started building a website focused solution.

And lastly, there is a Module focused solution, which is there to help those that are building a Sitecore module for the marketplace.

In the future we will build additional solution types that include the pieces that make sense for those scenarios.

Once you've selected your solution types, you will be presented with various other options to help setup your local Visual Studio solution, this will include gulp configurations, publish settings and more. Once you are done, you should now see a bunch of new root items as well as a new src folder.

Once you get to this point, I would recommend committing your changes and then you can proceed with your Sitecore website setup and moving on to the next section on building custom Helix modules.

New Modules

If you need to add a new module, it's now super simple to do this, just by running a simple batch command:

c:\> .\starter run

Once you trigger that command, it will ask you a series of questions to determine the layer and naming of the module. This command will also insert the project into your current solution that you previously created in the Getting Started section.

Video Training

I am working on putting together a video training guide on how to use this Starter Kit to get up and running quickly on a Project.

Contribution

Learn more about contributing to this project on our Contribution Guidelines pages.

helix-starter-kit's People

Contributors

dylanyoung-dev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

helix-starter-kit's Issues

Add support for 9.2.0

Can you please add support for version 9.2.0 and the updates to the nuget/references packages.

Add Support for 9.1.1

9.1.1 was just released, even though this is a minor version, I will need to ensure that 9.1.1 works with this starter kit.

Add Docker Support

This task will replace the following tickets:

The goal is that there would be two types of setup. There would be first time solution setup, this may or may not keep it's current name in v1.0 and would spin up a Docker Container using the solution configuration.

The second setup is specific to a user who has just pulled down the latest source, this user might have specific configuration for where there repo is located and where the Sitecore instance should run. After the completion of this configuration, a Docker Container will be setup and run for local development.

The Sitecore docker images should remove all sample content provided by Sitecore OOTB.

Add Support to Start with Clean Slate

So when you setup a new project using Sitecore Helix Starter Kit, it should remove all of the things from Sitecore you wouldn't want, including the sample items that are added automatically by Sitecore.

Change Way I Handle Options for .Net Projects

Currently for each major and minor version I have an options.js which contains a json file which allows me to determine the information needed for .csproj and .package files. I'd like to only maintain one for each major version of Sitecore (ie. 9.1 and 9.0 and 8.2) and then have an options file that represents the minor versions. So the major would be referenced first and then the minor would patch values for the major version only. Since MVC and things like that, will not change for minor versions (or less likely too).

Azure Devops Configuration for CI/CD Deployments

Create Yaml based build and release templates that can be used by teams to integrate with the Sitecore Azure Topologies. The templates would be a great starting point of what's commonly needed for your CI/CD deployments to n number of environments from Integration/QA/Production and typical deployments for those environments.

Add Developer Setup Cmd

In addition to supporting a setup to setup the solution, we will enable a feature where a developer coming on to an existing project can run a cmd of starter to setup developer machine.

It will either create of modify the following files:

  • gulp-config.user.js
  • publishsettingsdebug.targets.user
  • src\Foundation\Serialization\code\App_config\Include\Environment.config.user (or handle this differently)

This should also run a docker image based on the project type (if one exists it should remove the container that exists). Then it should install the nuget pre-requisites and node pre-requisites and publish the latest to this docker container.

Add Framework for Extending Initial Solution Setup

The base solution is great, but some people might want a solution that initializes with specific options/modules enabled. We should create an extensible way to pull in other repos (with a specific format) based on a configuration that you can specify. So for example, someone could specify that they want the base install, but they also want to install a marketing starter kit, that includes additional modules for Marketing enhancements etc. Or if you wanted to install an instance that includes a specific module that your organization uses in most of it's projects (but not all), you could configure which modules you setup the solution with initially. More details to come.

Add Support for JSS Project Type

In addition to the Base Solution Type, we should spin up a JSS based solution. We could also consider setting up a Project layer specific JSS project. This would include new options in yeoman for js framework, and if it's running in or out of disconnected mode.

Adjust Readme on Initialization

We don't really want the readme used for the starter kit to represent your setup. It change on solution initialization to contain details but also leave placeholders for project details specific to your solution.

Add Initialization Process

It would be great if when you first pull down the tool that there is an initialize gulp task that will ensure you have all pre-reqs + install your Sitecore 9 instance on your machine based on your settings.

Is this ready for people to test

Hi there,

Is this ready for people to test and feed-back on?

I've tried the develop branch and there's not a package file for npm to install from - the master branch gets further but I'm left without a yo command (fully willing to accept this is user error!)

Cheers,

Antony

Add Automation to Add Modules

We need the ability to automatically scaffold out a solution project, based on a specific layer (feature, foundation, project).

We could use:

  • Powershell
  • Yeoman

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.