mvpkit 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -24
  3. data/README.md +43 -48
  4. data/VERSION +1 -1
  5. data/bin/mvp +2 -2
  6. data/config/routes.rb +0 -4
  7. data/mvpkit.gemspec +57 -129
  8. data/package.json +3 -22
  9. data/project/.babelrc +23 -1
  10. data/project/.gitignore +2 -0
  11. data/project/.postcssrc.yml +4 -0
  12. data/project/Gemfile +21 -13
  13. data/project/Gemfile.lock +181 -153
  14. data/project/Procfile +1 -1
  15. data/project/README.md +2 -116
  16. data/project/app/assets/javascripts/application.js +0 -8
  17. data/project/app/assets/stylesheets/application.scss +9 -3
  18. data/project/app/assets/stylesheets/elements/alerts.scss +10 -0
  19. data/project/app/assets/stylesheets/elements/badges.scss +16 -0
  20. data/project/app/assets/stylesheets/elements/buttons.scss +107 -0
  21. data/project/app/assets/stylesheets/elements/cards.scss +68 -0
  22. data/project/app/assets/stylesheets/elements/drawer.scss +66 -0
  23. data/project/app/assets/stylesheets/elements/forms.scss +64 -0
  24. data/project/app/assets/stylesheets/elements/interstitial.scss +24 -0
  25. data/project/app/assets/stylesheets/elements/navs.scss +15 -0
  26. data/project/app/assets/stylesheets/elements/sidebar.scss +30 -0
  27. data/project/app/assets/stylesheets/elements/tables.scss +61 -0
  28. data/project/app/assets/stylesheets/elements/timeline.scss +38 -0
  29. data/project/app/assets/stylesheets/elements/typography.scss +80 -0
  30. data/project/app/assets/stylesheets/init/bootstrap.scss +53 -0
  31. data/project/app/assets/stylesheets/init/reset.scss +20 -0
  32. data/project/app/assets/stylesheets/init/variables.scss +40 -0
  33. data/project/app/assets/stylesheets/treatments/backgrounds.scss +23 -0
  34. data/project/app/assets/stylesheets/treatments/borders.scss +7 -0
  35. data/project/app/{webpack/stylesheets/skin → assets/stylesheets/treatments}/spacing.scss +4 -10
  36. data/{app/controllers/mvp → project/app/controllers}/analytics_controller.rb +0 -0
  37. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/analytics_concern.rb +0 -0
  38. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/seo_concern.rb +0 -0
  39. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/session_concern.rb +0 -0
  40. data/project/app/controllers/conversions_controller.rb +1 -2
  41. data/{app/controllers/mvp → project/app/controllers}/seo_controller.rb +0 -0
  42. data/project/app/engines/admin/app/views/layouts/admin/_header.html.erb +18 -18
  43. data/project/app/helpers/application_helper.rb +0 -14
  44. data/{app/assets/stylesheets/mvp/application.scss → project/app/javascript/components/.gitkeep} +0 -0
  45. data/project/app/javascript/components/conversion.jsx +73 -0
  46. data/project/app/javascript/packs/application.js +28 -0
  47. data/project/app/javascript/packs/server_rendering.js +5 -0
  48. data/project/app/models/conversion.rb +1 -1
  49. data/project/app/views/conversions/show.json.jbuilder +1 -0
  50. data/project/app/views/home/index.html.erb +22 -22
  51. data/project/app/views/layouts/_header.html.erb +35 -34
  52. data/{app/views/layouts/mvp → project/app/views/layouts}/_instrumentation.html.erb +0 -0
  53. data/{app/views/layouts/mvp → project/app/views/layouts}/_meta.html.erb +0 -0
  54. data/project/app/views/layouts/application.html.erb +31 -21
  55. data/project/bin/setup +1 -1
  56. data/project/bin/webpack +28 -0
  57. data/project/bin/webpack-dev-server +43 -0
  58. data/project/config/initializers/assets.rb +2 -0
  59. data/{config → project/config}/initializers/canonical_host.rb +0 -0
  60. data/{config → project/config}/initializers/cloudinary.rb +0 -0
  61. data/{config → project/config}/initializers/rollbar.rb +0 -0
  62. data/{config → project/config}/initializers/routing.rb +0 -0
  63. data/{config → project/config}/initializers/spoof_ip.rb +0 -0
  64. data/{config → project/config}/initializers/ssl.rb +0 -0
  65. data/project/config/routes.rb +5 -7
  66. data/project/config/webpack/configuration.js +35 -0
  67. data/project/config/webpack/development.js +32 -0
  68. data/project/config/webpack/loaders/assets.js +12 -0
  69. data/project/config/webpack/loaders/babel.js +5 -0
  70. data/project/config/webpack/loaders/coffee.js +4 -0
  71. data/project/config/webpack/loaders/erb.js +9 -0
  72. data/project/config/webpack/loaders/react.js +5 -0
  73. data/project/config/webpack/loaders/sass.js +15 -0
  74. data/project/config/webpack/production.js +35 -0
  75. data/project/config/webpack/shared.js +58 -0
  76. data/project/config/webpack/test.js +6 -0
  77. data/project/config/webpacker.yml +38 -0
  78. data/project/package-lock.json +250 -0
  79. data/project/package.json +37 -17
  80. data/project/yarn.lock +4538 -0
  81. metadata +56 -326
  82. data/app/assets/javascripts/mvp/application.js +0 -1
  83. data/app/controllers/mvp/styleguide_controller.rb +0 -23
  84. data/app/helpers/minimum_viable_product/body_helper.rb +0 -14
  85. data/app/helpers/minimum_viable_product/bootstrap_helper.rb +0 -38
  86. data/app/helpers/minimum_viable_product/styleguide_helper.rb +0 -4
  87. data/app/models/concerns/mvp/slugification.rb +0 -24
  88. data/app/views/layouts/mvp/application.html.erb +0 -19
  89. data/app/views/mvp/styleguide/_example.html.erb +0 -6
  90. data/app/views/mvp/styleguide/bootstrap.html.erb +0 -43
  91. data/app/views/mvp/styleguide/bootstrap/_buttons.html.erb +0 -191
  92. data/app/views/mvp/styleguide/bootstrap/_forms.html.erb +0 -192
  93. data/app/views/mvp/styleguide/bootstrap/_header.html.erb +0 -48
  94. data/app/views/mvp/styleguide/bootstrap/_panels.html.erb +0 -16
  95. data/app/views/mvp/styleguide/bootstrap/_tables.html.erb +0 -34
  96. data/app/views/mvp/styleguide/bootstrap/_typography.html.erb +0 -51
  97. data/app/views/mvp/styleguide/elements/_grouping.html.erb +0 -1
  98. data/app/views/mvp/styleguide/elements/partials/_row_groups_of.html.erb +0 -7
  99. data/app/views/mvp/styleguide/index.html.erb +0 -17
  100. data/app/views/mvp/styleguide/layouts/basic.html.erb +0 -4
  101. data/app/views/mvp/styleguide/layouts/carousel.html.erb +0 -120
  102. data/app/views/mvp/styleguide/layouts/cover.html.erb +0 -34
  103. data/config/initializers/assets.rb +0 -2
  104. data/config/initializers/geocoder.rb +0 -9
  105. data/project/app/assets/javascripts/pack-compiled.js +0 -37394
  106. data/project/app/assets/javascripts/pack-compiled.js.map +0 -1
  107. data/project/app/assets/javascripts/templates.js.erb +0 -14
  108. data/project/app/assets/stylesheets/pack-compiled.css +0 -33946
  109. data/project/app/assets/stylesheets/pack-compiled.css.map +0 -1
  110. data/project/app/controllers/examples_controller.rb +0 -2
  111. data/project/app/views/examples/index.html.erb +0 -1
  112. data/project/app/views/examples/mustache.html.erb +0 -40
  113. data/project/app/views/examples/mustache/template.mustache +0 -1
  114. data/project/app/views/home/conversion.html.erb +0 -12
  115. data/project/app/webpack/javascripts/behaviors/example.js +0 -21
  116. data/project/app/webpack/javascripts/controllers/home.js +0 -15
  117. data/project/app/webpack/javascripts/lib/analytics.js +0 -22
  118. data/project/app/webpack/javascripts/lib/clientsidevalidations.js +0 -3
  119. data/project/app/webpack/javascripts/lib/controllers.js +0 -28
  120. data/project/app/webpack/javascripts/lib/forms.js +0 -28
  121. data/project/app/webpack/javascripts/lib/selectize.js +0 -1
  122. data/project/app/webpack/javascripts/pack.js +0 -50
  123. data/project/app/webpack/stylesheets/config/variables.scss +0 -41
  124. data/project/app/webpack/stylesheets/init/reset.scss +0 -48
  125. data/project/app/webpack/stylesheets/layout/main.scss +0 -7
  126. data/project/app/webpack/stylesheets/pack.scss +0 -20
  127. data/project/app/webpack/stylesheets/skin/alerts.scss +0 -3
  128. data/project/app/webpack/stylesheets/skin/buttons.scss +0 -38
  129. data/project/app/webpack/stylesheets/skin/hero.scss +0 -45
  130. data/project/app/webpack/stylesheets/skin/images.scss +0 -13
  131. data/project/app/webpack/stylesheets/skin/progress.scss +0 -3
  132. data/project/app/webpack/stylesheets/skin/selectize.scss +0 -30
  133. data/project/app/webpack/stylesheets/skin/tables.scss +0 -24
  134. data/project/app/webpack/stylesheets/skin/treatments.scss +0 -3
  135. data/project/app/webpack/stylesheets/skin/turbolinks.scss +0 -4
  136. data/project/app/webpack/stylesheets/skin/typography.scss +0 -116
  137. data/project/webpack.config.js +0 -76
