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.

Serverless Samples

The Serverless Samples project contains a multitude of examples of serverless applications. Detailed concepts such as REST APIs, DynamoDB, and security, are explored gradually across multiple samples to focus on one specific concept, technique, or pattern.

Features

REST API
The project contains several samples demonstrating how to create a REST API using Amazon API Gateway and AWS Lambda functions. The Lambda functions provide examples of Create, Read, Update, and Delete resource endpoints. Lambda functions are a fully serverless operational platform, requiring no compute resource provisioning (i.e. servers), allowing you to focus on feature development.

DynamoDB
Amazon DynamoDB is a highly scalable and completely serverless database solution. The project provides a number of sample Lambda functions that persist data in DynamoDB.

Lambda Authorizers
Security is an essential element of any information system. The project contains samples of Lambda Authorizers, formerly called Custom Authorizers. Lambda authorizers are simply Lambda functions which serve solely to authenticate Amazon API Gateway requests. Looking for a Lambda Authorizer leveraging JSON Web Tokens (JWT)? Look no further.

Cognito Authorizers
In addition to Lambda Authorizers, API Gateway endpoints may be secured by AWS Cognito User Pools. The project contains samples of Cognito Authorizers. Cognito authorizers authenticate identity or access tokens sent in Amazon API Gateway requests.

Shared API Gateways
By default, the Serverless Framework creates a distinct API Gateway for each project. Sometimes it is desirable to break apart a large REST API into many smaller, domain-specific service components. Perhaps different teams are responsible for certain domains. Or perhaps the each component has a distinct application lifecycle. Perhaps you are developing a microservices architecture. Whatever the reason, the Serverless Samples project illustrates how to share a single API Gateway across multiple serverless applications.

Custom Domain Names
When they are created, Amazon API Gateways are assigned a large, cryptic, public domain name. You could manually create a DNS alias for this auto-generated domain name. But using the Serverless Framework's plugin system, it is easy to create and manage custom domain names for API Gateway APIs. Project samples show how to configure the Serverless specification and the CLI commands to manage Custom Domain Names.

Step Functions
AWS Step Function State Machines are a great tool in the Serverless toolbox. Step Function State Machines are asynchronous, rule-driven, and fault-tolerant orchestrations of multiple AWS Lambda functions or Step Function activities. This project contains samples illustrating the use of Serverless Framework plugins to define State Machines within the serverless specification and how to invoke the State Machines via events or the AWS SDK.

Environment Variables
Almost every application has some environment-specific configuration. Serverless applications are no exception. The project contains examples of configuring AWS Lambda functions using environment variables sourced from a variety of locations.

Code Structure
One of the most frequent misconceptions of serverless application development is that the code is by default small, simple, or all in one file or method. There are times when this is true, but complexity in information systems is unavoidable and the aforementioned situations are rare. Serverless programming does not inherently remove the need to manage complexity... It removes the need to manage servers. This project contains examples of how to structure serverless projects, organizing code into modules by purpose, maximizing reusability and improving testability.

Unit Tests
The project contains samples illustrating how to configure and author unit tests with the Jest library.

Technology Stack

  • AWS SDK
  • Express
  • Jest
  • Serverless Framework Plugins
  • Serverless Framework
  • Node.js 8.10

Languages

  • JavaScript / ECMAScript / ES

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.