saaskit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +7 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +22 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +81 -0
  9. data/Rakefile +10 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/lib/generators/saaskit/install/install_generator.rb +207 -0
  13. data/lib/generators/saaskit/install/templates/README +30 -0
  14. data/lib/generators/saaskit/install/templates/app/adapters/mailchimp/base_adapter.rb +51 -0
  15. data/lib/generators/saaskit/install/templates/app/controllers/application_controller.rb +3 -0
  16. data/lib/generators/saaskit/install/templates/app/controllers/pages_controller.rb +30 -0
  17. data/lib/generators/saaskit/install/templates/app/forms/newsletter_form.rb +17 -0
  18. data/lib/generators/saaskit/install/templates/app/helpers/application_helper.rb +10 -0
  19. data/lib/generators/saaskit/install/templates/app/helpers/meta_tags_helper.rb +21 -0
  20. data/lib/generators/saaskit/install/templates/app/javascript/controllers/aos_controller.js +12 -0
  21. data/lib/generators/saaskit/install/templates/app/javascript/controllers/index.js +6 -0
  22. data/lib/generators/saaskit/install/templates/app/javascript/controllers/notice_controller.js +14 -0
  23. data/lib/generators/saaskit/install/templates/app/javascript/controllers/noty_controller.js +10 -0
  24. data/lib/generators/saaskit/install/templates/app/javascript/controllers/reveal_controller.js +43 -0
  25. data/lib/generators/saaskit/install/templates/app/javascript/controllers/smooth_scroll_controller.js +11 -0
  26. data/lib/generators/saaskit/install/templates/app/javascript/controllers/typed_controller.js +17 -0
  27. data/lib/generators/saaskit/install/templates/app/javascript/images/address-book-2.svg +8 -0
  28. data/lib/generators/saaskit/install/templates/app/javascript/images/chart-bar-1.svg +10 -0
  29. data/lib/generators/saaskit/install/templates/app/javascript/images/cloud-upload.svg +8 -0
  30. data/lib/generators/saaskit/install/templates/app/javascript/images/credit-card.svg +9 -0
  31. data/lib/generators/saaskit/install/templates/app/javascript/images/display-1.svg +8 -0
  32. data/lib/generators/saaskit/install/templates/app/javascript/images/facebook.svg +1 -0
  33. data/lib/generators/saaskit/install/templates/app/javascript/images/file.svg +9 -0
  34. data/lib/generators/saaskit/install/templates/app/javascript/images/github.svg +1 -0
  35. data/lib/generators/saaskit/install/templates/app/javascript/images/group.svg +8 -0
  36. data/lib/generators/saaskit/install/templates/app/javascript/images/layout-left-panel-1.svg +8 -0
  37. data/lib/generators/saaskit/install/templates/app/javascript/images/layout-top-panel-6.svg +8 -0
  38. data/lib/generators/saaskit/install/templates/app/javascript/images/logo_color_horizontal.svg +1 -0
  39. data/lib/generators/saaskit/install/templates/app/javascript/images/logo_color_stacked.svg +1 -0
  40. data/lib/generators/saaskit/install/templates/app/javascript/images/logo_color_symbol.svg +1 -0
  41. data/lib/generators/saaskit/install/templates/app/javascript/images/logo_white_horizontal.svg +1 -0
  42. data/lib/generators/saaskit/install/templates/app/javascript/images/logo_white_stacked.svg +1 -0
  43. data/lib/generators/saaskit/install/templates/app/javascript/images/logo_white_symbol.svg +1 -0
  44. data/lib/generators/saaskit/install/templates/app/javascript/images/mail-opened.svg +8 -0
  45. data/lib/generators/saaskit/install/templates/app/javascript/images/notifications-1.svg +7 -0
  46. data/lib/generators/saaskit/install/templates/app/javascript/images/outlet.svg +8 -0
  47. data/lib/generators/saaskit/install/templates/app/javascript/images/pablo-done.png +0 -0
  48. data/lib/generators/saaskit/install/templates/app/javascript/images/paypal.svg +9 -0
  49. data/lib/generators/saaskit/install/templates/app/javascript/images/rails.svg +7 -0
  50. data/lib/generators/saaskit/install/templates/app/javascript/images/repeat.svg +8 -0
  51. data/lib/generators/saaskit/install/templates/app/javascript/images/right-circle.svg +8 -0
  52. data/lib/generators/saaskit/install/templates/app/javascript/images/sale-2.svg +10 -0
  53. data/lib/generators/saaskit/install/templates/app/javascript/images/selected-file.svg +8 -0
  54. data/lib/generators/saaskit/install/templates/app/javascript/images/sending-mail.svg +8 -0
  55. data/lib/generators/saaskit/install/templates/app/javascript/images/shield-check.svg +8 -0
  56. data/lib/generators/saaskit/install/templates/app/javascript/images/shield-protected.svg +8 -0
  57. data/lib/generators/saaskit/install/templates/app/javascript/images/stimulus.svg +1 -0
  58. data/lib/generators/saaskit/install/templates/app/javascript/images/stripe.svg +6 -0
  59. data/lib/generators/saaskit/install/templates/app/javascript/images/tailwind.svg +12 -0
  60. data/lib/generators/saaskit/install/templates/app/javascript/images/tgav_logo_white_symbol.svg +1 -0
  61. data/lib/generators/saaskit/install/templates/app/javascript/images/user.svg +8 -0
  62. data/lib/generators/saaskit/install/templates/app/javascript/images/webpack.svg +8 -0
  63. data/lib/generators/saaskit/install/templates/app/javascript/stylesheets/application.scss +3 -0
  64. data/lib/generators/saaskit/install/templates/app/javascript/stylesheets/tailwind.config.js +542 -0
  65. data/lib/generators/saaskit/install/templates/app/models/concerns/coming_soon_pending_subscribable.rb +31 -0
  66. data/lib/generators/saaskit/install/templates/app/views/layouts/application.html.erb +7 -0
  67. data/lib/generators/saaskit/install/templates/app/views/layouts/land.html.erb +24 -0
  68. data/lib/generators/saaskit/install/templates/app/views/pages/_errors.html.erb +14 -0
  69. data/lib/generators/saaskit/install/templates/app/views/pages/home.html.erb +472 -0
  70. data/lib/generators/saaskit/install/templates/app/views/pages/subscribe.js.erb +24 -0
  71. data/lib/generators/saaskit/install/templates/app/views/shared/_footer.html.erb +23 -0
  72. data/lib/generators/saaskit/install/templates/app/views/shared/_head.html.erb +9 -0
  73. data/lib/generators/saaskit/install/templates/app/views/shared/_navbar.html.erb +76 -0
  74. data/lib/generators/saaskit/install/templates/app/views/shared/_notices.html.erb +8 -0
  75. data/lib/generators/saaskit/install/templates/config/credentials.yml.sample +8 -0
  76. data/lib/generators/saaskit/install/templates/config/initializers/meta_tags.rb +40 -0
  77. data/lib/generators/saaskit/install/templates/config/webpack/plugins/purgecss-webpack-plugin.js +21 -0
  78. data/lib/saaskit.rb +6 -0
  79. data/lib/saaskit/version.rb +3 -0
  80. data/saaskit.gemspec +33 -0
  81. data/template.rb +6 -0
  82. metadata +169 -0
