saaskit 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.travis.yml +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +22 -0
- data/LICENSE.txt +21 -0
- data/README.md +81 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/generators/saaskit/install/install_generator.rb +207 -0
- data/lib/generators/saaskit/install/templates/README +30 -0
- data/lib/generators/saaskit/install/templates/app/adapters/mailchimp/base_adapter.rb +51 -0
- data/lib/generators/saaskit/install/templates/app/controllers/application_controller.rb +3 -0
- data/lib/generators/saaskit/install/templates/app/controllers/pages_controller.rb +30 -0
- data/lib/generators/saaskit/install/templates/app/forms/newsletter_form.rb +17 -0
- data/lib/generators/saaskit/install/templates/app/helpers/application_helper.rb +10 -0
- data/lib/generators/saaskit/install/templates/app/helpers/meta_tags_helper.rb +21 -0
- data/lib/generators/saaskit/install/templates/app/javascript/controllers/aos_controller.js +12 -0
- data/lib/generators/saaskit/install/templates/app/javascript/controllers/index.js +6 -0
- data/lib/generators/saaskit/install/templates/app/javascript/controllers/notice_controller.js +14 -0
- data/lib/generators/saaskit/install/templates/app/javascript/controllers/noty_controller.js +10 -0
- data/lib/generators/saaskit/install/templates/app/javascript/controllers/reveal_controller.js +43 -0
- data/lib/generators/saaskit/install/templates/app/javascript/controllers/smooth_scroll_controller.js +11 -0
- data/lib/generators/saaskit/install/templates/app/javascript/controllers/typed_controller.js +17 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/address-book-2.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/chart-bar-1.svg +10 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/cloud-upload.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/credit-card.svg +9 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/display-1.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/facebook.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/file.svg +9 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/github.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/group.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/layout-left-panel-1.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/layout-top-panel-6.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/logo_color_horizontal.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/logo_color_stacked.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/logo_color_symbol.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/logo_white_horizontal.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/logo_white_stacked.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/logo_white_symbol.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/mail-opened.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/notifications-1.svg +7 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/outlet.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/pablo-done.png +0 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/paypal.svg +9 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/rails.svg +7 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/repeat.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/right-circle.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/sale-2.svg +10 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/selected-file.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/sending-mail.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/shield-check.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/shield-protected.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/stimulus.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/stripe.svg +6 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/tailwind.svg +12 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/tgav_logo_white_symbol.svg +1 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/user.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/images/webpack.svg +8 -0
- data/lib/generators/saaskit/install/templates/app/javascript/stylesheets/application.scss +3 -0
- data/lib/generators/saaskit/install/templates/app/javascript/stylesheets/tailwind.config.js +542 -0
- data/lib/generators/saaskit/install/templates/app/models/concerns/coming_soon_pending_subscribable.rb +31 -0
- data/lib/generators/saaskit/install/templates/app/views/layouts/application.html.erb +7 -0
- data/lib/generators/saaskit/install/templates/app/views/layouts/land.html.erb +24 -0
- data/lib/generators/saaskit/install/templates/app/views/pages/_errors.html.erb +14 -0
- data/lib/generators/saaskit/install/templates/app/views/pages/home.html.erb +472 -0
- data/lib/generators/saaskit/install/templates/app/views/pages/subscribe.js.erb +24 -0
- data/lib/generators/saaskit/install/templates/app/views/shared/_footer.html.erb +23 -0
- data/lib/generators/saaskit/install/templates/app/views/shared/_head.html.erb +9 -0
- data/lib/generators/saaskit/install/templates/app/views/shared/_navbar.html.erb +76 -0
- data/lib/generators/saaskit/install/templates/app/views/shared/_notices.html.erb +8 -0
- data/lib/generators/saaskit/install/templates/config/credentials.yml.sample +8 -0
- data/lib/generators/saaskit/install/templates/config/initializers/meta_tags.rb +40 -0
- data/lib/generators/saaskit/install/templates/config/webpack/plugins/purgecss-webpack-plugin.js +21 -0
- data/lib/saaskit.rb +6 -0
- data/lib/saaskit/version.rb +3 -0
- data/saaskit.gemspec +33 -0
- data/template.rb +6 -0
- 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,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
|
+
|
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
|
+
|
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>
|