mvpkit 1.1.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }