<commit_before>Bootlace
========

Bootlace is a fully-functional reference application demonstrating the integration of various
contemporary technologies that comprise a modern web development stack.

The purpose of Bootlace is to demonstrate how to integrate, in a robust manner, at least these
technologies together in a single-page web application:

 - AngularJS;
 - Restangular;
 - Bootstrap;
 - Spring MVC;
 - Spring Security;
 - Spring Data;
 - MongoDB;
 - WebSockets;
 - Jetty.

A primary goal of the project is to have a fully working single page web application with
reliable authentication and authorisation implemented using AngularJS on the front-end and Spring
Security the middle-tier.

The provided code and other resources are all intended to be clean, well structured and documented
to a reasonable degree rather than being just a splat of seemingly random code dumped in a
repository.

It is also very important to demonstrate how to structure the project Javascript code, specifically
being organised into modules using "require".

A further important goal of the project is to make the development workflow as convenient as
possible.


AngularJS 1.x vs AngularJS 2.x
------------------------------

This project is currently implemented around AngularJS 1.x, since AngularJS 2.0 is still some time
away - since AngularJS 2.x is the future, a goal of this project is to stay current and apply the
changes necessary to move to AngularJS 2.x in the future (but not yet!). 


Jetty vs Tomcat
---------------

Jetty is a modern implementation of a slick, lean servlet container. It has also has leading edge
support for various modern technologies.

By default Spring Boot uses Tomcat so using Jetty requires extra configuration. It would be quite
simple to drop Jetty for Tomcat, but Jetty is preferred.


Additional Components
---------------------

For convenience, some other popular and useful technologies are also integrated.

Additional front-end libraries include:

 * angular-toastr;
 * bootswatch;
 * blueimp-gallery;
 * font-awesome;
 * moment.js

Some of these libraries are chosen because they require special handling when integrating (e.g.
Browserify shims).

Additional middle-tier libraries include:

 * BCrypt;
 * Google Guava;
 * OWASP Java HTML Sanitizer

Additional front-end build tools include:

 * jshint;
 * npm;
 * Browserify;
 * Stylus.

Additional project build tools include:

 * Cobertura;
 * FindBugs;
 * JUnit;
 * PMD.

Bootlace uses as much as possible the latest versions of the various libraries and frameworks.


Project Status
--------------

This project is a work-in-progress.

What has been provided works, and demonstrate a working implementation of many of the project
goals.

However, there is still more to be done. 

The intent is to create a canonical implementation to serve as fully working reference material
when developing new projects using the same (or very similar) software stack.

Discussion, contributions, patches and pull-requests are all welcome.


Prerequisites
-------------

The following is the minimum list of prerequisites:

 * You must have a MongoDB database installed.
 * You must have Java 1.8 installed.
 * You must have Maven 3.x installed.
 * You must have Node.js installed, at least for "npm".

As is the case with a lot of modern web development, a Linux or Linux-like environment is
preferred - this is especially the case for the Javascript and CSS development tools and anything<commit_msg>Fix typo in README.<commit_after>Bootlace
========

Bootlace is a fully-functional reference application demonstrating the integration of various
contemporary technologies that comprise a modern web development stack.

The purpose of Bootlace is to demonstrate how to integrate, in a robust manner, at least these
technologies together in a single-page web application:

 - AngularJS;
 - Restangular;
 - Bootstrap;
 - Spring MVC;
 - Spring Security;
 - Spring Data;
 - MongoDB;
 - WebSockets;
 - Jetty.

A primary goal of the project is to have a fully working single page web application with
reliable authentication and authorisation implemented using AngularJS on the front-end and Spring
Security the middle-tier.

The provided code and other resources are all intended to be clean, well structured and documented
to a reasonable degree rather than being just a splat of seemingly random code dumped in a
repository.

It is also very important to demonstrate how to structure the project Javascript code, specifically
being organised into modules using "require".

A further important goal of the project is to make the development workflow as convenient as
possible.


AngularJS 1.x vs AngularJS 2.x
------------------------------

This project is currently implemented around AngularJS 1.x, since AngularJS 2.0 is still some time
away - since AngularJS 2.x is the future, a goal of this project is to stay current and apply the
changes necessary to move to AngularJS 2.x in the future (but not yet!). 


Jetty vs Tomcat
---------------

Jetty is a modern implementation of a slick, lean servlet container. It has also has leading edge
support for various modern technologies.

By default Spring Boot uses Tomcat so using Jetty requires extra configuration. It would be quite
simple to drop Jetty for Tomcat, but Jetty is preferred.


Additional Components
---------------------

For convenience, some other popular and useful technologies are also integrated.

Additional front-end libraries include:

 * angular-toastr;
 * bootswatch;
 * blueimp-gallery;
 * font-awesome;
 * moment.js

Some of these libraries are chosen because they require special handling when integrating (e.g.
Browserify shims).

Additional middle-tier libraries include:

 * BCrypt;
 * Google Guava;
 * OWASP Java HTML Sanitizer

Additional front-end build tools include:

 * jshint;
 * npm;
 * Browserify;
 * Stylus.

Additional project build tools include:

 * Cobertura;
 * FindBugs;
 * JUnit;
 * PMD.

Bootlace uses as much as possible the latest versions of the various libraries and frameworks.


Project Status
--------------

This project is a work-in-progress.

What has been provided works, and demonstrates a working implementation of many of the project
goals.

However, there is still more to be done. 

The intent is to create a canonical implementation to serve as fully working reference material
when developing new projects using the same (or very similar) software stack.

Discussion, contributions, patches and pull-requests are all welcome.


Prerequisites
-------------

The following is the minimum list of prerequisites:

 * You must have a MongoDB database installed.
 * You must have Java 1.8 installed.
 * You must have Maven 3.x installed.
 * You must have Node.js installed, at least for "npm".

As is the case with a lot of modern web development, a Linux or Linux-like environment is
preferred - this is especially the case for the Javascript and CSS development tools and anything
{'fraction_non_alphanumeric': 0.06836749319191629, 'fraction_numerical': 0.0028665615594094885, 'mean_word_length': 3.6863666890530555, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1804069', 'n_tokens_mistral': 1779, 'n_tokens_neox': 1643, 'n_words': 964}