Technology Stacks and Tools

Modular. Extensible. Adaptable.

Spring Boot Web Service Starter Project

The Spring Boot web services starter project provides a foundation to rapidly construct a RESTful web services application.

Features

RESTful Web Service Family
The project contains examples of Create, Read, Update, and Delete web services. The project illustrates the use of @ExceptionHandler annotated methods to manage web service responses when common exceptional conditions arise.

Business Services
The project demonstrates the encapsulation of business behaviors into domain-specific, Spring-managed components annotated with @Service.

Spring Data JPA
The project shows the use of Spring Data JPA repositories, @Repository, for data access and management. Illustrates the @Entity annotation and other JPA entity model annotations for attribute and relationship mapping.

HSQLDB In-Memory Database
The project illustrates how to use the HSQLDB in-memory database which is useful for rapid prototyping or unit test execution in a continuous integration environment.

MySQL Database
In addition to HSQLDB support, the project also illustrates integration with MySQL.

Liquibase Database Migration
The project demonstrates the use of Liquibase change logs to automatically create and update the database structure and initial content. The Liquibase change logs have been tested with the HSQLDB and MySQL database engines.

Transaction Management
The project contains examples of the @Transactional annotation on business service methods.

Cache Management
The project contains examples of the @Cacheable, @CachePut, and @CacheEvict annotations on business service methods.

Scheduled (Batch) Processes
The project illustrates the use of the @Scheduled annotation and provides examples of cron, fixed rate, and fixed delay schedules.

Asynchronous Processes
The project illustrates the use of the @Async annotation and provides examples of asynchronous methods with and without return values.

Spring Security
The project provides examples of Spring Security integration. The web service endpoints are secured using Basic Auth, backed by database authentication and authorization. The project illustrates declarative authorization for resources by role.

Spring Profiles
The project demonstrates how to use Spring Profiles to activate (or deactivate) application components and configuration. The profiles illustrated are: batch, hsqldb, mysql, and docs.

Unit Tests
The project contains unit test examples for standard components such as business services or batch beans and examples for the web service endpoints using Mock objects. Perform complete end-to-end testing with Spring MVC mocking or leverage Mockito to stub or spy business components.

Actuator Monitoring and Management
The project illustrates the use of Spring Boot Actuator for application monitoring and management. The application demonstrates the recording of custom metrics and the creation of custom health checks. Also, custom Maven and Gradle project attributes are incorporated into the Actuator info endpoint.

API Documentation Generator
The project includes Springfox Swagger integration to automatically generate API docs for the RESTful web service endpoints. This feature may be activated using the "docs" Spring profile.

Executable Jar
The Maven and Gradle builds produce a fully executable Spring Boot Jar file. The Jar file may be executed directly from the command line without the "java -jar" command and may be installed on Linux servers as a service.

Docker Support
The project ships with an example Dockerfile which creates a minimal, best practices Docker image for hosting Spring Boot Applications with OpenJDK. You can pull the latest Docker image from DockerHub.

Technology Stack

  • Spring Boot
  • Spring Framework
  • Spring Security
  • Spring Data JPA
  • Liquibase
  • JUnit
  • Mockito
  • Maven
  • Gradle
  • HSQLDB
  • MySQL

Languages

  • Java

Read about it on  LeanPub.

View it on GitHub.

View it on GitHub.

React Starter Project

The React starter project provides a template to kickstart React single-page applications utilizing a curated Technology Stack for optimal maintainability, testability, and operability.

Features

JavaScript ES6+ Support
The project supports authoring both the application and tests in ES6+ JavaScript. The Babel transpiler ensures all JavaScript is ES2015 compliant when shipped to the browser.

SASS and CSS Support
The project supports authoring styles in either SASS or CSS. Leveraging Bootstrap 4's SASS support, the project demonstrates how to override Bootstrap SASS variables to update the default Bootstrap look and feel.

Standard Project Structure
The project is organized into a component-based structure that facilitates a logical separation by component type and functional responsibility.

Standard Page Structure
The project's single HTML page, index.html, is automatically injected with Webpack dependencies, eliminating the need for you to manage link and script tags in your HTML.

Routing
The React Router library is included and an example configuration is provided which illustrates how to map routes to your React controllers.

State Management
The Redux state container library is included and examples are provided which illustrate actions, reducers, and selectors on the application state model.

Redux Thunk Middleware
The project includes the Redux Thunk middleware library which allows you to create powerful, asynchronous state mutation functions such as calling remote APIs or invoking Promise-based functions.

Components
The project illustrates the standard React Component classes and stateless functional components. Examples depict components both with and without Redux connect.

Unit Testing with Jest and Enzyme
The project is pre-configured to use Jest and Enzyme for unit testing. Several examples of unit tests are included.

