rails_site_engine 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +137 -0
  4. data/Rakefile +6 -0
  5. data/app/assets/stylesheets/rails_site_engine/application.css +15 -0
  6. data/app/assets/stylesheets/rails_site_engine/engine.css +2 -0
  7. data/app/assets/stylesheets/rails_site_engine/engine.tailwind.css +5 -0
  8. data/app/controllers/rails_site_engine/application_controller.rb +27 -0
  9. data/app/controllers/rails_site_engine/contacts_controller.rb +35 -0
  10. data/app/controllers/rails_site_engine/meta_controller.rb +20 -0
  11. data/app/controllers/rails_site_engine/pages_controller.rb +18 -0
  12. data/app/helpers/rails_site_engine/application_helper.rb +266 -0
  13. data/app/javascript/controllers/rails_site_engine/color_mode_controller.js +83 -0
  14. data/app/javascript/controllers/rails_site_engine/form_submit_controller.js +22 -0
  15. data/app/javascript/controllers/rails_site_engine/mobile_nav_controller.js +45 -0
  16. data/app/javascript/rails_site_engine/application.js +8 -0
  17. data/app/jobs/rails_site_engine/application_job.rb +4 -0
  18. data/app/mailers/rails_site_engine/application_mailer.rb +6 -0
  19. data/app/mailers/rails_site_engine/contact_mailer.rb +25 -0
  20. data/app/models/rails_site_engine/application_record.rb +5 -0
  21. data/app/models/rails_site_engine/contact_message.rb +16 -0
  22. data/app/views/layouts/mailer.html.erb +13 -0
  23. data/app/views/layouts/mailer.text.erb +1 -0
  24. data/app/views/layouts/rails_site_engine/application.html.erb +54 -0
  25. data/app/views/rails_site_engine/contact_mailer/notify.text.erb +9 -0
  26. data/app/views/rails_site_engine/contacts/new.html.erb +1 -0
  27. data/app/views/rails_site_engine/pages/show.html.erb +15 -0
  28. data/app/views/rails_site_engine/sections/_contact_form.html.erb +112 -0
  29. data/app/views/rails_site_engine/sections/_cta_band.html.erb +27 -0
  30. data/app/views/rails_site_engine/sections/_faq.html.erb +29 -0
  31. data/app/views/rails_site_engine/sections/_feature_cards.html.erb +30 -0
  32. data/app/views/rails_site_engine/sections/_hero.html.erb +39 -0
  33. data/app/views/rails_site_engine/sections/_pricing_cards.html.erb +53 -0
  34. data/app/views/rails_site_engine/sections/_process_steps.html.erb +35 -0
  35. data/app/views/rails_site_engine/sections/_project_cards.html.erb +48 -0
  36. data/app/views/rails_site_engine/sections/_proof_strip.html.erb +16 -0
  37. data/app/views/rails_site_engine/sections/_rich_text.html.erb +15 -0
  38. data/app/views/rails_site_engine/sections/_stats.html.erb +34 -0
  39. data/app/views/rails_site_engine/sections/_testimonials.html.erb +40 -0
  40. data/app/views/rails_site_engine/sections/_unknown.html.erb +6 -0
  41. data/app/views/rails_site_engine/shared/_flash.html.erb +18 -0
  42. data/app/views/rails_site_engine/shared/_footer.html.erb +41 -0
  43. data/app/views/rails_site_engine/shared/_navbar.html.erb +118 -0
  44. data/config/importmap.rb +5 -0
  45. data/config/locales/en.yml +27 -0
  46. data/config/routes.rb +9 -0
  47. data/config/site_profiles.yml +23 -0
  48. data/lib/generators/rails_site_engine/install/install_generator.rb +454 -0
  49. data/lib/generators/rails_site_engine/install/templates/config/theme.yml +3 -0
  50. data/lib/generators/rails_site_engine/install/templates/content/pages/about.md +12 -0
  51. data/lib/generators/rails_site_engine/install/templates/content/pages/contact.md +13 -0
  52. data/lib/generators/rails_site_engine/install/templates/content/pages/home.md +39 -0
  53. data/lib/generators/rails_site_engine/install/templates/content/pages/privacy.md +43 -0
  54. data/lib/generators/rails_site_engine/install/templates/content/pages/services.md +25 -0
  55. data/lib/generators/rails_site_engine/install/templates/content/site.yml +36 -0
  56. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-carpentry/config/theme.yml +3 -0
  57. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-carpentry/content/pages/about.md +14 -0
  58. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-carpentry/content/pages/contact.md +12 -0
  59. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-carpentry/content/pages/home.md +55 -0
  60. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-carpentry/content/pages/privacy.md +43 -0
  61. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-carpentry/content/pages/services.md +29 -0
  62. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-carpentry/content/site.yml +36 -0
  63. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-electrician/config/theme.yml +3 -0
  64. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-electrician/content/pages/about.md +14 -0
  65. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-electrician/content/pages/contact.md +12 -0
  66. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-electrician/content/pages/home.md +55 -0
  67. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-electrician/content/pages/privacy.md +43 -0
  68. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-electrician/content/pages/services.md +29 -0
  69. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-electrician/content/site.yml +36 -0
  70. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-general/config/theme.yml +3 -0
  71. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-general/content/pages/about.md +14 -0
  72. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-general/content/pages/contact.md +12 -0
  73. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-general/content/pages/home.md +55 -0
  74. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-general/content/pages/privacy.md +43 -0
  75. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-general/content/pages/services.md +29 -0
  76. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-general/content/site.yml +36 -0
  77. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-plumbing/config/theme.yml +3 -0
  78. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-plumbing/content/pages/about.md +14 -0
  79. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-plumbing/content/pages/contact.md +12 -0
  80. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-plumbing/content/pages/home.md +55 -0
  81. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-plumbing/content/pages/privacy.md +43 -0
  82. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-plumbing/content/pages/services.md +29 -0
  83. data/lib/generators/rails_site_engine/install/templates/site_profiles/home-services-plumbing/content/site.yml +36 -0
  84. data/lib/generators/rails_site_engine/install/templates/site_profiles/portfolio/config/theme.yml +3 -0
  85. data/lib/generators/rails_site_engine/install/templates/site_profiles/portfolio/content/pages/about.md +26 -0
  86. data/lib/generators/rails_site_engine/install/templates/site_profiles/portfolio/content/pages/contact.md +12 -0
  87. data/lib/generators/rails_site_engine/install/templates/site_profiles/portfolio/content/pages/home.md +43 -0
  88. data/lib/generators/rails_site_engine/install/templates/site_profiles/portfolio/content/pages/privacy.md +43 -0
  89. data/lib/generators/rails_site_engine/install/templates/site_profiles/portfolio/content/pages/work.md +27 -0
  90. data/lib/generators/rails_site_engine/install/templates/site_profiles/portfolio/content/site.yml +36 -0
  91. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/config/theme.yml +3 -0
  92. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/content/pages/about.md +14 -0
  93. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/content/pages/contact.md +12 -0
  94. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/content/pages/home.md +48 -0
  95. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/content/pages/pricing.md +57 -0
  96. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/content/pages/privacy.md +43 -0
  97. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/content/pages/projects.md +27 -0
  98. data/lib/generators/rails_site_engine/install/templates/site_profiles/software-contracting/content/site.yml +38 -0
  99. data/lib/rails_site_engine/content/store.rb +297 -0
  100. data/lib/rails_site_engine/engine.rb +15 -0
  101. data/lib/rails_site_engine/markdown_renderer.rb +37 -0
  102. data/lib/rails_site_engine/profile_defaults.rb +83 -0
  103. data/lib/rails_site_engine/site_engine_config.rb +78 -0
  104. data/lib/rails_site_engine/site_profiles.rb +166 -0
  105. data/lib/rails_site_engine/sitemap_xml.rb +26 -0
  106. data/lib/rails_site_engine/theme.rb +54 -0
  107. data/lib/rails_site_engine/version.rb +3 -0
  108. data/lib/rails_site_engine.rb +13 -0
  109. data/lib/tasks/rails_site_engine_tasks.rake +7 -0
  110. metadata +179 -0
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: "Home"
3
+ description: "A short home page description for SEO."
4
+ path: "/"
5
+ template: "landing"
6
+ show_title: false
7
+ lead: "A modern brochure site tuned for trust and conversion."
8
+ sections:
9
+ - type: hero
10
+ kicker: "Local service experts"
11
+ heading: "A clear headline for your business"
12
+ subheading: "Describe your offer, your speed, and why customers can trust you."
13
+ primary_cta:
14
+ label: "Get a quote"
15
+ page: "contact"
16
+ secondary_cta:
17
+ label: "View services"
18
+ page: "services"
19
+ - type: proof_strip
20
+ items:
21
+ - "Licensed & insured"
22
+ - "5-star rated"
23
+ - "Fast response"
24
+ - type: feature_cards
25
+ heading: "Why choose us"
26
+ items:
27
+ - title: "Reliable timing"
28
+ description: "We arrive when we say we will."
29
+ - title: "Clear pricing"
30
+ description: "No surprises. You know the cost first."
31
+ - title: "Quality work"
32
+ description: "Done right with attention to detail."
33
+ - type: cta_band
34
+ heading: "Need help today?"
35
+ body: "Tell us what you need and we will reply quickly."
36
+ cta:
37
+ label: "Contact us"
38
+ page: "contact"
39
+ ---
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: "Privacy Policy"
3
+ description: "How we collect, use, and protect your information."
4
+ path: "/privacy"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "This page explains what information we collect, how we use it, and your choices."
8
+ sections:
9
+ - type: rich_text
10
+ ---
11
+
12
+ ## Information We Collect
13
+ When you use our contact form, we may collect your name, email address, phone number, and the details in your message.
14
+
15
+ Our form also includes a hidden `website` field used as an anti-spam honeypot. Legitimate visitors should leave this field empty.
16
+
17
+ ## How We Use Information
18
+ We use inquiry details to:
19
+
20
+ - respond to your questions and requests
21
+ - follow up about potential work
22
+ - keep basic records of conversations and project requests
23
+ - improve service and communication
24
+
25
+ ## Sharing and Disclosure
26
+ We do not sell or rent your personal information.
27
+
28
+ We may share information with trusted service providers only when needed to operate this site or process communications (for example, email delivery). We may also disclose information if required by law.
29
+
30
+ ## Retention
31
+ We keep inquiry information only as long as needed for legitimate business purposes, legal compliance, and recordkeeping. When information is no longer needed, we delete it or anonymize it.
32
+
33
+ ## Security
34
+ We use reasonable technical and organizational safeguards to protect personal information. No internet transmission or storage method is 100% secure, but we work to reduce risk.
35
+
36
+ ## Your Choices
37
+ You can request access, correction, or deletion of personal information you have submitted to us.
38
+
39
+ ## Changes to This Policy
40
+ We may update this Privacy Policy from time to time. Updates are effective when posted on this page.
41
+
42
+ ## Contact
43
+ For privacy questions or requests, use the contact details listed on the [Contact page](/contact).
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: "Services"
3
+ description: "What you offer."
4
+ path: "/services"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "Highlight your most important services and outcomes."
8
+ sections:
9
+ - type: feature_cards
10
+ heading: "Core services"
11
+ items:
12
+ - title: "Service A"
13
+ description: "Short one-line service description."
14
+ - title: "Service B"
15
+ description: "Short one-line service description."
16
+ - title: "Service C"
17
+ description: "Short one-line service description."
18
+ - type: faq
19
+ heading: "Common questions"
20
+ items:
21
+ - question: "How quickly can you start?"
22
+ answer: "Most projects can start within a few business days."
23
+ - question: "Do you provide estimates?"
24
+ answer: "Yes. Contact us for a clear estimate before work begins."
25
+ ---
@@ -0,0 +1,36 @@
1
+ site:
2
+ locale: "en"
3
+ name: "Your Business"
4
+ base_url: "https://example.com"
5
+
6
+ navigation:
7
+ primary:
8
+ - label: "Home"
9
+ page: "home"
10
+ - label: "Services"
11
+ page: "services"
12
+ - label: "About"
13
+ page: "about"
14
+ - label: "Contact"
15
+ page: "contact"
16
+ footer:
17
+ - label: "Privacy"
18
+ page: "privacy"
19
+
20
+ branding:
21
+ logo_text: "Your Brand"
22
+ primary_cta:
23
+ label: "Get a quote"
24
+ page: "contact"
25
+
26
+ contact:
27
+ page: "contact"
28
+ recipient_email: ""
29
+ phone: ""
30
+ email: ""
31
+
32
+ seo:
33
+ default_title: "Your Business"
34
+ default_description: "Describe your business in one sentence."
35
+ default_og_image: "/images/og-default.jpg"
36
+ twitter_handle: ""
@@ -0,0 +1,3 @@
1
+ daisyui:
2
+ theme: "corporate"
3
+ dark_theme: "business"
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "About"
3
+ description: "About <%= business_name %>."
4
+ path: "/about"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "A carpentry-focused team that values craftsmanship and communication."
8
+ sections:
9
+ - type: rich_text
10
+ ---
11
+
12
+ <%= business_name %> delivers practical carpentry solutions with a high bar for fit and finish.
13
+
14
+ Our approach combines transparent planning, dependable execution, and clean final results.
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: "Contact"
3
+ description: "Request carpentry service from <%= business_name %>."
4
+ path: "/contact"
5
+ template: "contact"
6
+ show_title: true
7
+ lead: "Share your carpentry project details and we will respond with timing and pricing guidance."
8
+ sections:
9
+ - type: contact_form
10
+ heading: "Request a carpentry quote"
11
+ body: "Include dimensions, photos (if available), and your preferred timeline."
12
+ ---
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: "Home"
3
+ description: "<%= business_name %> provides quality carpentry and finish work."
4
+ path: "/"
5
+ template: "landing"
6
+ show_title: false
7
+ lead: "Precision carpentry for repairs, upgrades, and custom projects."
8
+ sections:
9
+ - type: hero
10
+ kicker: "Skilled carpentry"
11
+ heading: "Crafted carpentry with clean execution"
12
+ subheading: "From trim and doors to built-ins and repairs, we deliver detail-focused work that lasts."
13
+ primary_cta:
14
+ label: "Get a quote"
15
+ page: "contact"
16
+ secondary_cta:
17
+ label: "View services"
18
+ page: "services"
19
+ - type: proof_strip
20
+ items:
21
+ - "Licensed & insured"
22
+ - "Detail-focused finish work"
23
+ - "Reliable scheduling"
24
+ - type: feature_cards
25
+ heading: "Carpentry services"
26
+ items:
27
+ - title: "Trim and molding"
28
+ description: "Install and repair baseboards, casing, crown, and custom trim."
29
+ - title: "Door and frame work"
30
+ description: "Adjust, replace, and align doors for smooth operation."
31
+ - title: "Custom built-ins"
32
+ description: "Shelving, storage, and woodwork tailored to your space."
33
+ - type: process_steps
34
+ heading: "How we work"
35
+ items:
36
+ - title: "Scope the project"
37
+ description: "Review goals, measurements, and finish preferences."
38
+ - title: "Approve quote"
39
+ description: "Receive clear pricing, material assumptions, and timeline."
40
+ - title: "Build and install"
41
+ description: "Execute cleanly with attention to fit, finish, and cleanup."
42
+ - type: testimonials
43
+ heading: "Client feedback"
44
+ items:
45
+ - quote: "Excellent craftsmanship and great communication throughout."
46
+ author: "Avery K."
47
+ - quote: "The built-ins look incredible and fit perfectly."
48
+ author: "Casey R."
49
+ - type: cta_band
50
+ heading: "Planning a carpentry project?"
51
+ body: "Tell us what you need and we will recommend the best next step."
52
+ cta:
53
+ label: "Contact us"
54
+ page: "contact"
55
+ ---
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: "Privacy Policy"
3
+ description: "How <%= business_name %> collects, uses, and protects your information."
4
+ path: "/privacy"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "This page explains what information we collect, how we use it, and your choices."
8
+ sections:
9
+ - type: rich_text
10
+ ---
11
+
12
+ ## Information We Collect
13
+ When you use our contact form, we may collect your name, email address, phone number, and the details in your message.
14
+
15
+ Our form also includes a hidden `website` field used as an anti-spam honeypot. Legitimate visitors should leave this field empty.
16
+
17
+ ## How We Use Information
18
+ We use inquiry details to:
19
+
20
+ - respond to your questions and requests
21
+ - follow up about potential work
22
+ - keep basic records of conversations and project requests
23
+ - improve service and communication
24
+
25
+ ## Sharing and Disclosure
26
+ We do not sell or rent your personal information.
27
+
28
+ We may share information with trusted service providers only when needed to operate this site or process communications (for example, email delivery). We may also disclose information if required by law.
29
+
30
+ ## Retention
31
+ We keep inquiry information only as long as needed for legitimate business purposes, legal compliance, and recordkeeping. When information is no longer needed, we delete it or anonymize it.
32
+
33
+ ## Security
34
+ We use reasonable technical and organizational safeguards to protect personal information. No internet transmission or storage method is 100% secure, but we work to reduce risk.
35
+
36
+ ## Your Choices
37
+ You can request access, correction, or deletion of personal information you have submitted to us.
38
+
39
+ ## Changes to This Policy
40
+ We may update this Privacy Policy from time to time. Updates are effective when posted on this page.
41
+
42
+ ## Contact
43
+ For privacy questions or requests, use the contact details listed on the [Contact page](/contact).
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: "Services"
3
+ description: "Carpentry services from <%= business_name %>."
4
+ path: "/services"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "Functional improvements with polished, long-lasting finishes."
8
+ sections:
9
+ - type: feature_cards
10
+ heading: "Service lineup"
11
+ items:
12
+ - title: "Interior trim"
13
+ description: "Install or refresh trim details for a clean finished look."
14
+ - title: "Framing repairs"
15
+ description: "Correct framing issues and strengthen structural sections."
16
+ - title: "Cabinet and built-in updates"
17
+ description: "Custom storage solutions designed for everyday use."
18
+ - title: "Exterior wood repairs"
19
+ description: "Repair weathered wood elements and protect against further damage."
20
+ - type: faq
21
+ heading: "Common carpentry questions"
22
+ items:
23
+ - question: "Can you match existing trim profiles?"
24
+ answer: "Yes. We do our best to match existing profiles and finishes for seamless results."
25
+ - question: "Do you handle both repairs and custom work?"
26
+ answer: "Yes. We support one-off repairs as well as larger custom carpentry projects."
27
+ - question: "How do material choices affect price?"
28
+ answer: "Material selection has a major impact; we outline options and tradeoffs in your quote."
29
+ ---
@@ -0,0 +1,36 @@
1
+ site:
2
+ locale: "en"
3
+ name: "<%= business_name %>"
4
+ base_url: "https://example.com"
5
+
6
+ navigation:
7
+ primary:
8
+ - label: "Home"
9
+ page: "home"
10
+ - label: "Services"
11
+ page: "services"
12
+ - label: "About"
13
+ page: "about"
14
+ - label: "Contact"
15
+ page: "contact"
16
+ footer:
17
+ - label: "Privacy"
18
+ page: "privacy"
19
+
20
+ branding:
21
+ logo_text: "<%= business_name %>"
22
+ primary_cta:
23
+ label: "Get a quote"
24
+ page: "contact"
25
+
26
+ contact:
27
+ page: "contact"
28
+ recipient_email: "leads@example.com"
29
+ phone: "(555) 123-4567"
30
+ email: "hello@example.com"
31
+
32
+ seo:
33
+ default_title: "<%= business_name %>"
34
+ default_description: "Skilled carpentry services for repairs, trim, and custom woodwork."
35
+ default_og_image: "/images/og-default.jpg"
36
+ twitter_handle: ""
@@ -0,0 +1,3 @@
1
+ daisyui:
2
+ theme: "corporate"
3
+ dark_theme: "business"
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "About"
3
+ description: "About <%= business_name %>."
4
+ path: "/about"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "An electrical team committed to safety, clarity, and dependable execution."
8
+ sections:
9
+ - type: rich_text
10
+ ---
11
+
12
+ <%= business_name %> focuses on practical electrical solutions that improve safety and usability.
13
+
14
+ We prioritize code-compliant work, clear recommendations, and a smooth customer experience.
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: "Contact"
3
+ description: "Request electrical service from <%= business_name %>."
4
+ path: "/contact"
5
+ template: "contact"
6
+ show_title: true
7
+ lead: "Tell us what you need help with and we will follow up with availability."
8
+ sections:
9
+ - type: contact_form
10
+ heading: "Request electrical service"
11
+ body: "Share your issue, location, and timeline so we can scope the work."
12
+ ---
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: "Home"
3
+ description: "<%= business_name %> provides licensed residential electrical services."
4
+ path: "/"
5
+ template: "landing"
6
+ show_title: false
7
+ lead: "Safe, code-compliant electrical work for repairs, upgrades, and installations."
8
+ sections:
9
+ - type: hero
10
+ kicker: "Licensed electricians"
11
+ heading: "Electrical work you can trust"
12
+ subheading: "From panel upgrades to lighting installs, we deliver safe, code-compliant solutions with clear communication."
13
+ primary_cta:
14
+ label: "Get a quote"
15
+ page: "contact"
16
+ secondary_cta:
17
+ label: "View services"
18
+ page: "services"
19
+ - type: proof_strip
20
+ items:
21
+ - "Licensed & insured"
22
+ - "Code-compliant work"
23
+ - "Fast scheduling"
24
+ - type: feature_cards
25
+ heading: "Electrical services"
26
+ items:
27
+ - title: "Troubleshooting & repair"
28
+ description: "Diagnose outages, tripping breakers, and wiring issues."
29
+ - title: "Panel and circuit upgrades"
30
+ description: "Expand capacity and improve safety for modern loads."
31
+ - title: "Lighting and fixture installs"
32
+ description: "Install indoor and outdoor fixtures with clean finishes."
33
+ - type: process_steps
34
+ heading: "Project process"
35
+ items:
36
+ - title: "Initial assessment"
37
+ description: "Review your issue, system setup, and goals."
38
+ - title: "Scope and quote"
39
+ description: "Receive a clear plan with pricing and timeline."
40
+ - title: "Safe completion"
41
+ description: "Work is completed cleanly and tested before handoff."
42
+ - type: testimonials
43
+ heading: "What homeowners say"
44
+ items:
45
+ - quote: "Prompt, safe, and clearly explained each step."
46
+ author: "Devin L."
47
+ - quote: "Great work on our panel upgrade and new outlets."
48
+ author: "Sam B."
49
+ - type: cta_band
50
+ heading: "Need electrical service?"
51
+ body: "Share your project details and we will respond with next steps."
52
+ cta:
53
+ label: "Contact us"
54
+ page: "contact"
55
+ ---
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: "Privacy Policy"
3
+ description: "How <%= business_name %> collects, uses, and protects your information."
4
+ path: "/privacy"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "This page explains what information we collect, how we use it, and your choices."
8
+ sections:
9
+ - type: rich_text
10
+ ---
11
+
12
+ ## Information We Collect
13
+ When you use our contact form, we may collect your name, email address, phone number, and the details in your message.
14
+
15
+ Our form also includes a hidden `website` field used as an anti-spam honeypot. Legitimate visitors should leave this field empty.
16
+
17
+ ## How We Use Information
18
+ We use inquiry details to:
19
+
20
+ - respond to your questions and requests
21
+ - follow up about potential work
22
+ - keep basic records of conversations and project requests
23
+ - improve service and communication
24
+
25
+ ## Sharing and Disclosure
26
+ We do not sell or rent your personal information.
27
+
28
+ We may share information with trusted service providers only when needed to operate this site or process communications (for example, email delivery). We may also disclose information if required by law.
29
+
30
+ ## Retention
31
+ We keep inquiry information only as long as needed for legitimate business purposes, legal compliance, and recordkeeping. When information is no longer needed, we delete it or anonymize it.
32
+
33
+ ## Security
34
+ We use reasonable technical and organizational safeguards to protect personal information. No internet transmission or storage method is 100% secure, but we work to reduce risk.
35
+
36
+ ## Your Choices
37
+ You can request access, correction, or deletion of personal information you have submitted to us.
38
+
39
+ ## Changes to This Policy
40
+ We may update this Privacy Policy from time to time. Updates are effective when posted on this page.
41
+
42
+ ## Contact
43
+ For privacy questions or requests, use the contact details listed on the [Contact page](/contact).
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: "Services"
3
+ description: "Electrical services from <%= business_name %>."
4
+ path: "/services"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "Electrical upgrades and repairs focused on safety and long-term reliability."
8
+ sections:
9
+ - type: feature_cards
10
+ heading: "Service lineup"
11
+ items:
12
+ - title: "Breaker and panel service"
13
+ description: "Replace aging panels and add circuits for new loads."
14
+ - title: "Outlet and switch upgrades"
15
+ description: "Install and replace outlets, switches, and smart controls."
16
+ - title: "Lighting design and install"
17
+ description: "Plan and install efficient lighting for interior and exterior spaces."
18
+ - title: "Home safety checks"
19
+ description: "Identify hazards and prioritize corrective recommendations."
20
+ - type: faq
21
+ heading: "Common electrical questions"
22
+ items:
23
+ - question: "Do you handle permit-required work?"
24
+ answer: "Yes. We can identify when permits are required and handle code-compliant execution."
25
+ - question: "Can you add circuits for new appliances?"
26
+ answer: "Yes. We evaluate load capacity and add dedicated circuits as needed."
27
+ - question: "How quickly can service be scheduled?"
28
+ answer: "Most projects are scheduled within a few business days, depending on scope."
29
+ ---
@@ -0,0 +1,36 @@
1
+ site:
2
+ locale: "en"
3
+ name: "<%= business_name %>"
4
+ base_url: "https://example.com"
5
+
6
+ navigation:
7
+ primary:
8
+ - label: "Home"
9
+ page: "home"
10
+ - label: "Services"
11
+ page: "services"
12
+ - label: "About"
13
+ page: "about"
14
+ - label: "Contact"
15
+ page: "contact"
16
+ footer:
17
+ - label: "Privacy"
18
+ page: "privacy"
19
+
20
+ branding:
21
+ logo_text: "<%= business_name %>"
22
+ primary_cta:
23
+ label: "Get a quote"
24
+ page: "contact"
25
+
26
+ contact:
27
+ page: "contact"
28
+ recipient_email: "leads@example.com"
29
+ phone: "(555) 123-4567"
30
+ email: "hello@example.com"
31
+
32
+ seo:
33
+ default_title: "<%= business_name %>"
34
+ default_description: "Licensed electrical services for safer, more reliable homes."
35
+ default_og_image: "/images/og-default.jpg"
36
+ twitter_handle: ""
@@ -0,0 +1,3 @@
1
+ daisyui:
2
+ theme: "corporate"
3
+ dark_theme: "business"
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "About"
3
+ description: "About <%= business_name %>."
4
+ path: "/about"
5
+ template: "standard"
6
+ show_title: true
7
+ lead: "A local team focused on communication, clean work, and consistent results."
8
+ sections:
9
+ - type: rich_text
10
+ ---
11
+
12
+ <%= business_name %> is built around straightforward service: clear communication, dependable scheduling, and workmanship we stand behind.
13
+
14
+ We treat each project like a long-term relationship, not a one-time transaction.
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: "Contact"
3
+ description: "Request service from <%= business_name %>."
4
+ path: "/contact"
5
+ template: "contact"
6
+ show_title: true
7
+ lead: "Tell us what you need and we will follow up with availability and a quote."
8
+ sections:
9
+ - type: contact_form
10
+ heading: "Request service"
11
+ body: "Share your project details, location, and preferred timing."
12
+ ---
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: "Home"
3
+ description: "<%= business_name %> provides reliable home services with fast response."
4
+ path: "/"
5
+ template: "landing"
6
+ show_title: false
7
+ lead: "Trusted home service professionals for repairs, installs, and maintenance."
8
+ sections:
9
+ - type: hero
10
+ kicker: "Local home services"
11
+ heading: "Dependable help for your home"
12
+ subheading: "From urgent fixes to scheduled upgrades, we deliver clear communication and quality workmanship."
13
+ primary_cta:
14
+ label: "Get a quote"
15
+ page: "contact"
16
+ secondary_cta:
17
+ label: "View services"
18
+ page: "services"
19
+ - type: proof_strip
20
+ items:
21
+ - "Licensed & insured"
22
+ - "5-star rated"
23
+ - "Same-day response"
24
+ - type: feature_cards
25
+ heading: "How we help"
26
+ items:
27
+ - title: "Repairs"
28
+ description: "Fast diagnosis and lasting repairs for common home issues."
29
+ - title: "Installations"
30
+ description: "Professional installs done to code and manufacturer specs."
31
+ - title: "Preventive maintenance"
32
+ description: "Scheduled upkeep to avoid expensive surprises."
33
+ - type: process_steps
34
+ heading: "Simple process"
35
+ items:
36
+ - title: "Tell us what you need"
37
+ description: "Share your issue and preferred timeline."
38
+ - title: "Get a clear quote"
39
+ description: "We provide scope, timeline, and transparent pricing."
40
+ - title: "Get it done"
41
+ description: "We complete the work and confirm everything is right."
42
+ - type: testimonials
43
+ heading: "What homeowners say"
44
+ items:
45
+ - quote: "Professional from first call to final walkthrough."
46
+ author: "Taylor P."
47
+ - quote: "Great communication and fair pricing."
48
+ author: "Jordan M."
49
+ - type: cta_band
50
+ heading: "Need help this week?"
51
+ body: "Send a quick message and we will follow up with next steps."
52
+ cta:
53
+ label: "Contact us"
54
+ page: "contact"
55
+ ---