rails_app_generator 0.1.28 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/generators/project-plan.rb +6 -3
  3. data/.rubocop.yml +2 -1
  4. data/CHANGELOG.md +29 -0
  5. data/after_templates/addons/acts_as_list/_.rb +0 -14
  6. data/after_templates/addons/mini_magick/_.rb +1 -1
  7. data/after_templates/application/printspeak/_.rb +55 -0
  8. data/after_templates/{rag_tailwind/component-section-begin.html → application/printspeak/app/assets/images/.keep} +0 -0
  9. data/after_templates/application/printspeak/app/assets/images/about/1.jpg +0 -0
  10. data/after_templates/application/printspeak/app/assets/images/about/2.jpg +0 -0
  11. data/after_templates/application/printspeak/app/assets/images/about/3.jpg +0 -0
  12. data/after_templates/application/printspeak/app/assets/images/about/4.jpg +0 -0
  13. data/after_templates/application/printspeak/app/assets/images/close-icon.svg +1 -0
  14. data/after_templates/application/printspeak/app/assets/images/header-bg.jpg +0 -0
  15. data/after_templates/application/printspeak/app/assets/images/logos/facebook.svg +34 -0
  16. data/after_templates/application/printspeak/app/assets/images/logos/google.svg +35 -0
  17. data/after_templates/application/printspeak/app/assets/images/logos/ibm.svg +24 -0
  18. data/after_templates/application/printspeak/app/assets/images/logos/microsoft.svg +42 -0
  19. data/after_templates/application/printspeak/app/assets/images/map-image.png +0 -0
  20. data/after_templates/application/printspeak/app/assets/images/navbar-logo.svg +1 -0
  21. data/after_templates/application/printspeak/app/assets/images/portfolio/1.jpg +0 -0
  22. data/after_templates/application/printspeak/app/assets/images/portfolio/2.jpg +0 -0
  23. data/after_templates/application/printspeak/app/assets/images/portfolio/3.jpg +0 -0
  24. data/after_templates/application/printspeak/app/assets/images/portfolio/4.jpg +0 -0
  25. data/after_templates/application/printspeak/app/assets/images/portfolio/5.jpg +0 -0
  26. data/after_templates/application/printspeak/app/assets/images/portfolio/6.jpg +0 -0
  27. data/after_templates/application/printspeak/app/assets/images/portfolio/alphagraphics.jpeg +0 -0
  28. data/after_templates/application/printspeak/app/assets/images/portfolio/brochure-transformed.jpeg +0 -0
  29. data/after_templates/application/printspeak/app/assets/images/portfolio/brochure.jpeg +0 -0
  30. data/after_templates/application/printspeak/app/assets/images/portfolio/kwikkopy.png +0 -0
  31. data/after_templates/application/printspeak/app/assets/images/portfolio/kwikkopy2.png +0 -0
  32. data/after_templates/application/printspeak/app/assets/images/printspeak-logo.svg +19 -0
  33. data/after_templates/application/printspeak/app/assets/images/team/1.jpg +0 -0
  34. data/after_templates/application/printspeak/app/assets/images/team/2.jpg +0 -0
  35. data/after_templates/application/printspeak/app/assets/images/team/3.jpg +0 -0
  36. data/after_templates/application/printspeak/app/assets/stylesheets/application.bootstrap.scss +3 -0
  37. data/after_templates/application/printspeak/app/assets/stylesheets/home/_global.scss +52 -0
  38. data/after_templates/application/printspeak/app/assets/stylesheets/home/_variables.scss +8 -0
  39. data/after_templates/application/printspeak/app/assets/stylesheets/home/components/_buttons.scss +24 -0
  40. data/after_templates/application/printspeak/app/assets/stylesheets/home/components/_navbar.scss +92 -0
  41. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_contact.scss +71 -0
  42. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_footer.scss +9 -0
  43. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_masthead.scss +52 -0
  44. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_portfolio.scss +108 -0
  45. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_team.scss +24 -0
  46. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_timeline.scss +214 -0
  47. data/after_templates/application/printspeak/app/assets/stylesheets/home/styles.scss +24 -0
  48. data/after_templates/application/printspeak/app/assets/stylesheets/home/variables/_colors.scss +15 -0
  49. data/after_templates/application/printspeak/app/assets/stylesheets/home/variables/_typography.scss +54 -0
  50. data/after_templates/application/printspeak/app/controllers/home_controller.rb +7 -0
  51. data/after_templates/application/printspeak/app/views/home/index.html.erb +321 -0
  52. data/after_templates/application/printspeak/app/views/layouts/_alerts.html.erb +2 -0
  53. data/after_templates/application/printspeak/app/views/layouts/_footer.html.erb +16 -0
  54. data/after_templates/application/printspeak/app/views/layouts/_navbar.html.erb +14 -0
  55. data/after_templates/application/printspeak/app/views/layouts/application.html.erb +29 -0
  56. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/_footer.html.erb +0 -0
  57. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/architecture.html.erb +0 -0
  58. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/blog.html.erb +0 -0
  59. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/faq.html.erb +0 -0
  60. data/after_templates/application/printspeak/app/views/page/page_controller.rb +27 -0
  61. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/readme.html.erb +0 -0
  62. data/after_templates/application/printspeak/db/seeds.rb +16 -0
  63. data/after_templates/printspeak_bak/_.rb +36 -0
  64. data/after_templates/{rag_printspeak → printspeak_bak}/application_controller.rb +0 -0
  65. data/after_templates/{rag_printspeak → printspeak_bak}/faq.html.erb +0 -0
  66. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/_footer.html.erb +0 -0
  67. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/_head.html.erb +0 -0
  68. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/_navbar.html.erb +0 -0
  69. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/application.html.erb +0 -0
  70. data/after_templates/printspeak_bak/page/_footer.html.erb +184 -0
  71. data/after_templates/printspeak_bak/page/architecture.html.erb +33 -0
  72. data/after_templates/printspeak_bak/page/blog.html.erb +44 -0
  73. data/after_templates/printspeak_bak/page/faq.html.erb +2 -0
  74. data/after_templates/{rag_printspeak → printspeak_bak}/page/home.html.erb +0 -0
  75. data/after_templates/{rag_printspeak → printspeak_bak}/page/page_controller.rb +0 -0
  76. data/after_templates/printspeak_bak/page/readme.html.erb +49 -0
  77. data/after_templates/{rag_bootstrap.rb → rag/bootstrap/_.rb} +1 -1
  78. data/after_templates/{rag_bootstrap → rag/bootstrap}/application-yield.html.erb +0 -0
  79. data/after_templates/{rag_bootstrap → rag/bootstrap}/application.html.erb +0 -0
  80. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-fancy.css +0 -0
  81. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-fancy.html +0 -0
  82. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-staff.css +0 -0
  83. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-staff.html +0 -0
  84. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-styled.html +0 -0
  85. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-footer.html +0 -0
  86. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-hero.html +0 -0
  87. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-modal.html +0 -0
  88. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-nav.html +0 -0
  89. data/after_templates/{rag_bootstrap → rag/bootstrap}/custom-bootstrap-import.scss +0 -0
  90. data/after_templates/{rag_bootstrap → rag/bootstrap}/custom-using-css.css +0 -0
  91. data/after_templates/{rag_bootstrap → rag/bootstrap}/custom-using-scss.scss +0 -0
  92. data/after_templates/{rag_bootstrap → rag/bootstrap}/manifest.js +0 -0
  93. data/after_templates/{rag_devise.rb → rag/devise/_.rb} +1 -1
  94. data/after_templates/{rag_devise → rag/devise}/application.html.erb +0 -0
  95. data/after_templates/{rag_devise → rag/devise}/application_controller.rb +0 -0
  96. data/after_templates/{rag_devise → rag/devise}/config/initializers/devise_turbo.rb +0 -0
  97. data/after_templates/{rag_devise → rag/devise}/layouts/_alerts.html.erb +0 -0
  98. data/after_templates/{rag_devise → rag/devise}/layouts/_footer.html.erb +0 -0
  99. data/after_templates/{rag_devise → rag/devise}/layouts/_navbar.html.erb +0 -0
  100. data/after_templates/{rag_devise → rag/devise}/layouts/application.html.erb +0 -0
  101. data/after_templates/{rag_devise → rag/devise}/post/_post.html.erb +0 -0
  102. data/after_templates/{rag_devise → rag/devise}/post/post.rb +0 -0
  103. data/after_templates/{rag_devise → rag/devise}/post/posts_controller.rb +0 -0
  104. data/after_templates/{rag_devise → rag/devise}/seed_data.rb +0 -0
  105. data/after_templates/{rag_devise → rag/devise}/turbo_controller.rb +0 -0
  106. data/after_templates/{rag_devise → rag/devise}/user.rb +0 -0
  107. data/after_templates/{rag_import_map.rb → rag/import_map/_.rb} +1 -1
  108. data/after_templates/{rag_import_map → rag/import_map}/component-sortable.html +0 -0
  109. data/after_templates/{rag_import_map → rag/import_map}/home.css +0 -0
  110. data/after_templates/{rag_import_map → rag/import_map}/position_controller.js +0 -0
  111. data/after_templates/{rag_simple.rb → rag/simple/_.rb} +1 -1
  112. data/after_templates/{rag_tailwind.rb → rag/tailwind/_.rb} +1 -1
  113. data/after_templates/{rag_tailwind → rag/tailwind}/component-cta.html +0 -0
  114. data/after_templates/{rag_tailwind → rag/tailwind}/component-faq.html +0 -0
  115. data/after_templates/{rag_tailwind → rag/tailwind}/component-footer.html +0 -0
  116. data/after_templates/{rag_tailwind → rag/tailwind}/component-hero.html +0 -0
  117. data/after_templates/{rag_tailwind → rag/tailwind}/component-nav.html +0 -0
  118. data/after_templates/{rag_tailwind/component-section-end.html → rag/tailwind/component-section-begin.html} +0 -0
  119. data/after_templates/{rag_tailwind_emulating_bootstrap/home/index.html.erb → rag/tailwind/component-section-end.html} +0 -0
  120. data/after_templates/{rag_tailwind_daisyui.rb → rag/tailwind_daisyui/_.rb} +1 -1
  121. data/after_templates/{rag_tailwind_daisyui → rag/tailwind_daisyui}/index.html.erb +0 -0
  122. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/Procfile.dev +0 -0
  123. data/after_templates/{rag_tailwind_emulating_bootstrap.rb → rag/tailwind_emulating_bootstrap/_.rb} +1 -1
  124. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/application.html.erb +0 -0
  125. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/application.tailwind.css +0 -0
  126. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/application_controller.rb +0 -0
  127. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/_example.html.erb +0 -0
  128. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/bootstrap.html.erb +0 -0
  129. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/home_controller.rb +0 -0
  130. data/after_templates/rag/tailwind_emulating_bootstrap/home/index.html.erb +0 -0
  131. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/tailwind.html.erb +0 -0
  132. data/after_templates/{rag_tailwind_hotwire.rb → rag/tailwind_hotwire/_.rb} +1 -1
  133. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/controller.rb +0 -0
  134. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/helper.rb +0 -0
  135. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/increment.html.erb +0 -0
  136. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/index.html +0 -0
  137. data/after_templates/{rag_tailwind_hotwire_flash.rb → rag/tailwind_hotwire_flash/_.rb} +1 -1
  138. data/after_templates/{rag_tailwind_hotwire_form.rb → rag/tailwind_hotwire_form/_.rb} +1 -1
  139. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_contact.html.erb +0 -0
  140. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_count.html.erb +0 -0
  141. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_flash.html.erb +0 -0
  142. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_form.html.erb +0 -0
  143. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_list.html.erb +0 -0
  144. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application.html.erb +0 -0
  145. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application.js +0 -0
  146. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application.tailwind.css +0 -0
  147. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application_helper.rb +0 -0
  148. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/contact.rb +0 -0
  149. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/contacts_controller.rb +0 -0
  150. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/create.turbo_stream.erb +0 -0
  151. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/edit.html.erb +0 -0
  152. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/index.html.erb +0 -0
  153. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/new.html.erb +0 -0
  154. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/show.html.erb +0 -0
  155. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/update.turbo_stream.erb +0 -0
  156. data/after_templates/{rag_tailwind_hotwire_form_search.rb → rag/tailwind_hotwire_form_search/_.rb} +1 -3
  157. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_contact.html.erb +0 -0
  158. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_count.html.erb +0 -0
  159. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_flash.html.erb +0 -0
  160. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_form.html.erb +0 -0
  161. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_list.html.erb +0 -0
  162. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_theme_changer.html.erb +0 -0
  163. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application.html.erb +0 -0
  164. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application.js +0 -0
  165. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application.tailwind.css +0 -0
  166. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application_helper.rb +0 -0
  167. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/contact.rb +0 -0
  168. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/contacts_controller.rb +0 -0
  169. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/create.turbo_stream.erb +0 -0
  170. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/edit.html.erb +0 -0
  171. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/index.html.erb +0 -0
  172. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/new.html.erb +0 -0
  173. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/search_controller.js +0 -0
  174. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/show.html.erb +0 -0
  175. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/theme_changer_controller.js +0 -0
  176. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/update.turbo_stream.erb +0 -0
  177. data/docs/last_run/app_generator_class.json +430 -0
  178. data/docs/last_run/app_generator_data.json +49 -0
  179. data/docs/last_run/rails_options_class.json +430 -0
  180. data/docs/last_run/rails_options_data.json +57 -0
  181. data/docs/project-plan/project.drawio +49 -46
  182. data/docs/project-plan/project_todo.svg +1 -1
  183. data/exe/rag +2 -0
  184. data/lib/rails_app_generator/addons/annotate.rb +0 -3
  185. data/lib/rails_app_generator/addons/twilio_ruby.rb +13 -0
  186. data/lib/rails_app_generator/app_generator.rb +37 -162
  187. data/lib/rails_app_generator/cli/profile.rb +3 -1
  188. data/lib/rails_app_generator/configuration/rag_configuration.rb +18 -0
  189. data/lib/rails_app_generator/configuration/rag_configuration_extension.rb +14 -0
  190. data/lib/rails_app_generator/options/build_option.rb +14 -9
  191. data/lib/rails_app_generator/options/options_builder.rb +57 -9
  192. data/lib/rails_app_generator/options/rails_options.rb +6 -68
  193. data/lib/rails_app_generator/rag_initializer.rb +252 -0
  194. data/lib/rails_app_generator/util.rb +26 -0
  195. data/lib/rails_app_generator/version.rb +1 -1
  196. data/lib/rails_app_generator.rb +4 -1
  197. data/package-lock.json +2 -2
  198. data/package.json +1 -1
  199. data/profiles/addons/mini_magick.json +2 -1
  200. data/profiles/application/printspeak.json +12 -0
  201. data/profiles/default/printspeak.json +12 -0
  202. data/profiles/{rag-printspeak.json → printspeak.json} +3 -2
  203. data/profiles/{rag-bootstrap.json → rag/bootstrap.json} +1 -1
  204. data/profiles/{rag-devise.json → rag/devise.json} +1 -1
  205. data/profiles/{rag-import-map.json → rag/import-map.json} +1 -1
  206. data/profiles/{rag-simple.json → rag/simple.json} +3 -2
  207. data/profiles/{rag-tailwind-daisyui.json → rag/tailwind-daisyui.json} +1 -1
  208. data/profiles/{rag-tailwind-emulating-bootstrap.json → rag/tailwind-emulating-bootstrap.json} +2 -3
  209. data/profiles/{rag-tailwind-hotwire-flash.json → rag/tailwind-hotwire-flash.json} +1 -1
  210. data/profiles/{rag-tailwind-hotwire-form-search.json → rag/tailwind-hotwire-form-search.json} +1 -1
  211. data/profiles/{rag-tailwind-hotwire-form.json → rag/tailwind-hotwire-form.json} +1 -1
  212. data/profiles/{rag-tailwind-hotwire.json → rag/tailwind-hotwire.json} +1 -1
  213. data/profiles/{rag-tailwind.json → rag/tailwind.json} +3 -2
  214. data/tasks/profile.thor +1 -1
  215. data/templates/thor_task/addon/addon.tt +2 -6
  216. data/templates/thor_task/profile/after_template.rb +1 -0
  217. metadata +208 -130
  218. data/after_templates/rag_printspeak.rb +0 -36
  219. data/profiles/rag-add-some-pages.json +0 -11
  220. data/profiles/rag-sample.json +0 -13