@@ -0,0 +1,31 @@
1
+ module ComingSoonPendingSubscribable
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ attr_writer :suppressed
6
+ validate :pending_subscribe, if: :allow_pending_subscribe?
7
+ end
8
+
9
+ private
10
+
11
+ NEWSLETTER = "mailchimp"
12
+
13
+ def allow_pending_subscribe?
14
+ !suppressed?
15
+ end
16
+
17
+ def suppressed?
18
+ @suppressed ||= false
19
+ end
20
+
21
+ def pending_subscribe
22
+ response = newsletter_provider_class.new.pending_subscribe(email: email)
23
+ unless response.success?
24
+ errors[:base] << response.error
25
+ end
26
+ end
27
+
28
+ def newsletter_provider_class
29
+ "#{NEWSLETTER.capitalize}::BaseAdapter".constantize
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <%= render "shared/head" %>
5
+ </head>
6
+ <%= content_for?(:content) ? yield(:content) : yield %>
7
+ </html>
@@ -0,0 +1,24 @@
1
+ <% content_for :head do %>
2
+ <% end %>
3
+ <% content_for :content do %>
4
+ <body class="antialiased bg-white font-sans">
5
+ <div class="flex flex-col min-h-screen">
6
+ <div id="notice">
7
+ <%= render "shared/notices" %>
8
+ </div>
9
+
10
+ <header class="py-4 lg:py-10">
11
+ <div class="container mx-auto px-4">
12
+ <%= render "shared/navbar" %>
13
+ </div>
14
+ </header>
15
+
16
+ <%= yield %>
17
+ <%= render "shared/footer" %>
18
+ </div>
19
+ <div data-controller="smooth-scroll"></div>
20
+ <div data-controller="aos"></div>
21
+ <div data-controller="noty"></div>
22
+ </body>
23
+ <% end %>
24
+ <%= render template: "layouts/application" %>
@@ -0,0 +1,14 @@
1
+ <% if newsletter_form.errors.any? %>
2
+ <div class="mb-6" role="alert">
3
+ <div class="text-base lg:text-lg xl:text-xl font-bold text-white bg-red-600 rounded-t px-4 py-2">
4
+ <%= "#{newsletter_form.errors.count} errors prohibited this #{newsletter_form.class.model_name.human.downcase} from being saved:" %>
5
+ </div>
6
+ <div class="text-base lg:text-lg xl:text-xl text-red-600 bg-red-100 border border-t-0 border-red-600 rounded-b px-4 py-3">
7
+ <ul>
8
+ <% newsletter_form.errors.full_messages.each do |message| %>
9
+ <li><%= message %></li>
10
+ <% end %>
11
+ </ul>
12
+ </div>
13
+ </div>
14
+ <% end %>
@@ -0,0 +1,472 @@
1
+ <main>
2
+ <section class="py-4 lg:py-16">
3
+ <div class="container px-4 mx-auto">
4
+ <div class="relative">
5
+ <h2 data-aos="fade-right" class="text-3xl md:text-4xl lg:text-5xl xl:text-6xl font-black tracking-tight leading-none mb-4 md:mb-5 lg:mb-6 xl:mb-8 md:w-3/5">
6
+ Building any SaaS business with ease
7
+ </h2>
8
+ <p data-aos="fade-down" data-aos-delay="100" class="text-base md:text-lg lg:text-xl xl:text-2xl mb-5 md:mb-6 lg:mb-8 xl:mb-12 md:w-2/5">
9
+ DRY (Don't repeat yourself) for developing the same features over and over again. Let building any SaaS platform in a week instead of months with SaaSKit.
10
+ </p>
11
+ <div class="flex flex-col sm:flex-row mb-4 sm:mb-0">
12
+ <%= link_to "Pro version", "#notify-me", data: { aos: "fade-up", "aos-delay": "200" }, class: "text-lg font-bold text-center text-white whitespace-no-wrap bg-brand-dark hover:bg-brand-darker rounded flex-1 sm:flex-initial px-6 py-3 mr-0 sm:mr-2 mb-2 sm:mb-0 transition-all transition-250 transition-ease" %>
13
+ <%= link_to "https://github.com/tgavhq/saaskit", data: { aos: "fade-up", "aos-delay": "250" }, class: "text-lg font-bold text-center text-brand-dark whitespace-no-wrap bg-brand-lighter hover:bg-brand rounded flex-1 sm:flex-initial px-6 py-3 mb-2 sm:mb-0 transition-all transition-250 transition-ease" do %>
14
+ <%= image_tag asset_pack_path("media/images/github.svg"), class: "inline-block align-text-bottom mr-2 w-6 h-auto" %>
15
+ View on Github
16
+ <% end %>
17
+ </div>
18
+ <div data-aos="fade-left" data-aos-delay="150" class="md:absolute md:top-0 md:right-0 md:w-4/5 lg:w-3/4 xl:w-2/3 h-auto" style="z-index: -1;">
19
+ <%= image_tag asset_pack_path("media/images/pablo-done.png") %>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </section>
24
+ <section id="features" class="py-4 lg:py-16">
25
+ <div class="container px-4 mx-auto">
26
+ <div class="mb-6 md:mb-8 lg:mb-10 xl:mb-12">
27
+ <h3 data-aos="zoom-in" class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-black lg:text-center tracking-tight leading-none mb-2 md:mb-3 lg:mb-4 xl:mb-5">✨ Over <span class="text-brand-dark">28</span> features</h3>
28
+ <p data-aos="fade-down" data-aos-delay="100" class="text-base lg:text-lg xl:text-xl lg:text-center lg:mr-auto lg:ml-auto lg:w-2/3">It saves you a lot of time for not re-implement the same boilerplate code.</p>
29
+ </div>
30
+ <div data-controller="reveal" data-reveal-open="false" class="relative">
31
+ <div class="flex flex-wrap overflow-hidden h-120 after:empty after:absolute after:bottom-0 after:left-0 after:w-full after:h-120 after:bg-gradient-b-semi-transparent-white transition-height transition-250 transition-ease" data-target="reveal.content">
32
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
33
+ <div class="mr-4 w-24">
34
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
35
+ <%= image_tag asset_pack_path("media/images/rails.svg"), class: "w-auto h-8" %>
36
+ </div>
37
+ </div>
38
+ <div>
39
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Ruby on Rails 6</h4>
40
+ <p class="text-base lg:text-lg xl:text-xl">SaaSkit is based on latest rails 6 rc1. That means you can now leverage new shine rails features like actiontext, actionmailbox.</p>
41
+ </div>
42
+ </div>
43
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
44
+ <div class="mr-4 w-24">
45
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
46
+ <%= image_tag asset_pack_path("media/images/webpack.svg"), class: "w-auto h-8" %>
47
+ </div>
48
+ </div>
49
+ <div>
50
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Webpack</h4>
51
+ <p class="text-base lg:text-lg xl:text-xl">All the JS libraries are already integrated well with webpack, so feel free to import any modern JS libraries as other new kid does.</p>
52
+ </div>
53
+ </div>
54
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
55
+ <div class="mr-4 w-24">
56
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
57
+ <%= image_tag asset_pack_path("media/images/stimulus.svg"), class: "w-auto h-8" %>
58
+ </div>
59
+ </div>
60
+ <div>
61
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Stimulus</h4>
62
+ <p class="text-base lg:text-lg xl:text-xl">Don't waste time to implement SPA while you have a choice to apply the sprinkle JS effect with our pre-made stimulus controllers.</p>
63
+ </div>
64
+ </div>
65
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
66
+ <div class="mr-4 w-24">
67
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
68
+ <%= image_tag asset_pack_path("media/images/tailwind.svg"), class: "w-auto h-8" %>
69
+ </div>
70
+ </div>
71
+ <div>
72
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Tailwind</h4>
73
+ <p class="text-base lg:text-lg xl:text-xl">We handcrafted all ui components based on tailwindcss and result is it bring us a highly customizable design without fighting to override other css.</p>
74
+ </div>
75
+ </div>
76
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
77
+ <div class="mr-4 w-24">
78
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
79
+ <%= image_tag asset_pack_path("media/images/layout-top-panel-6.svg"), class: "w-auto h-8" %>
80
+ </div>
81
+ </div>
82
+ <div>
83
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Landing Pages</h4>
84
+ <p class="text-base lg:text-lg xl:text-xl">SaaSKit not restricted to provide boilerplate backend code only. We even offer eye-catching landing pages for you to put your SaaS in day one.</p>
85
+ </div>
86
+ </div>
87
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
88
+ <div class="mr-4 w-24">
89
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
90
+ <%= image_tag asset_pack_path("media/images/shield-protected.svg"), class: "w-auto h-8" %>
91
+ </div>
92
+ </div>
93
+ <div>
94
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Authentication <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
95
+ <p class="text-base lg:text-lg xl:text-xl">Well integrated with Devise to provide email authentication, email confirmation, forget password and account unlock features.</p>
96
+ </div>
97
+ </div>
98
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
99
+ <div class="mr-4 w-24">
100
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
101
+ <%= image_tag asset_pack_path("media/images/facebook.svg"), class: "w-auto h-8" %>
102
+ </div>
103
+ </div>
104
+ <div>
105
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Social Login <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
106
+ <p class="text-base lg:text-lg xl:text-xl">By utilizing omniauth authentication, Facebook login is supported out of the box. It's easy to extend it to support more providers as you wish.</p>
107
+ </div>
108
+ </div>
109
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
110
+ <div class="mr-4 w-24">
111
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
112
+ <%= image_tag asset_pack_path("media/images/user.svg"), class: "w-auto h-8" %>
113
+ </div>
114
+ </div>
115
+ <div>
116
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">User Impersonation <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
117
+ <p class="text-base lg:text-lg xl:text-xl">It's a handy feature to support your customers without asking their login credential every time to log in their account for supporting.</p>
118
+ </div>
119
+ </div>
120
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
121
+ <div class="mr-4 w-24">
122
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
123
+ <%= image_tag asset_pack_path("media/images/layout-left-panel-1.svg"), class: "w-auto h-8" %>
124
+ </div>
125
+ </div>
126
+ <div>
127
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Dashboards <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
128
+ <p class="text-base lg:text-lg xl:text-xl">User and admin dashboards are off-the-shelf provided which saves you a lot of time for not design and coding your dashboard from the stretch.</p>
129
+ </div>
130
+ </div>
131
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
132
+ <div class="mr-4 w-24">
133
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
134
+ <%= image_tag asset_pack_path("media/images/right-circle.svg"), class: "w-auto h-8" %>
135
+ </div>
136
+ </div>
137
+ <div>
138
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">User Onboarding <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
139
+ <p class="text-base lg:text-lg xl:text-xl">For helping your client to know more about your platform, we integrate user onboarding workflow, a helpful feature that every saas business must have.</p>
140
+ </div>
141
+ </div>
142
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
143
+ <div class="mr-4 w-24">
144
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
145
+ <%= image_tag asset_pack_path("media/images/group.svg"), class: "w-auto h-8" %>
146
+ </div>
147
+ </div>
148
+ <div>
149
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Teams <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
150
+ <p class="text-base lg:text-lg xl:text-xl">Like Github, teams is the core concept in the SaaS platform. It allows you to add your team members and share resources within the same scope.</p>
151
+ </div>
152
+ </div>
153
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
154
+ <div class="mr-4 w-24">
155
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
156
+ <%= image_tag asset_pack_path("media/images/shield-check.svg"), class: "w-auto h-8" %>
157
+ </div>
158
+ </div>
159
+ <div>
160
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Role-Based Permission <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
161
+ <p class="text-base lg:text-lg xl:text-xl">Well, integrate rolify and pundit gems, so that you can easily restrict the resource access per each role-based permission rules.</p>
162
+ </div>
163
+ </div>
164
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
165
+ <div class="mr-4 w-24">
166
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
167
+ <%= image_tag asset_pack_path("media/images/repeat.svg"), class: "w-auto h-8" %>
168
+ </div>
169
+ </div>
170
+ <div>
171
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Subscription <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
172
+ <p class="text-base lg:text-lg xl:text-xl">As it's the core feature for every SaaS business, our platform is designed to support each team to have one or more subscriptions.</p>
173
+ </div>
174
+ </div>
175
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
176
+ <div class="mr-4 w-24">
177
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
178
+ <%= image_tag asset_pack_path("media/images/credit-card.svg"), class: "w-auto h-8" %>
179
+ </div>
180
+ </div>
181
+ <div>
182
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Payments <span class="text-xs text-white align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
183
+ <p class="text-base lg:text-lg xl:text-xl">SaaS businesses are not limited to subscription billing. Sometimes we want to charge a one-time fee only. No worry, we got this cover as well.</p>
184
+ </div>
185
+ </div>
186
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
187
+ <div class="mr-4 w-24">
188
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
189
+ <%= image_tag asset_pack_path("media/images/sale-2.svg"), class: "w-auto h-8" %>
190
+ </div>
191
+ </div>
192
+ <div>
193
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Coupons <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
194
+ <p class="text-base lg:text-lg xl:text-xl">There is no doubt everyone like discounts and coupons, so we already integrate it into our subscription billing and one-time payments workflow.</p>
195
+ </div>
196
+ </div>
197
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
198
+ <div class="mr-4 w-24">
199
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
200
+ <%= image_tag asset_pack_path("media/images/file.svg"), class: "w-auto h-8" %>
201
+ </div>
202
+ </div>
203
+ <div>
204
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Invoices <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
205
+ <p class="text-base lg:text-lg xl:text-xl">Your customer can download their PDF invoices right inside the platform, besides it even send the monthly or one time invoices to your client e-mails automatically.</p>
206
+ </div>
207
+ </div>
208
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
209
+ <div class="mr-4 w-24">
210
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
211
+ <%= image_tag asset_pack_path("media/images/stripe.svg"), class: "w-auto h-8" %>
212
+ </div>
213
+ </div>
214
+ <div>
215
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Stripe <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
216
+ <p class="text-base lg:text-lg xl:text-xl">It's the core payment gateway that we use for the subscription billing and one-time payments features. Now integrate the payment gateway is like a piece of cake.</p>
217
+ </div>
218
+ </div>
219
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
220
+ <div class="mr-4 w-24">
221
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
222
+ <%= image_tag asset_pack_path("media/images/paypal.svg"), class: "w-auto h-8" %>
223
+ </div>
224
+ </div>
225
+ <div>
226
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Braintree/Paypal <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
227
+ <p class="text-base lg:text-lg xl:text-xl">As stripe does not support all countries in the world, that why we also integrate Braintree as it supports PayPal out of the box.</p>
228
+ </div>
229
+ </div>
230
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
231
+ <div class="mr-4 w-24">
232
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
233
+ <%= image_tag asset_pack_path("media/images/outlet.svg"), class: "w-auto h-8" %>
234
+ </div>
235
+ </div>
236
+ <div>
237
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">API Support <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
238
+ <p class="text-base lg:text-lg xl:text-xl">Want to connect SaaSKit with your javascript or mobile clients. No problem, we already covered this and included all API interfaces for you.</p>
239
+ </div>
240
+ </div>
241
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
242
+ <div class="mr-4 w-24">
243
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
244
+ <%= image_tag asset_pack_path("media/images/notifications-1.svg"), class: "w-auto h-8" %>
245
+ </div>
246
+ </div>
247
+ <div>
248
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Announcements <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
249
+ <p class="text-base lg:text-lg xl:text-xl">Create announcements and notify your customers about any new features or updates. Keep them updated, and they will appreciate this.</p>
250
+ </div>
251
+ </div>
252
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
253
+ <div class="mr-4 w-24">
254
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
255
+ <%= image_tag asset_pack_path("media/images/address-book-2.svg"), class: "w-auto h-8" %>
256
+ </div>
257
+ </div>
258
+ <div>
259
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Mailing List Subscription</h4>
260
+ <p class="text-base lg:text-lg xl:text-xl">Easy to add a mailing list subscription to any page you want. Now supporting MailChimp, and more providers will be added soon.</p>
261
+ </div>
262
+ </div>
263
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
264
+ <div class="mr-4 w-24">
265
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
266
+ <%= image_tag asset_pack_path("media/images/mail-opened.svg"), class: "w-auto h-8" %>
267
+ </div>
268
+ </div>
269
+ <div>
270
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Email Templates <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
271
+ <p class="text-base lg:text-lg xl:text-xl">We pre-designed email templates for use as transactional emails. So it will save you hours or days without design from the stretch.</p>
272
+ </div>
273
+ </div>
274
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
275
+ <div class="mr-4 w-24">
276
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
277
+ <%= image_tag asset_pack_path("media/images/sending-mail.svg"), class: "w-auto h-8" %>
278
+ </div>
279
+ </div>
280
+ <div>
281
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Mailer <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
282
+ <p class="text-base lg:text-lg xl:text-xl">You can now set up the mail providers by using our pre-configured mail settings. Right now, we are supporting Mailgun, Postmark, Sendgrid and mandrill.</p>
283
+ </div>
284
+ </div>
285
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
286
+ <div class="mr-4 w-24">
287
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
288
+ <%= image_tag asset_pack_path("media/images/chart-bar-1.svg"), class: "w-auto h-8" %>
289
+ </div>
290
+ </div>
291
+ <div>
292
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Analytics <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
293
+ <p class="text-base lg:text-lg xl:text-xl">We already pre-configured several analytics providers, including Google analytics, simple analytics, and segment. Just pick one, and you can start tracking right away.</p>
294
+ </div>
295
+ </div>
296
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
297
+ <div class="mr-4 w-24">
298
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
299
+ <%= image_tag asset_pack_path("media/images/selected-file.svg"), class: "w-auto h-8" %>
300
+ </div>
301
+ </div>
302
+ <div>
303
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Error Logging <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
304
+ <p class="text-base lg:text-lg xl:text-xl">Stop hoping your users will report errors. Use one of the pre-configured error logging services to monitor and fix crashes in real time.</p>
305
+ </div>
306
+ </div>
307
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
308
+ <div class="mr-4 w-24">
309
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
310
+ <%= image_tag asset_pack_path("media/images/layout-top-panel-6.svg"), class: "w-auto h-8" %>
311
+ </div>
312
+ </div>
313
+ <div>
314
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Custom Error Pages <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
315
+ <p class="text-base lg:text-lg xl:text-xl">We re-designed the custom error pages for you. Besides, you can even further customize those error pages to match your branding.</p>
316
+ </div>
317
+ </div>
318
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
319
+ <div class="mr-4 w-24">
320
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
321
+ <%= image_tag asset_pack_path("media/images/display-1.svg"), class: "w-auto h-8" %>
322
+ </div>
323
+ </div>
324
+ <div>
325
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Test Coverage <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
326
+ <p class="text-base lg:text-lg xl:text-xl">We write tests to keep the SaaSKit codebase healthy. Besides this, we even provide Minitest or RSpec for you to choose. Just pick the one you like and get started.</p>
327
+ </div>
328
+ </div>
329
+ <div class="flex mb-3 md:mb-4 lg:mb-5 xl:mb-6 w-full lg:w-1/2">
330
+ <div class="mr-4 w-24">
331
+ <div class="flex items-center justify-center bg-brand-lighter rounded-full p-2 w-20 h-20">
332
+ <%= image_tag asset_pack_path("media/images/cloud-upload.svg"), class: "w-auto h-8" %>
333
+ </div>
334
+ </div>
335
+ <div>
336
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">Deployment <span class="text-xs text-white align-middle lg:align-top bg-brand-dark rounded-full px-2 py-1">Pro</span></h4>
337
+ <p class="text-base lg:text-lg xl:text-xl">Deploying SaaSKit to the cloud is just a piece of cake. We will guide you through to deploy your saaskit to AWS, Google Cloud, or even digital ocean if you want a predictable fee.</p>
338
+ </div>
339
+ </div>
340
+ </div>
341
+ <div class="text-center">
342
+ <%= link_to "Show more 👇", "javascript:void(0)", class: "text-base lg:text-lg xl:text-xl font-bold hover:text-brand-dark transition-all transition-250 transition-ease", data: { action: "reveal#show" } %>
343
+ </div>
344
+ </div>
345
+ </div>
346
+ </section>
347
+ <section id="test-drive" class="pt-4 lg:pt-16">
348
+ <div class="container px-4 mx-auto">
349
+ <div class="mb-6 md:mb-8 lg:mb-10 xl:mb-12">
350
+ <h3 data-aos="zoom-in" class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-black lg:text-center tracking-tight leading-none mb-2 md:mb-3 lg:mb-4 xl:mb-5">🚗 Want a test drive?</h3>
351
+ <p data-aos="fade-down" data-aos-delay="100" class="text-base lg:text-lg xl:text-xl lg:text-center lg:mr-auto lg:ml-auto lg:w-2/3">It's just one command to get started!</p>
352
+ </div>
353
+ <div data-aos="zoom-in-up" data-aos-delay="150" class="bg-gray-900 rounded-lg px-12 py-8 mr-auto ml-auto w-full lg:w-3/5 h-auto shadow-xl">
354
+ <div data-controller="typed">
355
+ <span class="text-brand-lighter">$</span>
356
+ <div id="typed-strings">
357
+ <p>rails new appname --database=postgresql -m https://link.saaskitapp.com/rqp ^6000</p>
358
+ </div>
359
+ <span class="text-white text-base lg:text-lg xl:text-xl" id="typed"></span>
360
+ </div>
361
+ </div>
362
+ </div>
363
+ </section>
364
+ <section class="text-gray-200">
365
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 64"><path fill="currentColor" d="M749.72,63C409.32,68.45,117.88,44.82,0,6.75V64H1440V0h-2.73C1297,33.39,1041.69,58.3,749.72,63Z"/></svg>
366
+ </section>
367
+ <section id="pricing" class="bg-gray-200 py-4 lg:py-16">
368
+ <div class="container px-4 mx-auto">
369
+ <div class="mb-6 md:mb-8 lg:mb-10 xl:mb-12">
370
+ <h3 data-aos="zoom-in" class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl lg:text-center font-black tracking-tight leading-none mb-2 md:mb-3 lg:mb-4 xl:mb-5">💵 A lifetime of SaaSKit with a year of updates</h3>
371
+ <p data-aos="fade-down" data-aos-delay="100" class="text-base lg:text-lg xl:text-xl lg:text-center lg:mr-auto lg:ml-auto lg:w-2/3">Pick a single license for one site or unlimited licenses if you want to use it with multiple sites.</p>
372
+ </div>
373
+ <div class="flex flex-col lg:flex-row -mx-4">
374
+ <div data-aos="fade-up" data-aos-delay="150" class="flex flex-col justify-between border-gray-400 border-solid border rounded-lg mx-4 mb-4 lg:mb-0 lg:w-1/3 hover:bg-white hover:shadow-xl transition-all transition-250 transition-ease">
375
+ <div class="py-8 lg:py-16 px-5">
376
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">🏠 OSS</h4>
377
+ <p class="text-base lg:text-lg xl:text-xl mb-2 md:mb-4 lg:mb-6 xl:mb-8">Perfect for creating a startup landing page with MailChimp mailing list subscription.</p>
378
+ <div class="font-black">Alway</div>
379
+ <div class="mb-2 md:mb-4 lg:mb-6 xl:mb-8">
380
+ <span class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-black tracking-tight leading-none text-green-500">Free</span>
381
+ </div>
382
+ <ul class="mb-2 md:mb-4 lg:mb-6 xl:mb-8">
383
+ <li class="text-base lg:text-lg mb-1 md:mb-2">✅ Ruby on Rails 6</li>
384
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Stimulus and Tailwind integration</li>
385
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Eye-catching Landing Pages</li>
386
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Mailing List Subscription</li>
387
+ </ul>
388
+ </div>
389
+ <div class="p-5">
390
+ <%= link_to "Get Started", root_path, class: "inline-block text-lg font-bold text-center text-white whitespace-no-wrap bg-brand-dark hover:bg-brand-darker rounded px-6 py-3 w-full transition-all transition-250 transition-ease" %>
391
+ </div>
392
+ </div>
393
+ <div data-aos="fade-up" data-aos-delay="200" class="flex flex-col justify-between border-gray-400 border-solid border rounded-lg mx-4 mb-4 lg:mb-0 lg:w-1/3 hover:bg-white hover:shadow-xl transition-all transition-250 transition-ease">
394
+ <div class="py-8 lg:py-16 px-5">
395
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">🏬 Pro</h4>
396
+ <p class="text-base lg:text-lg xl:text-xl mb-2 md:mb-4 lg:mb-6 xl:mb-8">Perfect for rails developers or makers who want to start SaaS platforms with a short period.</p>
397
+ <div class="font-black">Early bird price</div>
398
+ <div class="mb-2 md:mb-4 lg:mb-6 xl:mb-8">
399
+ <span class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-black tracking-tight leading-none line-through text-gray-400">
400
+ $199
401
+ </span>
402
+ &nbsp;
403
+ <span class="text-xl md:text-2xl font-black align-top">$</span>
404
+ <span class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-black tracking-tight leading-none text-green-500">
405
+ 99
406
+ </span>
407
+ </div>
408
+ <ul>
409
+ <li class="text-base lg:text-lg mb-1 md:mb-2">✅ All features listed in OSS</li>
410
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Authentication</li>
411
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Teams</li>
412
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Role-Based Permission</li>
413
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Subscription</li>
414
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Payments</li>
415
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Coupons</li>
416
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2"><%= link_to "More Features", "#features", class: "hover:text-brand-dark transition-all transition-250 transition-ease" %> ️️☝️</li>
417
+ </ul>
418
+ </div>
419
+ <div class="p-5">
420
+ <%= link_to "Notify Me", "#notify-me", class: "inline-block text-lg font-bold text-center text-white whitespace-no-wrap bg-brand-dark hover:bg-brand-darker rounded px-6 py-3 w-full transition-all transition-250 transition-ease" %>
421
+ </div>
422
+ </div>
423
+ <div data-aos="fade-up" data-aos-delay="250" class="flex flex-col justify-between border-gray-400 border-solid border rounded-lg mx-4 mb-4 lg:mb-0 lg:w-1/3 hover:bg-white hover:shadow-xl transition-all transition-250 transition-ease">
424
+ <div class="py-8 lg:py-16 px-5">
425
+ <h4 class="text-xl md:text-2xl lg:text-3xl xl:text-4xl font-black tracking-tight leading-none mb-1 md:mb-2 lg:mb-3 xl:mb-4">🏢 Unlimited Pro</h4>
426
+ <p class="text-base lg:text-lg xl:text-xl mb-2 md:mb-4 lg:mb-6 xl:mb-8">Perfect for agencies or entrepreneurs who have multiple projects need to meet the deadline.</p>
427
+ <div class="font-black">Early bird price</div>
428
+ <div class="mb-2 md:mb-4 lg:mb-6 xl:mb-8">
429
+ <span class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-black tracking-tight leading-none line-through text-gray-400">
430
+ $799
431
+ </span>
432
+ &nbsp;
433
+ <span class="text-xl md:text-2xl font-black align-top">$</span>
434
+ <span class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl font-black tracking-tight leading-none text-green-500">
435
+ 399
436
+ </span>
437
+ </div>
438
+ <ul>
439
+ <li class="text-base lg:text-lg mb-1 md:mb-2">✅ All features listed in Pro</li>
440
+ <li class="text-base lg:text-lg xl:text-xl mb-1 md:mb-2">✅ Unlimited Sites</li>
441
+ </ul>
442
+ </div>
443
+ <div class="p-5">
444
+ <%= link_to "Notify Me", "#notify-me", class: "inline-block text-lg font-bold text-center text-white whitespace-no-wrap bg-brand-dark hover:bg-brand-darker rounded px-6 py-3 w-full transition-all transition-250 transition-ease" %>
445
+ </div>
446
+ </div>
447
+ </div>
448
+ </div>
449
+ </section>
450
+ <section class="text-gray-800 bg-gray-200">
451
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 64"><path fill="currentColor" d="M690.28,63c340.4,5.46,631.84-18.17,749.72-56.24V64H0V0H2.73C143,33.39,398.31,58.3,690.28,63Z"/></svg>
452
+ </section>
453
+ <section id="notify-me" class="bg-gray-800 py-4 lg:py-16">
454
+ <div class="container px-4 mx-auto">
455
+ <div class="mb-6 md:mb-8 lg:mb-10 xl:mb-12">
456
+ <h3 data-aos="zoom-in" class="text-2xl md:text-3xl lg:text-4xl xl:text-5xl lg:text-center text-white font-black tracking-tight leading-none mb-2 md:mb-3 lg:mb-4 xl:mb-5">✉️ Notify me when it's release</h3>
457
+ <p data-aos="fade-down" data-aos-delay="100" class="text-base lg:text-lg xl:text-xl lg:text-center text-white lg:mr-auto lg:ml-auto lg:w-2/3">Don't miss the early bird price deal. Join our mailing list to get notified!</p>
458
+ </div>
459
+ <div class="flex justify-center">
460
+ <%= form_with model: @newsletter_form, url: subscribe_path, class: "w-full lg:w-1/2" do |f| %>
461
+ <div id="errors">
462
+ <%= render "errors", newsletter_form: @newsletter_form %>
463
+ </div>
464
+ <div class="flex flex-col lg:flex-row">
465
+ <%= f.email_field :email, autofocus: true, autocomplete: "email", placeholder: true, class: "text-lg rounded flex-1 px-4 py-3 mr-0 mb-2 lg:mr-2 lg:mb-0 focus:outline-none focus:shadow-outline appearance-none transition-all transition-250 transition-ease" %>
466
+ <%= f.submit "Subscribe", class: "text-lg font-bold text-center text-white whitespace-no-wrap bg-brand-dark hover:bg-brand-darker rounded flex-initial px-6 py-3 cursor-pointer transition-all transition-250 transition-ease" %>
467
+ </div>
468
+ <% end %>
469
+ </div>
470
+ </div>
471
+ </section>
472
+ </main>