rails_app_generator 0.2.0 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (224) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/generators/project-plan.rb +6 -3
  3. data/CHANGELOG.md +28 -0
  4. data/after_templates/addons/dotenv/_.rb +21 -0
  5. data/after_templates/addons/dotenv/app/controllers/home_controller.rb +7 -0
  6. data/after_templates/addons/dotenv/app/views/home/index.html.erb +10 -0
  7. data/after_templates/addons/dotenv/app/views/layouts/application.html.erb +19 -0
  8. data/after_templates/addons/rubocop/_.rb +29 -0
  9. data/after_templates/addons/rubocop/app/assets/images/cop-output.png +0 -0
  10. data/after_templates/addons/rubocop/app/controllers/home_controller.rb +21 -0
  11. data/after_templates/addons/rubocop/app/views/home/index.html.erb +46 -0
  12. data/after_templates/addons/rubocop/app/views/layouts/application.html.erb +19 -0
  13. data/after_templates/application/printspeak/_.rb +55 -0
  14. data/after_templates/{rag_tailwind/component-section-begin.html → application/printspeak/app/assets/images/.keep} +0 -0
  15. data/after_templates/application/printspeak/app/assets/images/about/1.jpg +0 -0
  16. data/after_templates/application/printspeak/app/assets/images/about/2.jpg +0 -0
  17. data/after_templates/application/printspeak/app/assets/images/about/3.jpg +0 -0
  18. data/after_templates/application/printspeak/app/assets/images/about/4.jpg +0 -0
  19. data/after_templates/application/printspeak/app/assets/images/close-icon.svg +1 -0
  20. data/after_templates/application/printspeak/app/assets/images/header-bg.jpg +0 -0
  21. data/after_templates/application/printspeak/app/assets/images/logos/facebook.svg +34 -0
  22. data/after_templates/application/printspeak/app/assets/images/logos/google.svg +35 -0
  23. data/after_templates/application/printspeak/app/assets/images/logos/ibm.svg +24 -0
  24. data/after_templates/application/printspeak/app/assets/images/logos/microsoft.svg +42 -0
  25. data/after_templates/application/printspeak/app/assets/images/map-image.png +0 -0
  26. data/after_templates/application/printspeak/app/assets/images/navbar-logo.svg +1 -0
  27. data/after_templates/application/printspeak/app/assets/images/portfolio/1.jpg +0 -0
  28. data/after_templates/application/printspeak/app/assets/images/portfolio/2.jpg +0 -0
  29. data/after_templates/application/printspeak/app/assets/images/portfolio/3.jpg +0 -0
  30. data/after_templates/application/printspeak/app/assets/images/portfolio/4.jpg +0 -0
  31. data/after_templates/application/printspeak/app/assets/images/portfolio/5.jpg +0 -0
  32. data/after_templates/application/printspeak/app/assets/images/portfolio/6.jpg +0 -0
  33. data/after_templates/application/printspeak/app/assets/images/portfolio/alphagraphics.jpeg +0 -0
  34. data/after_templates/application/printspeak/app/assets/images/portfolio/brochure-transformed.jpeg +0 -0
  35. data/after_templates/application/printspeak/app/assets/images/portfolio/brochure.jpeg +0 -0
  36. data/after_templates/application/printspeak/app/assets/images/portfolio/kwikkopy.png +0 -0
  37. data/after_templates/application/printspeak/app/assets/images/portfolio/kwikkopy2.png +0 -0
  38. data/after_templates/application/printspeak/app/assets/images/printspeak-logo.svg +19 -0
  39. data/after_templates/application/printspeak/app/assets/images/team/1.jpg +0 -0
  40. data/after_templates/application/printspeak/app/assets/images/team/2.jpg +0 -0
  41. data/after_templates/application/printspeak/app/assets/images/team/3.jpg +0 -0
  42. data/after_templates/application/printspeak/app/assets/stylesheets/application.bootstrap.scss +3 -0
  43. data/after_templates/application/printspeak/app/assets/stylesheets/home/_global.scss +52 -0
  44. data/after_templates/application/printspeak/app/assets/stylesheets/home/_variables.scss +8 -0
  45. data/after_templates/application/printspeak/app/assets/stylesheets/home/components/_buttons.scss +24 -0
  46. data/after_templates/application/printspeak/app/assets/stylesheets/home/components/_navbar.scss +92 -0
  47. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_contact.scss +71 -0
  48. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_footer.scss +9 -0
  49. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_masthead.scss +52 -0
  50. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_portfolio.scss +108 -0
  51. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_team.scss +24 -0
  52. data/after_templates/application/printspeak/app/assets/stylesheets/home/sections/_timeline.scss +214 -0
  53. data/after_templates/application/printspeak/app/assets/stylesheets/home/styles.scss +24 -0
  54. data/after_templates/application/printspeak/app/assets/stylesheets/home/variables/_colors.scss +15 -0
  55. data/after_templates/application/printspeak/app/assets/stylesheets/home/variables/_typography.scss +54 -0
  56. data/after_templates/application/printspeak/app/controllers/home_controller.rb +7 -0
  57. data/after_templates/application/printspeak/app/views/home/_modal.erb +23 -0
  58. data/after_templates/application/printspeak/app/views/home/index.html.erb +321 -0
  59. data/after_templates/application/printspeak/app/views/layouts/_alerts.html.erb +2 -0
  60. data/after_templates/application/printspeak/app/views/layouts/_footer.html.erb +16 -0
  61. data/after_templates/application/printspeak/app/views/layouts/_navbar.html.erb +14 -0
  62. data/after_templates/application/printspeak/app/views/layouts/application.html.erb +29 -0
  63. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/_footer.html.erb +0 -0
  64. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/architecture.html.erb +0 -0
  65. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/blog.html.erb +0 -0
  66. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/faq.html.erb +0 -0
  67. data/after_templates/application/printspeak/app/views/page/page_controller.rb +27 -0
  68. data/after_templates/{rag_printspeak → application/printspeak/app/views}/page/readme.html.erb +0 -0
  69. data/after_templates/application/printspeak/db/seeds.rb +16 -0
  70. data/after_templates/printspeak_bak/_.rb +36 -0
  71. data/after_templates/{rag_printspeak → printspeak_bak}/application_controller.rb +0 -0
  72. data/after_templates/{rag_printspeak → printspeak_bak}/faq.html.erb +0 -0
  73. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/_footer.html.erb +0 -0
  74. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/_head.html.erb +0 -0
  75. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/_navbar.html.erb +0 -0
  76. data/after_templates/{rag_printspeak → printspeak_bak}/layouts/application.html.erb +0 -0
  77. data/after_templates/printspeak_bak/page/_footer.html.erb +184 -0
  78. data/after_templates/printspeak_bak/page/architecture.html.erb +33 -0
  79. data/after_templates/printspeak_bak/page/blog.html.erb +44 -0
  80. data/after_templates/printspeak_bak/page/faq.html.erb +2 -0
  81. data/after_templates/{rag_printspeak → printspeak_bak}/page/home.html.erb +0 -0
  82. data/after_templates/{rag_printspeak → printspeak_bak}/page/page_controller.rb +0 -0
  83. data/after_templates/printspeak_bak/page/readme.html.erb +49 -0
  84. data/after_templates/{rag_bootstrap.rb → rag/bootstrap/_.rb} +1 -1
  85. data/after_templates/{rag_bootstrap → rag/bootstrap}/application-yield.html.erb +0 -0
  86. data/after_templates/{rag_bootstrap → rag/bootstrap}/application.html.erb +0 -0
  87. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-fancy.css +0 -0
  88. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-fancy.html +0 -0
  89. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-staff.css +0 -0
  90. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-staff.html +0 -0
  91. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-cards-styled.html +0 -0
  92. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-footer.html +0 -0
  93. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-hero.html +0 -0
  94. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-modal.html +0 -0
  95. data/after_templates/{rag_bootstrap → rag/bootstrap}/component-nav.html +0 -0
  96. data/after_templates/{rag_bootstrap → rag/bootstrap}/custom-bootstrap-import.scss +0 -0
  97. data/after_templates/{rag_bootstrap → rag/bootstrap}/custom-using-css.css +0 -0
  98. data/after_templates/{rag_bootstrap → rag/bootstrap}/custom-using-scss.scss +0 -0
  99. data/after_templates/{rag_bootstrap → rag/bootstrap}/manifest.js +0 -0
  100. data/after_templates/{rag_devise.rb → rag/devise/_.rb} +1 -1
  101. data/after_templates/{rag_devise → rag/devise}/application.html.erb +0 -0
  102. data/after_templates/{rag_devise → rag/devise}/application_controller.rb +0 -0
  103. data/after_templates/{rag_devise → rag/devise}/config/initializers/devise_turbo.rb +0 -0
  104. data/after_templates/{rag_devise → rag/devise}/layouts/_alerts.html.erb +0 -0
  105. data/after_templates/{rag_devise → rag/devise}/layouts/_footer.html.erb +0 -0
  106. data/after_templates/{rag_devise → rag/devise}/layouts/_navbar.html.erb +0 -0
  107. data/after_templates/{rag_devise → rag/devise}/layouts/application.html.erb +0 -0
  108. data/after_templates/{rag_devise → rag/devise}/post/_post.html.erb +0 -0
  109. data/after_templates/{rag_devise → rag/devise}/post/post.rb +0 -0
  110. data/after_templates/{rag_devise → rag/devise}/post/posts_controller.rb +0 -0
  111. data/after_templates/{rag_devise → rag/devise}/seed_data.rb +0 -0
  112. data/after_templates/{rag_devise → rag/devise}/turbo_controller.rb +0 -0
  113. data/after_templates/{rag_devise → rag/devise}/user.rb +0 -0
  114. data/after_templates/{rag_import_map.rb → rag/import_map/_.rb} +1 -1
  115. data/after_templates/{rag_import_map → rag/import_map}/component-sortable.html +0 -0
  116. data/after_templates/{rag_import_map → rag/import_map}/home.css +0 -0
  117. data/after_templates/{rag_import_map → rag/import_map}/position_controller.js +0 -0
  118. data/after_templates/{rag_simple.rb → rag/simple/_.rb} +1 -1
  119. data/after_templates/{rag_tailwind.rb → rag/tailwind/_.rb} +1 -1
  120. data/after_templates/{rag_tailwind → rag/tailwind}/component-cta.html +0 -0
  121. data/after_templates/{rag_tailwind → rag/tailwind}/component-faq.html +0 -0
  122. data/after_templates/{rag_tailwind → rag/tailwind}/component-footer.html +0 -0
  123. data/after_templates/{rag_tailwind → rag/tailwind}/component-hero.html +0 -0
  124. data/after_templates/{rag_tailwind → rag/tailwind}/component-nav.html +0 -0
  125. data/after_templates/{rag_tailwind/component-section-end.html → rag/tailwind/component-section-begin.html} +0 -0
  126. data/after_templates/{rag_tailwind_emulating_bootstrap/home/index.html.erb → rag/tailwind/component-section-end.html} +0 -0
  127. data/after_templates/{rag_tailwind_daisyui.rb → rag/tailwind_daisyui/_.rb} +1 -1
  128. data/after_templates/{rag_tailwind_daisyui → rag/tailwind_daisyui}/index.html.erb +0 -0
  129. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/Procfile.dev +0 -0
  130. data/after_templates/{rag_tailwind_emulating_bootstrap.rb → rag/tailwind_emulating_bootstrap/_.rb} +1 -1
  131. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/application.html.erb +0 -0
  132. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/application.tailwind.css +0 -0
  133. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/application_controller.rb +0 -0
  134. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/_example.html.erb +0 -0
  135. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/bootstrap.html.erb +0 -0
  136. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/home_controller.rb +0 -0
  137. data/after_templates/rag/tailwind_emulating_bootstrap/home/index.html.erb +0 -0
  138. data/after_templates/{rag_tailwind_emulating_bootstrap → rag/tailwind_emulating_bootstrap}/home/tailwind.html.erb +0 -0
  139. data/after_templates/{rag_tailwind_hotwire.rb → rag/tailwind_hotwire/_.rb} +1 -1
  140. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/controller.rb +0 -0
  141. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/helper.rb +0 -0
  142. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/increment.html.erb +0 -0
  143. data/after_templates/{rag_tailwind_hotwire → rag/tailwind_hotwire}/home/index.html +0 -0
  144. data/after_templates/{rag_tailwind_hotwire_flash.rb → rag/tailwind_hotwire_flash/_.rb} +1 -1
  145. data/after_templates/{rag_tailwind_hotwire_form.rb → rag/tailwind_hotwire_form/_.rb} +1 -1
  146. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_contact.html.erb +0 -0
  147. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_count.html.erb +0 -0
  148. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_flash.html.erb +0 -0
  149. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_form.html.erb +0 -0
  150. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/_list.html.erb +0 -0
  151. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application.html.erb +0 -0
  152. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application.js +0 -0
  153. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application.tailwind.css +0 -0
  154. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/application_helper.rb +0 -0
  155. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/contact.rb +0 -0
  156. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/contacts_controller.rb +0 -0
  157. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/create.turbo_stream.erb +0 -0
  158. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/edit.html.erb +0 -0
  159. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/index.html.erb +0 -0
  160. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/new.html.erb +0 -0
  161. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/show.html.erb +0 -0
  162. data/after_templates/{rag_tailwind_hotwire_form → rag/tailwind_hotwire_form}/update.turbo_stream.erb +0 -0
  163. data/after_templates/{rag_tailwind_hotwire_form_search.rb → rag/tailwind_hotwire_form_search/_.rb} +1 -3
  164. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_contact.html.erb +0 -0
  165. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_count.html.erb +0 -0
  166. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_flash.html.erb +0 -0
  167. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_form.html.erb +0 -0
  168. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_list.html.erb +0 -0
  169. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/_theme_changer.html.erb +0 -0
  170. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application.html.erb +0 -0
  171. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application.js +0 -0
  172. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application.tailwind.css +0 -0
  173. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/application_helper.rb +0 -0
  174. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/contact.rb +0 -0
  175. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/contacts_controller.rb +0 -0
  176. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/create.turbo_stream.erb +0 -0
  177. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/edit.html.erb +0 -0
  178. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/index.html.erb +0 -0
  179. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/new.html.erb +0 -0
  180. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/search_controller.js +0 -0
  181. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/show.html.erb +0 -0
  182. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/theme_changer_controller.js +0 -0
  183. data/after_templates/{rag_tailwind_hotwire_form_search → rag/tailwind_hotwire_form_search}/update.turbo_stream.erb +0 -0
  184. data/docs/last_run/app_generator_class.json +40 -0
  185. data/docs/last_run/app_generator_data.json +8 -2
  186. data/docs/last_run/rails_options_class.json +40 -0
  187. data/docs/last_run/rails_options_data.json +8 -2
  188. data/docs/project-plan/project.drawio +49 -46
  189. data/docs/project-plan/project_todo.svg +1 -1
  190. data/lib/rails_app_generator/addons/annotate.rb +0 -3
  191. data/lib/rails_app_generator/addons/continuous_integration.rb +1 -0
  192. data/lib/rails_app_generator/addons/devise.rb +1 -0
  193. data/lib/rails_app_generator/addons/docker_compose.rb +1 -0
  194. data/lib/rails_app_generator/addons/dotenv.rb +2 -0
  195. data/lib/rails_app_generator/addons/factory_bot.rb +1 -0
  196. data/lib/rails_app_generator/addons/foreman.rb +1 -0
  197. data/lib/rails_app_generator/addons/rubocop.rb +4 -0
  198. data/lib/rails_app_generator/app_generator.rb +0 -5
  199. data/lib/rails_app_generator/rag_initializer.rb +77 -75
  200. data/lib/rails_app_generator/version.rb +1 -1
  201. data/package-lock.json +2 -2
  202. data/package.json +1 -1
  203. data/profiles/addons/dotenv.json +12 -0
  204. data/profiles/addons/rubocop.json +12 -0
  205. data/profiles/{rag-printspeak.json → application/printspeak.json} +4 -2
  206. data/profiles/{rag-bootstrap.json → rag/bootstrap.json} +1 -1
  207. data/profiles/{rag-devise.json → rag/devise.json} +1 -1
  208. data/profiles/{rag-import-map.json → rag/import-map.json} +1 -1
  209. data/profiles/{rag-simple.json → rag/simple.json} +3 -2
  210. data/profiles/{rag-tailwind-daisyui.json → rag/tailwind-daisyui.json} +1 -1
  211. data/profiles/{rag-tailwind-emulating-bootstrap.json → rag/tailwind-emulating-bootstrap.json} +2 -3
  212. data/profiles/{rag-tailwind-hotwire-flash.json → rag/tailwind-hotwire-flash.json} +1 -1
  213. data/profiles/{rag-tailwind-hotwire-form-search.json → rag/tailwind-hotwire-form-search.json} +1 -1
  214. data/profiles/{rag-tailwind-hotwire-form.json → rag/tailwind-hotwire-form.json} +1 -1
  215. data/profiles/{rag-tailwind-hotwire.json → rag/tailwind-hotwire.json} +1 -1
  216. data/profiles/{rag-tailwind.json → rag/tailwind.json} +3 -2
  217. data/tasks/profile.thor +1 -1
  218. data/templates/addons/rubocop/.rubocop.yml.erb +5 -2
  219. data/templates/thor_task/addon/addon.tt +1 -1
  220. data/templates/thor_task/profile/after_template.rb +1 -0
  221. metadata +196 -130
  222. data/after_templates/rag_printspeak.rb +0 -36
  223. data/profiles/rag-add-some-pages.json +0 -11
  224. data/profiles/rag-sample.json +0 -13
