saaskit 0.1.0

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