@@ -0,0 +1,321 @@
1
+ <header class="masthead">
2
+ <div class="container">
3
+ <div class="masthead-subheading">Welcome To Print Speak!</div>
4
+ <div class="masthead-heading text-uppercase">we make it easier for you to</div><a class="btn btn-primary btn-xl text-uppercase" href="#services">grow your business</a>
5
+
6
+ </div>
7
+ </header><!-- Services-->
8
+ <section class="page-section" id="services">
9
+ <div class="container">
10
+ <div class="text-center">
11
+ <h2 class="section-heading text-uppercase">What does it do?</h2>
12
+ <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3>
13
+ </div>
14
+ <div class="row text-center">
15
+ <div class="col-md-4"><span class="fa-stack fa-4x"><i class="fas fa-circle fa-stack-2x text-primary"></i><i class="fas fa-shopping-cart fa-stack-1x fa-inverse"></i></span>
16
+ <h4 class="my-3">Delivers</h4>
17
+ <p class="text-muted">It delivers key business data in a format that is easy to understand and, more importantly, easy to act upon.</p>
18
+ </div>
19
+ <div class="col-md-4"><span class="fa-stack fa-4x"><i class="fas fa-circle fa-stack-2x text-primary"></i><i class="fas fa-laptop fa-stack-1x fa-inverse"></i></span>
20
+ <h4 class="my-3">Identifies</h4>
21
+ <p class="text-muted">It identifies insights from within your data and prompts actions that enable you to increase sales and customer retention.</p>
22
+ </div>
23
+ <div class="col-md-4"><span class="fa-stack fa-4x"><i class="fas fa-circle fa-stack-2x text-primary"></i><i class="fas fa-lock fa-stack-1x fa-inverse"></i></span>
24
+ <h4 class="my-3">Automates</h4>
25
+ <p class="text-muted">It enables you to automate a number of core customer service and marketing activities that will drive enquiries and sales conversions.</p>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </section><!-- Portfolio Grid-->
30
+ <section class="page-section bg-light" id="portfolio">
31
+ <div class="container">
32
+ <div class="text-center">
33
+ <h2 class="section-heading text-uppercase">Portfolio</h2>
34
+ <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3>
35
+ </div>
36
+ <div class="row">
37
+ <div class="col-lg-4 col-sm-6 mb-4">
38
+ <!-- Portfolio item 1-->
39
+ <div class="portfolio-item"><a class="portfolio-link" data-bs-toggle="modal" href="#portfolioModal1">
40
+ <div class="portfolio-hover">
41
+ <div class="portfolio-hover-content"><i class="fas fa-plus fa-3x"></i></div>
42
+ </div><%= image_tag 'portfolio/alphagraphics', alt: 'icon', class: "img-fluid" %>
43
+ </a>
44
+ <div class="portfolio-caption">
45
+ <div class="portfolio-caption-heading">Threads</div>
46
+ <div class="portfolio-caption-subheading text-muted">Illustration</div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <div class="col-lg-4 col-sm-6 mb-4">
51
+ <!-- Portfolio item 2-->
52
+ <div class="portfolio-item"><a class="portfolio-link" data-bs-toggle="modal" href="#portfolioModal2">
53
+ <div class="portfolio-hover">
54
+ <div class="portfolio-hover-content"><i class="fas fa-plus fa-3x"></i></div>
55
+ </div><%= image_tag 'portfolio/kwikkopy', alt: 'icon', class: "img-fluid" %>
56
+ </a>
57
+ <div class="portfolio-caption">
58
+ <div class="portfolio-caption-heading">Explore</div>
59
+ <div class="portfolio-caption-subheading text-muted">Graphic Design</div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ <div class="col-lg-4 col-sm-6 mb-4">
64
+ <!-- Portfolio item 3-->
65
+ <div class="portfolio-item"><a class="portfolio-link" data-bs-toggle="modal" href="#portfolioModal3">
66
+ <div class="portfolio-hover">
67
+ <div class="portfolio-hover-content"><i class="fas fa-plus fa-3x"></i></div>
68
+ </div><%= image_tag 'portfolio/3', alt: 'icon', class: "img-fluid" %>
69
+ </a>
70
+ <div class="portfolio-caption">
71
+ <div class="portfolio-caption-heading">Finish</div>
72
+ <div class="portfolio-caption-subheading text-muted">Identity</div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ <div class="col-lg-4 col-sm-6 mb-4 mb-lg-0">
77
+ <!-- Portfolio item 4-->
78
+ <div class="portfolio-item"><a class="portfolio-link" data-bs-toggle="modal" href="#portfolioModal4">
79
+ <div class="portfolio-hover">
80
+ <div class="portfolio-hover-content"><i class="fas fa-plus fa-3x"></i></div>
81
+ </div><%= image_tag 'portfolio/brochure-transformed', alt: 'icon', class: "img-fluid" %>
82
+ </a>
83
+ <div class="portfolio-caption">
84
+ <div class="portfolio-caption-heading">Lines</div>
85
+ <div class="portfolio-caption-subheading text-muted">Branding</div>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ <div class="col-lg-4 col-sm-6 mb-4 mb-sm-0">
90
+ <!-- Portfolio item 5-->
91
+ <div class="portfolio-item"><a class="portfolio-link" data-bs-toggle="modal" href="#portfolioModal5">
92
+ <div class="portfolio-hover">
93
+ <div class="portfolio-hover-content"><i class="fas fa-plus fa-3x"></i></div>
94
+ </div><%= image_tag 'portfolio/5', alt: 'icon', class: "img-fluid" %>
95
+ </a>
96
+ <div class="portfolio-caption">
97
+ <div class="portfolio-caption-heading">Southwest</div>
98
+ <div class="portfolio-caption-subheading text-muted">Website Design</div>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ <div class="col-lg-4 col-sm-6">
103
+ <!-- Portfolio item 6-->
104
+ <div class="portfolio-item"><a class="portfolio-link" data-bs-toggle="modal" href="#portfolioModal6">
105
+ <div class="portfolio-hover">
106
+ <div class="portfolio-hover-content"><i class="fas fa-plus fa-3x"></i></div>
107
+ </div><%= image_tag 'portfolio/6', alt: 'icon', class: "img-fluid" %>
108
+ </a>
109
+ <div class="portfolio-caption">
110
+ <div class="portfolio-caption-heading">Window</div>
111
+ <div class="portfolio-caption-subheading text-muted">Photography</div>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </section><!-- About-->
118
+ <section class="page-section" id="about">
119
+ <div class="container">
120
+ <div class="text-center">
121
+ <h2 class="section-heading text-uppercase">About</h2>
122
+ <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3>
123
+ </div>
124
+ <ul class="timeline">
125
+ <li>
126
+ <div class="timeline-image"><%= image_tag "about/1.jpg", class: "rounded-circle img-fluid", alt: "..." %></div>
127
+ <div class="timeline-panel">
128
+ <div class="timeline-heading">
129
+ <h4>2009-2011</h4>
130
+ <h4 class="subheading">Our Humble Beginnings</h4>
131
+ </div>
132
+ <div class="timeline-body">
133
+ <p class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam, recusandae sit vero unde, sed, incidunt et ea quo dolore laudantium consectetur!</p>
134
+ </div>
135
+ </div>
136
+ </li>
137
+ <li class="timeline-inverted">
138
+ <div class="timeline-image"><%= image_tag "about/2.jpg", class: "rounded-circle img-fluid", alt: "..." %></div>
139
+ <div class="timeline-panel">
140
+ <div class="timeline-heading">
141
+ <h4>March 2011</h4>
142
+ <h4 class="subheading">An Agency is Born</h4>
143
+ </div>
144
+ <div class="timeline-body">
145
+ <p class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam, recusandae sit vero unde, sed, incidunt et ea quo dolore laudantium consectetur!</p>
146
+ </div>
147
+ </div>
148
+ </li>
149
+ <li>
150
+ <div class="timeline-image"><%= image_tag "about/3.jpg", class: "rounded-circle img-fluid", alt: "..." %></div>
151
+ <div class="timeline-panel">
152
+ <div class="timeline-heading">
153
+ <h4>December 2015</h4>
154
+ <h4 class="subheading">Transition to Full Service</h4>
155
+ </div>
156
+ <div class="timeline-body">
157
+ <p class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam, recusandae sit vero unde, sed, incidunt et ea quo dolore laudantium consectetur!</p>
158
+ </div>
159
+ </div>
160
+ </li>
161
+ <li class="timeline-inverted">
162
+ <div class="timeline-image"><%= image_tag "about/4.jpg", class: "rounded-circle img-fluid", alt: "..." %></div>
163
+ <div class="timeline-panel">
164
+ <div class="timeline-heading">
165
+ <h4>July 2020</h4>
166
+ <h4 class="subheading">Phase Two Expansion</h4>
167
+ </div>
168
+ <div class="timeline-body">
169
+ <p class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam, recusandae sit vero unde, sed, incidunt et ea quo dolore laudantium consectetur!</p>
170
+ </div>
171
+ </div>
172
+ </li>
173
+ <li class="timeline-inverted">
174
+ <div class="timeline-image">
175
+ <h4>Be Part<br />Of Our<br />Story!</h4>
176
+ </div>
177
+ </li>
178
+ </ul>
179
+ </div>
180
+ </section><!-- Team-->
181
+ <section class="page-section bg-light" id="team">
182
+ <div class="container">
183
+ <div class="text-center">
184
+ <h2 class="section-heading text-uppercase">Our Amazing Team</h2>
185
+ <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3>
186
+ </div>
187
+ <div class="row">
188
+ <div class="col-lg-4">
189
+ <div class="team-member"><%= image_tag "team/1.jpg", class: "mx-auto rounded-circle", alt: "..." %>
190
+ <h4>Parveen Anand</h4>
191
+ <p class="text-muted">Lead Designer</p><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Parveen Anand Twitter Profile"><i class="fab fa-twitter"></i></a><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Parveen Anand Facebook Profile"><i class="fab fa-facebook-f"></i></a><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Parveen Anand LinkedIn Profile"><i class="fab fa-linkedin-in"></i></a>
192
+ </div>
193
+ </div>
194
+ <div class="col-lg-4">
195
+ <div class="team-member"><%= image_tag "team/2.jpg", class: "mx-auto rounded-circle", alt: "..." %>
196
+ <h4>Diana Petersen</h4>
197
+ <p class="text-muted">Lead Marketer</p><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Diana Petersen Twitter Profile"><i class="fab fa-twitter"></i></a><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Diana Petersen Facebook Profile"><i class="fab fa-facebook-f"></i></a><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Diana Petersen LinkedIn Profile"><i class="fab fa-linkedin-in"></i></a>
198
+ </div>
199
+ </div>
200
+ <div class="col-lg-4">
201
+ <div class="team-member"><%= image_tag "team/3.jpg", class: "mx-auto rounded-circle", alt: "..." %>
202
+ <h4>Larry Parker</h4>
203
+ <p class="text-muted">Lead Developer</p><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Larry Parker Twitter Profile"><i class="fab fa-twitter"></i></a><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Larry Parker Facebook Profile"><i class="fab fa-facebook-f"></i></a><a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Larry Parker LinkedIn Profile"><i class="fab fa-linkedin-in"></i></a>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ <div class="row">
208
+ <div class="col-lg-8 mx-auto text-center">
209
+ <p class="large text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut eaque, laboriosam veritatis, quos non quis ad perspiciatis, totam corporis ea, alias ut unde.</p>
210
+ </div>
211
+ </div>
212
+ </div>
213
+ </section><!-- Clients-->
214
+ <div class="py-5">
215
+ <div class="container">
216
+ <div class="row align-items-center">
217
+ <div class="col-md-3 col-sm-6 my-3"><a href="#!"><%= image_tag "logos/microsoft.svg", class: "img-fluid img-brand d-block mx-auto", alt: "...", aria_label: "Microsoft Logo" %></a></div>
218
+ <div class="col-md-3 col-sm-6 my-3"><a href="#!"><%= image_tag "logos/google.svg", class: "img-fluid img-brand d-block mx-auto", alt: "...", aria_label: "Google Logo" %></a></div>
219
+ <div class="col-md-3 col-sm-6 my-3"><a href="#!"><%= image_tag "logos/facebook.svg", class: "img-fluid img-brand d-block mx-auto", alt: "...", aria_label: "Facebook Logo" %></a></div>
220
+ <div class="col-md-3 col-sm-6 my-3"><a href="#!"><%= image_tag "logos/ibm.svg", class: "img-fluid img-brand d-block mx-auto", alt: "...", aria_label: "IBM Logo" %></a></div>
221
+ </div>
222
+ </div>
223
+ </div><!-- Contact-->
224
+ <section class="page-section" id="contact">
225
+ <div class="container">
226
+ <div class="text-center">
227
+ <h2 class="section-heading text-uppercase">Contact Us</h2>
228
+ <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3>
229
+ </div>
230
+
231
+ <form id="contactForm" data-sb-form-api-token="API_TOKEN">
232
+ <div class="row align-items-stretch mb-5">
233
+ <div class="col-md-6">
234
+ <div class="form-group">
235
+ <!-- Name input--><input class="form-control" id="name" type="text" placeholder="Your Name *" data-sb-validations="required" />
236
+ <div class="invalid-feedback" data-sb-feedback="name:required">A name is required.</div>
237
+ </div>
238
+ <div class="form-group">
239
+ <!-- Email address input--><input class="form-control" id="email" type="email" placeholder="Your Email *" data-sb-validations="required,email" />
240
+ <div class="invalid-feedback" data-sb-feedback="email:required">An email is required.</div>
241
+ <div class="invalid-feedback" data-sb-feedback="email:email">Email is not valid.</div>
242
+ </div>
243
+ <div class="form-group mb-md-0">
244
+ <!-- Phone number input--><input class="form-control" id="phone" type="tel" placeholder="Your Phone *" data-sb-validations="required" />
245
+ <div class="invalid-feedback" data-sb-feedback="phone:required">A phone number is required.</div>
246
+ </div>
247
+ </div>
248
+ <div class="col-md-6">
249
+ <div class="form-group form-group-textarea mb-md-0">
250
+ <!-- Message input--><textarea class="form-control" id="message" placeholder="Your Message *" data-sb-validations="required"></textarea>
251
+ <div class="invalid-feedback" data-sb-feedback="message:required">A message is required.</div>
252
+ </div>
253
+ </div>
254
+ </div><!-- Submit success message-->
255
+ <!---->
256
+ <!-- This is what your users will see when the form-->
257
+ <!-- has successfully submitted-->
258
+ <div class="d-none" id="submitSuccessMessage">
259
+ <div class="text-center text-white mb-3">
260
+ <div class="fw-bolder">Form submission successful!</div>To activate this form, sign up at<br /><a href="https://startbootstrap.com/solution/contact-forms">https://startbootstrap.com/solution/contact-forms</a>
261
+ </div>
262
+ </div><!-- Submit error message-->
263
+ <!---->
264
+ <!-- This is what your users will see when there is-->
265
+ <!-- an error submitting the form-->
266
+ <div class="d-none" id="submitErrorMessage">
267
+ <div class="text-center text-danger mb-3">Error sending message!</div>
268
+ </div><!-- Submit Button-->
269
+ <div class="text-center"><button class="btn btn-primary btn-xl text-uppercase disabled" id="submitButton" type="submit">Send Message</button></div>
270
+ </form>
271
+ </div>
272
+ </section>
273
+
274
+
275
+ <script>
276
+ window.addEventListener('DOMContentLoaded', event => {
277
+
278
+ // Navbar shrink function
279
+ var navbarShrink = function () {
280
+ const navbarCollapsible = document.body.querySelector('#mainNav');
281
+ if (!navbarCollapsible) {
282
+ return;
283
+ }
284
+ if (window.scrollY === 0) {
285
+ navbarCollapsible.classList.remove('navbar-shrink')
286
+ } else {
287
+ navbarCollapsible.classList.add('navbar-shrink')
288
+ }
289
+
290
+ };
291
+
292
+ // Shrink the navbar
293
+ navbarShrink();
294
+
295
+ // Shrink the navbar when page is scrolled
296
+ document.addEventListener('scroll', navbarShrink);
297
+
298
+ // Activate Bootstrap scrollspy on the main nav element
299
+ const mainNav = document.body.querySelector('#mainNav');
300
+ if (mainNav) {
301
+ new bootstrap.ScrollSpy(document.body, {
302
+ target: '#mainNav',
303
+ offset: 74,
304
+ });
305
+ };
306
+
307
+ // Collapse responsive navbar when toggler is visible
308
+ const navbarToggler = document.body.querySelector('.navbar-toggler');
309
+ const responsiveNavItems = [].slice.call(
310
+ document.querySelectorAll('#navbarResponsive .nav-link')
311
+ );
312
+ responsiveNavItems.map(function (responsiveNavItem) {
313
+ responsiveNavItem.addEventListener('click', () => {
314
+ if (window.getComputedStyle(navbarToggler).display !== 'none') {
315
+ navbarToggler.click();
316
+ }
317
+ });
318
+ });
319
+
320
+ });
321
+ </script>
@@ -0,0 +1,2 @@
1
+ <% flash.each do |type, msg| %><div class="<%= type %>"><%= msg %></div><% end %>
2
+ <% if flash.any? %><hr /><% end %>
@@ -0,0 +1,16 @@
1
+ <footer class="footer py-4">
2
+ <div class="container">
3
+ <div class="row align-items-center">
4
+ <div class="col-lg-4 text-lg-start">Copyright &copy; Printspeak 2022</div>
5
+ <div class="col-lg-4 my-3 my-lg-0">
6
+ <a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Twitter"><i class="fab fa-twitter"></i></a>
7
+ <a class="btn btn-dark btn-social mx-2" href="#!" aria-label="Facebook"><i class="fab fa-facebook-f"></i></a>
8
+ <a class="btn btn-dark btn-social mx-2" href="#!" aria-label="LinkedIn"><i class="fab fa-linkedin-in"></i></a>
9
+ </div>
10
+ <div class="col-lg-4 text-lg-end">
11
+ <a class="link-dark text-decoration-none me-3" href="#!">Privacy Policy</a>
12
+ <a class="link-dark text-decoration-none" href="#!">Terms of Use</a>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ </footer>
@@ -0,0 +1,14 @@
1
+ <nav class="navbar navbar-expand-lg navbar-dark fixed-top" id="mainNav">
2
+ <div class="container"><a class="navbar-brand" href="#page-top"><%= image_tag "printspeak-logo.svg", alt: "..." %></a><button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">Menu<i class="fas fa-bars ms-1"></i></button>
3
+ <div class="collapse navbar-collapse" id="navbarResponsive">
4
+ <ul class="navbar-nav text-uppercase ms-auto py-4 py-lg-0">
5
+ <li class="nav-item"><%= link_to 'Home', root_path, class: "nav-link" %></li>
6
+ <li class="nav-item"><a class="nav-link" href="#services">Services</a></li>
7
+ <li class="nav-item"><a class="nav-link" href="#portfolio">Portfolio</a></li>
8
+ <li class="nav-item"><a class="nav-link" href="#about">About</a></li>
9
+ <li class="nav-item"><a class="nav-link" href="#team">Team</a></li>
10
+ <li class="nav-item"><a class="nav-link" href="#contact">Contact</a></li>
11
+ </ul>
12
+ </div>
13
+ </div>
14
+ </nav><!-- Masthead-->
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= camelized %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <%%= csrf_meta_tags %>
7
+ <%%= csp_meta_tag %>
8
+
9
+ <script src="https://use.fontawesome.com/releases/v6.1.0/js/all.js" crossorigin="anonymous"></script>
10
+ <link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css" />
11
+ <link href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700" rel="stylesheet" type="text/css" />
12
+
13
+ <%- if options[:skip_hotwire] || options[:skip_javascript] -%>
14
+ <%%= stylesheet_link_tag "application" %>
15
+ <%- else -%>
16
+ <%%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
17
+ <%- end -%>
18
+ </head>
19
+
20
+ <body id="page-top">
21
+ <%%= render 'layouts/navbar' %>
22
+ <main>
23
+ <%%= render 'layouts/alerts' %>
24
+ <%%= yield %>
25
+ </main>
26
+ <%%= render 'layouts/footer' %>
27
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
28
+ </body>
29
+ </html>
@@ -0,0 +1,27 @@
1
+ class PageController < ApplicationController
2
+ # before_action { footer_partial('page/footer') }
3
+
4
+ def home
5
+ end
6
+
7
+ def blog
8
+ end
9
+
10
+ def readme
11
+ end
12
+
13
+ def about
14
+ end
15
+
16
+ def contact
17
+ end
18
+
19
+ def faq
20
+ end
21
+
22
+ def terms
23
+ end
24
+
25
+ def privacy
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
3
+ #
4
+ # User.find_or_create_by(email: "admin@admin.com") do |user|
5
+ # user.name = 'Admin'
6
+ # user.password = 'password'
7
+ # user.admin = true
8
+ # end
9
+
10
+ # david = User.create(email: 'david@site.com', name: 'david', password: 'password')
11
+ # bob = User.create(email: 'bob@site.com', name: 'bob', password: 'password')
12
+ # lisa = User.create(email: 'lisa@site.com', name: 'lisa', password: 'password')
13
+
14
+ # 10.times do |i|
15
+ # Post.create(title: "Post #{i}", body: "This is the body of post #{i}", user: User.all.sample)
16
+ # end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Rails 7 with Bootstrap CSS and custom CSS
4
+ # https://www.youtube.com/watch?v=tYr8yn7yRKw
5
+
6
+ require 'pry'
7
+
8
+ self.local_template_path = File.dirname(__FILE__)
9
+
10
+ gac 'base rails 7 image created'
11
+
12
+ # css_install('tailwind')
13
+
14
+ # add_controller('page', 'home', 'blog', 'readme', 'about', 'contact', 'faq', 'terms', 'privacy')
15
+ # route("root 'page#home'")
16
+
17
+ # force_copy
18
+
19
+ # copy_file 'application_controller.rb' , 'app/controllers/application_controller.rb'
20
+
21
+ # copy_file 'page/page_controller.rb' , 'app/controllers/page_controller.rb'
22
+ # copy_file 'page/_footer.html.erb' , 'app/views/page/_footer.html.erb'
23
+ # template 'page/home.html.erb' , 'app/views/page/home.html.erb'
24
+ # template 'page/faq.html.erb' , 'app/views/page/faq.html.erb'
25
+ # copy_file 'page/blog.html.erb' , 'app/views/page/blog.html.erb'
26
+ # copy_file 'page/readme.html.erb' , 'app/views/page/readme.html.erb'
27
+
28
+ # # DON'T THINK _HEAD is needed anymore, check it out
29
+ # copy_file 'layouts/_head.html.erb' , 'app/views/layouts/_head.html.erb'
30
+ # template 'layouts/_navbar.html.erb' , 'app/views/layouts/_navbar.html.erb'
31
+ # copy_file 'layouts/_footer.html.erb' , 'app/views/layouts/_footer.html.erb'
32
+ # template 'layouts/application.html.erb' , 'app/views/layouts/application.html.erb'
33
+
34
+ after_bundle do
35
+ # if needed
36
+ end