data/project/Procfile CHANGED
@@ -1,3 +1,3 @@
1
1
  web: bundle exec puma -C config/puma.rb
2
- assets: node_modules/.bin/webpack --progress --colors --watch
2
+ webpack: bin/webpack-dev-server
3
3
  worker: bundle exec sidekiq
data/project/README.md CHANGED
@@ -1,116 +1,2 @@
1
- # Installation
2
-
3
- Install the mvp gem:
4
-
5
- ```
6
- gem install mvpkit
7
- ```
8
-
9
- Then setup your project:
10
-
11
- ```
12
- mvp new PROJECT
13
- ```
14
-
15
- # Setup
16
-
17
- ## `.env`
18
-
19
- Set your `.env` file up with your own variables
20
-
21
- ```
22
- ROLLBAR_CLIENT_ACCESS_TOKEN=
23
- ROLLBAR_SERVER_ACCESS_TOKEN=
24
- SEGMENT_WRITE_KEY=
25
- FACEBOOK_TRACKING_ID=
26
- CANONICAL_HOST=
27
- GOOGLE_ANALYTICS_ID=
28
- HOTJAR_ID=
29
- AWS_ACCESS_KEY_ID=
30
- AWS_SECRET_ACCESS_KEY=
31
- AWS_S3_BUCKET=
32
- SPOOF_IP=true
33
- ```
34
-
35
- ## Heroku
36
-
37
- To setup deployment for heroku, first create the project:
38
-
39
- ```
40
- heroku create PROJECT
41
- ```
42
-
43
- You're probably going to want Database backups. This will let you use `rake db:import`
44
-
45
- ```
46
- heroku pg:backups capture
47
- ```
48
-
49
- You're also going to need to setup the buildpacks
50
-
51
- ```
52
- heroku buildpacks:set heroku/ruby
53
- heroku buildpacks:add --index 1 heroku/nodejs
54
- ```
55
-
56
- Add a scheduled task to update your sitemaps: `rake sitemap:create_upload_and_ping`
57
-
58
- # SEO
59
-
60
- ## Meta Properties
61
-
62
- All meta fields are controlled via the `page` object. Set attributes on this in order to get meta properties populated. This is best done at the controller level.
63
-
64
- ### Available Properties
65
-
66
- |Property|Description|Inheritance|
67
- |---|---|---|
68
- |`page.title`| | |
69
- |`page.description`| | |
70
- |`page.author`| | |
71
- |`page.og_url`| | |
72
- |`page.og_type`| | |
73
- |`page.og_title`| |`page.title`|
74
- |`page.og_description`| |`page.description`|
75
- |`page.og_image`| | |
76
- |`page.twitter_card`| | | |
77
-
78
- ## Sitemaps
79
-
80
- ### Setup
81
-
82
- Edit `config/sitemap.rb` with your own custom routes.
83
-
84
- ### Updating
85
-
86
- Run `sitemap:refresh` in production to update Bing/Google with changes to the sitemap.
87
-
88
- Put this in a `cron` task or in Heroku Scheduler.
89
-
90
- # Helpers
91
-
92
- ## Geolocation
93
-
94
- By default, Geolocation of the session will automatically happen.
95
-
96
- You can access the session's geolocation in `request.location`.
97
-
98
- To test geolocation locally, set `SPOOF_IP=true` in your `.env`.
99
-
100
- For more info see [Geocoder](https://github.com/alexreisner/geocoder).
101
-
102
- ## Bootstrap
103
-
104
- ### `row_groups_of`
105
-
106
- Makes a series of row/col `div` elements based in group count.
107
-
108
- ```
109
- <% row_groups_of(3, [1,2,3,4,5,6,7,8,9]) do |i| %>
110
- <div class="panel panel-default">
111
- <div class="panel-heading">
112
- <h2 class="text-center"><%= i %></h2>
113
- </div>
114
- </div>
115
- <% end %>
116
- ```
1
+ Automatically generated file,
2
+ see [mvpkit](http:github.com/ian/mvpkit) for more information.
@@ -1,9 +1 @@
1
1
  //= require cable
2
- //= require pack-compiled
3
- // require jquery_ujs
4
- //= require rails.validations
5
- //= require rails.validations.simple_form
6
- //= require templates
7
- //
8
- // require jquery.turbolinks
9
- //= require turbolinks
@@ -1,4 +1,10 @@
1
- //= require pack-compiled
1
+ @import "init/variables";
2
2
 
3
- @import "font-awesome-sprockets";
4
- @import "font-awesome";
3
+ @import 'font-awesome/scss/font-awesome';
4
+ @import "init/bootstrap";
5
+ @import "bootstrap/scss/bootstrap";
6
+
7
+ @import "init/reset";
8
+
9
+ @import "elements/*";
10
+ @import "treatments/*";
@@ -0,0 +1,10 @@
1
+ .alert {
2
+ text-align: center;
3
+ font-family: 'Adelle-Sans-Bold', sans-serif;
4
+ font-weight: bold;
5
+ color: $color-black;
6
+ a {
7
+ color: $color-black !important;
8
+ text-decoration: underline;
9
+ }
10
+ }
@@ -0,0 +1,16 @@
1
+ .badge {
2
+ padding: 0.5em 0.6em 0.25em 0.6em;
3
+
4
+ &.badge-outline-success {
5
+ color: $brand-success;
6
+ border: 1px solid $brand-success;
7
+ }
8
+ &.badge-outline-warning {
9
+ color: $brand-warning;
10
+ border: 1px solid $brand-warning;
11
+ }
12
+ &.badge-outline-danger {
13
+ color: $brand-danger;
14
+ border: 1px solid $brand-danger;
15
+ }
16
+ }
@@ -0,0 +1,107 @@
1
+ @import 'init/variables';
2
+
3
+ .btn {
4
+ box-shadow: 0 1px 2px 0 rgba(106, 116, 135, 0.1);
5
+ padding: 8px 15px 5px 15px;
6
+
7
+ &:hover {
8
+ cursor: pointer;
9
+ }
10
+
11
+ &.btn-lg {
12
+ padding: 9px 15px 5px 15px
13
+ }
14
+
15
+ &.btn-sm {
16
+ padding: 5px 5px 3px 5px
17
+ }
18
+
19
+ &.btn-wite {
20
+ padding-left: 30px;
21
+ padding-right: 30px;
22
+ }
23
+
24
+ &.btn-secondary {
25
+ border: solid 1px $color-grey;
26
+ color: $color-grey-dark;
27
+ background-color: $color-grey-lightest;
28
+
29
+ .fa {
30
+ color: $color-grey;
31
+ }
32
+
33
+ &:hover {
34
+ background-color: darken($color-grey-lightest, 5%);
35
+ }
36
+
37
+ &:focus,
38
+ &:active {
39
+ outline: none !important;
40
+ box-shadow: 0 1px 2px 0 rgba(106, 116, 135, 0.1);
41
+ }
42
+
43
+ &.selected {
44
+ color: $color-grey-lightest;
45
+ background-color: $color-grey;
46
+ }
47
+ }
48
+
49
+ &.has-error {
50
+ border: 1px solid $color-red !important;
51
+ color: $color-red !important;
52
+ background-color: #ffebeb !important;
53
+
54
+ &:focus {
55
+ box-shadow: 0 0 0 2px rgba($color-red, 0.5) !important;
56
+ }
57
+
58
+ .fa {
59
+ color: $color-red !important;
60
+ }
61
+ }
62
+
63
+ @each $name, $val in $colors {
64
+ &.btn-#{"" + $name} {
65
+ @include button-variant(#FFF, $val, $color-grey-light);
66
+ .fa { color: #fff; }
67
+ }
68
+
69
+ &.btn-outline-#{"" + $name} {
70
+ @include button-outline-variant($val);
71
+ border: 1px solid $val;
72
+ }
73
+
74
+ &:active,
75
+ &.active {
76
+ &.btn-active-#{"" + $name} {
77
+ color: #fff;
78
+ background-color: $val;
79
+ background-image: none;
80
+ // border-color: $active-border;
81
+ // @include box-shadow($btn-active-box-shadow);
82
+
83
+ .fa { color: #fff; }
84
+ }
85
+ }
86
+ }
87
+
88
+ &.disabled {
89
+ cursor: default;
90
+ }
91
+
92
+ @each $breakpoint in map-keys($grid-breakpoints) {
93
+ @include media-breakpoint-up($breakpoint) {
94
+ &.btn-block-#{$breakpoint}-up { width: 100%; display: block }
95
+ }
96
+
97
+ @include media-breakpoint-down($breakpoint) {
98
+ &.btn-block-#{$breakpoint}-down { width: 100%; display: block }
99
+ }
100
+ }
101
+ }
102
+
103
+ .btn-group {
104
+ .btn {
105
+ padding: 8px 10px 5px 10px;
106
+ }
107
+ }
@@ -0,0 +1,68 @@
1
+ @import 'init/variables';
2
+
3
+ .card {
4
+ border-radius: $border-radius;
5
+ background-color: #ffffff;
6
+ box-shadow: 0 1px 7px 0 rgba(180, 189, 195, 0.27);
7
+ border: 1px solid $color-grey;
8
+
9
+ .card-title {
10
+ margin-bottom: 0;
11
+ }
12
+
13
+ &.card-hover {
14
+ &:hover {
15
+ cursor: pointer;
16
+ background-color: $color-grey-lightest;
17
+ }
18
+ }
19
+
20
+ .card-block {
21
+ padding: 20px;
22
+ }
23
+
24
+ &.card-success {
25
+ box-shadow: 0 1px 7px 0 rgba($color-green, 0.27);
26
+ border: 1px solid $color-green;
27
+ background-color: $color-success-highlight;
28
+
29
+ a {
30
+ color: $color-green;
31
+ font-weight: bold;
32
+ }
33
+
34
+ &.card-hover:hover {
35
+ background-color: $color-success-highlight-hover;
36
+ }
37
+ }
38
+
39
+ &.card-warning {
40
+ box-shadow: 0 1px 7px 0 rgba($color-red, 0.27);
41
+ border: 1px solid $color-yellow;
42
+ background-color: lighten($color-yellow, 40%);
43
+
44
+ a {
45
+ color: $color-yellow;
46
+ font-weight: bold;
47
+ }
48
+
49
+ &.card-hover:hover {
50
+ background-color: lighten($color-yellow, 42%);
51
+ }
52
+ }
53
+
54
+ &.card-danger {
55
+ box-shadow: 0 1px 7px 0 rgba($color-red, 0.27);
56
+ border: 1px solid $color-red;
57
+ background-color: #ffebeb;;
58
+
59
+ a {
60
+ color: $color-red;
61
+ font-weight: bold;
62
+ }
63
+
64
+ &.card-hover:hover {
65
+ background-color: lighten(#ffebeb, 2%);
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,66 @@
1
+ .drawer {
2
+ .icon {
3
+ position: absolute;
4
+ left: -43px;
5
+
6
+ &.prev {
7
+ top: 65px;
8
+ }
9
+
10
+ &.next {
11
+ top: 115px;
12
+ }
13
+
14
+ &.disabled {
15
+ opacity: 0.5;
16
+ }
17
+ }
18
+
19
+ .modal-dialog {
20
+ animation-duration: 0.3s;
21
+ animation-delay: 0s;
22
+
23
+ position: absolute;
24
+ margin: 0;
25
+ right: 0;
26
+ width: 100%;
27
+ height: 100vh;
28
+
29
+ @include media-breakpoint-up(md) {
30
+ width: 40vw;
31
+ }
32
+
33
+ max-width: 100%;
34
+
35
+ .modal-content {
36
+ border-radius: 0;
37
+ min-height: 100vh;
38
+ }
39
+ }
40
+
41
+ .modal-container {
42
+ @include media-breakpoint-up(md) {
43
+ height: 100vh;
44
+ overflow: hidden;
45
+ }
46
+ }
47
+
48
+ &.drawer-wide {
49
+ .modal-dialog {
50
+ @include media-breakpoint-up(md) {
51
+ width: 80vw;
52
+ }
53
+ }
54
+ }
55
+
56
+ .modal-content {
57
+ .row {
58
+ @each $breakpoint in map-keys($grid-breakpoints) {
59
+ @include media-breakpoint-up($breakpoint) {
60
+ margin-left: 0;
61
+ margin-right: 0;
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,64 @@
1
+ .form-group {
2
+ margin-bottom: 0;
3
+ position: relative;
4
+ }
5
+
6
+ .form-control {
7
+ padding: 8px 10px 5px 10px;
8
+ box-shadow: 0 1px 2px 0 rgba(106, 116, 135, 0.1);
9
+ border-color: $color-grey;
10
+ border-radius: $border-radius;
11
+
12
+ &:focus {
13
+ border-color: $color-green;
14
+ box-shadow: none !important;
15
+ }
16
+
17
+ // text areas are diff color for some reason
18
+ &textarea {
19
+ color: $color-grey-dark;
20
+ &:focus {
21
+ color: $color-grey-dark;
22
+ }
23
+ }
24
+
25
+ &.has-error {
26
+ border: 1px solid $color-red !important;
27
+ color: $color-red !important;
28
+ background-color: #ffebeb;
29
+ &:focus {
30
+ box-shadow: none;
31
+ }
32
+ }
33
+ }
34
+
35
+ .custom-control {
36
+ padding-left: 25px;
37
+ top: -5px;
38
+ .custom-control-indicator {
39
+ width: 1.25rem;
40
+ height: 1.25rem;
41
+ top: 0;
42
+ }
43
+ }
44
+
45
+ .has-feedback {
46
+ .form-control-feedback-left {
47
+ position: absolute;
48
+ line-height: 24px;
49
+ left: 10px;
50
+ }
51
+
52
+ .form-control-feedback-right {
53
+ position: absolute;
54
+ line-height: 24px;
55
+ right: 10px;
56
+ }
57
+ }
58
+
59
+ input[type=radio], input[type=checkbox] {
60
+ transform: scale(1.25);
61
+ margin: 0;
62
+ background-color: #990000;
63
+ border-color: #990000;
64
+ }