@@ -0,0 +1,54 @@
1
+ //
2
+ // Typography
3
+ //
4
+
5
+ // Override the default Bootstrap base font family
6
+ //
7
+ // Roboto Slab is being used below and is brought in
8
+ // via Google fonts in the head of src/pug/index.pug.
9
+ // The fonts listed afterwards are fallbacks.
10
+
11
+ $font-family-base: "Roboto Slab",
12
+ -apple-system,
13
+ BlinkMacSystemFont,
14
+ "Segoe UI",
15
+ Roboto,
16
+ "Helvetica Neue",
17
+ Arial,
18
+ sans-serif,
19
+ "Apple Color Emoji",
20
+ "Segoe UI Emoji",
21
+ "Segoe UI Symbol",
22
+ "Noto Color Emoji";
23
+
24
+ // Override the default Bootstrap headings font family
25
+ //
26
+ // Montserrat is being used below and is brought in
27
+ // via Google fonts in the head of src/pug/index.pug.
28
+ // The fonts listed afterwards are fallbacks.
29
+
30
+ $headings-font-family: "Montserrat",
31
+ -apple-system,
32
+ BlinkMacSystemFont,
33
+ "Segoe UI",
34
+ Roboto,
35
+ "Helvetica Neue",
36
+ Arial,
37
+ sans-serif,
38
+ "Apple Color Emoji",
39
+ "Segoe UI Emoji",
40
+ "Segoe UI Symbol",
41
+ "Noto Color Emoji";
42
+
43
+ // Create a subheadings font family
44
+
45
+ $subheadings-font-family: $font-family-base;
46
+
47
+ // Override Bootstrap default headings variables
48
+
49
+ $headings-font-weight: 700;
50
+ $headings-letter-spacing: 0.0625em;
51
+
52
+ // Override default Bootstrap line height variables
53
+
54
+ $line-height-lg: 1.75;
@@ -0,0 +1,7 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def some_action
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ <div class="portfolio-modal modal fade" id="portfolioModal1" tabindex="-1" role="dialog" aria-hidden="true">
2
+ <div class="modal-dialog">
3
+ <div class="modal-content">
4
+ <div class="close-modal" data-bs-dismiss="modal"><img src="assets/img/close-icon.svg" alt="Close modal" /></div>
5
+ <div class="container">
6
+ <div class="row justify-content-center">
7
+ <div class="col-lg-8">
8
+ <div class="modal-body">
9
+ <!-- Project details-->
10
+ <h2 class="text-uppercase">Project Name</h2>
11
+ <p class="item-intro text-muted">Lorem ipsum dolor sit amet consectetur.</p><img class="img-fluid d-block mx-auto" src="assets/img/portfolio/1.jpg" alt="..." />
12
+ <p>Use this area to describe your project. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est blanditiis dolorem culpa incidunt minus dignissimos deserunt repellat aperiam quasi sunt officia expedita beatae cupiditate, maiores repudiandae, nostrum, reiciendis facere nemo!</p>
13
+ <ul class="list-inline">
14
+ <li><strong>Client:</strong>Threads</li>
15
+ <li><strong>Category:</strong>Illustration</li>
16
+ </ul><button class="btn btn-primary btn-xl text-uppercase" data-bs-dismiss="modal" type="button"><i class="fas fa-xmark me-1"></i>Close Project</button>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </div>
@@ -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