<commit_before>Sticky Stone 
=============

A reference implementation for how to build an application that uses the best-practices that are encouraged by the use of Sping-boot

Features
---

All interactions require a REST client. There is no UI with this distribution. For a good UI that consumes Restful API, see PointyPatient.

This app showcases the following features ([related blog post](Sticky Stone "Sticky Stone")):

Setup
---

- Create three ROLEs: ADMIN, SHOPPER and BROWSER
- ADMIN can change roles of existing users
- SHOPPER can buy stuff and browse stuff
- BROWSER can only browse stuff

- Create a User User1 who is ADMIN
- Create a user User2 who is SHOPPER
- Create a user User3 who is BROWSER

Use Cases
---

- Allow users to self-register and assign them BROWSER by default.
- Allow the user to select a username and warn if a duplicate.
- Write an android app that can be downloaded
- The android app will only allow the users who have registered on website to browse but not shop.
- When the user is bumped up to SHOPPER by an ADMIN user, that user should be able to shop on the phone.

- Showcases use of Spring-Boot
- Self-registration
- Login Using Facebook
- Showcases the use of Spring Security to secure Restful API
- Showcases Spring HATEOAS
- Showcases Rich Domain Design
- Showcases modular design at maven module level
- Showcases Spring MVC tests
- Showcases Spring JPA and Spring Data
- Showcases externalizing properties using YAML
- Showcases the use of Spring profiles and the Environment abstraction

Demo
---

To Run
---

mvn clean install -Dspring.profiles.active=loc | dev

loc -> H2
dev -> MySQL


Using jar file:

java -jar target/sticky-stone-domain-0.1.0.jar --spring.profiles.active=loc | dev


Features
---

- Use of Logback
- Use of Spring Boot
- Use of JavaConfig
- Use of Profiles
- Tests that rollback db transactions



<commit_msg>updated read me<commit_after>Sticky Stone 
=============

A reference implementation for how to build an application that uses the best-practices that are encouraged by the use of Sping-boot

Features
---

All interactions require a REST client. There is no UI with this distribution. For a good UI that consumes Restful API, see PointyPatient.

This app showcases the following features ([related blog post](Sticky Stone "Sticky Stone")):

- Showcases use of Spring-Boot
- Self-registration
- Login Using Facebook
- The use of Spring Security to secure Restful API
- Spring HATEOAS
- Rich Domain Design
- modular design at maven module level
- Spring MVC tests
- Spring JPA and Spring Data
- The use of Spring profiles and the Environment abstraction
- The use of Logback
- Externalizing properties


Setup
---

- Create three ROLEs: ADMIN, SHOPPER and BROWSER
- ADMIN can change roles of existing users
- SHOPPER can buy stuff and browse stuff
- BROWSER can only browse stuff

- Create a User User1 who is ADMIN
- Create a user User2 who is SHOPPER
- Create a user User3 who is BROWSER

Use Cases
---

- Allow users to self-register and assign them BROWSER by default.
- Allow the user to select a username and warn if a duplicate.
- Write an android app that can be downloaded
- The android app will only allow the users who have registered on website to browse but not shop.
- When the user is bumped up to SHOPPER by an ADMIN user, that user should be able to shop on the phone.




Demo
---

Coming soon on an openshift site near you!


To Run
---

<code>
mvn clean install -Dspring.profiles.active=loc | dev
</code>

Currently loc uses an H2 db and dev uses a local MySQL db


Using jar file:

<code>
java -jar target/sticky-stone-domain-0.1.0.jar --spring.profiles.active=loc | dev
</code>




{'fraction_non_alphanumeric': 0.060227889310906134, 'fraction_numerical': 0.0037981551817688553, 'mean_word_length': 3.5294840294840295, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6042451', 'n_tokens_mistral': 1080, 'n_tokens_neox': 1013, 'n_words': 548}