DevOps Automation
Yarn and Webpack provide local application development tools and server environment development operations workflow automation. The Yarn configuration file contains tasks that build application artifacts, and run a local development web server. Webpack ensures that the build artifacts are transpiled, uglified, minified, and mapped into cache-busting bundles.

Docker Support
The project ships with an example Dockerfile which creates a minimal, best practices Docker image for hosting Single-Page Applications with nginx. You can pull the latest Docker image from DockerHub.

Technology Stack

  • React
  • Redux
  • Redux Thunk
  • React Router
  • Axios
  • Lodash
  • Moment
  • Numeral
  • Bootstrap
  • Font Awesome
  • Google Fonts
  • Jest
  • Enzyme
  • Redux Mock Store
  • Yarn
  • Webpack
  • Babel

Languages

  • ES6+ JavaScript
  • HTML
  • SASS or CSS

See the Project.

View it on GitHub.

View it on GitHub.

AngularJS Starter Project

The AngularJS starter project provides a template to kickstart AngularJS (i.e. Angular 1.x) single-page applications utilizing a curated Technology Stack for optimal maintainability, testability, and operability.

Features

JavaScript ES6+ Support
The project supports authoring both the application and tests in ES6+ JavaScript. The Babel transpiler ensures all JavaScript is ES2015 compliant when shipped to the browser.

SASS and CSS Support
The project supports authoring styles in either SASS or CSS. Leveraging Bootstrap 4's SASS support, the project demonstrates how to override Bootstrap SASS variables to update the default Bootstrap look and feel.

Standard Project Structure
The project is organized into a module and component-based structure that facilitates a logical separation by feature and component type.

Standard Page Structure
The project's single HTML page, index.html, is automatically injected with Webpack dependencies, eliminating the need for you to manage link and script tags in your HTML.

Externalized HTML Templates
The project depicts how to externalize HTML partials into individual source files rather than embedding them in the index.html page or JavaScript.

Routing
The Angular ngRoute module is included and an example configuration is provided which illustrates how to map routes to your Angular controllers.

Services
The project includes examples of custom services that utilize the Angular ngResource module to make AJAX requests to RESTful web services.

Controllers
The project illustrates the modularization of controllers and nesting of scopes. Learn to use nested scopes to effectively minimize redundant logic.

Unit Testing with Karma and Jasmine
The project is pre-configured to use Karma and Jasmine for unit testing. Several examples of unit tests are included.

DevOps Automation
Yarn and Webpack provide local application development tools and server environment development operations workflow automation. The Yarn configuration file contains tasks that build application artifacts, and run a local development web server. Webpack ensures that the build artifacts are transpiled, uglified, minified, and mapped into cache-busting bundles.

Docker Support
The project ships with an example Dockerfile which creates a minimal, best practices Docker image for hosting Single-Page Applications with nginx. You can pull the latest Docker image from DockerHub.

Technology Stack

  • AngularJS
  • Moment
  • Numeral
  • Bootstrap
  • Font Awesome
  • Google Fonts
  • Karma
  • Jasmine
  • Yarn
  • Webpack
  • Babel

Languages

  • ES6+ JavaScript
  • HTML
  • SASS or CSS

See the Project.

View it on GitHub.

View it on GitHub.

Marionette.js Starter Project

The Marionette.js starter project provides a template to kickstart Backbone.Marionette.js single-page application (SPA) projects.

Features

Modules
The project demonstrates how to design Marionette.js applications with high cohesion through the use of modules.

Messaging
The project illustrates the use of the three messaging mechanisms made available by the included backbone.wreqr library.

Standard Page Structure
The project's single HTML page, index.html, is organized into header, footer, and main content sections. A fourth section contains modal dialog markup. Each page section is mapped to a top-level Marionette application region upon startup.

Externalized Underscore Templates
The project depicts how to externalize Underscore HTML templates into individual source files rather than embedding them in the index.html page.

Google Analytics Ingetration
The project integrates Marionette application routing with Google Analytics to capture pageview event statistics from route events.

Reusable Modal Dialog
The project contains a reusable modal dialog Marionette View class and HTML template. The modal content and behavior is driven by JSON and, thus, may be reused throughout the application without requiring code for each modal.

Unit Testing with Karma and Jasmine
The project is pre-configured to use Karma and Jasmine for unit testing. Several examples of unit tests are included.

Technology Stack

  • Backbone.Marionette.js
  • Backbone.js
  • Underscore.js
  • jQuery
  • BootStrap
  • Font Awesome
  • Karma
  • Jasmine
  • Jasmine jQuery
  • Gulp

Languages

  • CoffeeScript
  • JavaScript
  • HTML
  • CSS

Read about it on LeanPub.

View it on GitHub.

View it on GitHub.