frontsite 0.1.3
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +31 -0
- data/MIT-LICENSE +20 -0
- data/README.md +32 -0
- data/Rakefile +18 -0
- data/app/assets/config/frontsite_manifest.js +0 -0
- data/config/routes.rb +2 -0
- data/lib/frontsite/engine.rb +4 -0
- data/lib/frontsite/version.rb +3 -0
- data/lib/frontsite.rb +6 -0
- data/lib/generators/frontsite/install_generator.rb +55 -0
- data/lib/generators/frontsite/templates/_site_footer.html.erb +12 -0
- data/lib/generators/frontsite/templates/_site_navigation.html.erb +18 -0
- data/lib/generators/frontsite/templates/about.html.erb +87 -0
- data/lib/generators/frontsite/templates/contact.html.erb +37 -0
- data/lib/generators/frontsite/templates/faqs.html.erb +3 -0
- data/lib/generators/frontsite/templates/feed.html.erb +3 -0
- data/lib/generators/frontsite/templates/index.html.erb +88 -0
- data/lib/generators/frontsite/templates/pricing.html.erb +117 -0
- data/lib/generators/frontsite/templates/privacy_policy.html.erb +3 -0
- data/lib/generators/frontsite/templates/products.html.erb +200 -0
- data/lib/generators/frontsite/templates/site.html.erb +20 -0
- data/lib/generators/frontsite/templates/site.scss +60 -0
- data/lib/generators/frontsite/templates/site_controller.rb +28 -0
- data/lib/generators/frontsite/templates/site_helper.rb +2 -0
- data/lib/generators/frontsite/templates/terms.html.erb +3 -0
- data/lib/tasks/frontsite_tasks.rake +4 -0
- metadata +87 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 217acb351c3a1da9fd4456bedb46ac82eb97b48090d272ae22084caedefe2407
|
4
|
+
data.tar.gz: 150d0b0d54941d131e534ec260e714f3fd171ba1c6a2e721938e8a4b03525df8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9b4697d1cc65ac734e0b1705bcfc340687d2231eac85b40ba31ded63687b8156cb9cb382df1da6383e78abfcc3b2aee4dfad0fa526c7521ea5156fec9bbeee1c
|
7
|
+
data.tar.gz: 4e2dc7c24a736cc14bffb95c6767abb5dae67ba9cdc3d18148e18475d877e43df248136f89806782a44fee5c3689035c862ecfd6939b5406e70f6c37955c0fd8
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# v0.1.0
|
2
|
+
Initial concept, uploaded to secure the name. XD
|
3
|
+
|
4
|
+
# v0.1.1
|
5
|
+
Initial version
|
6
|
+
|
7
|
+
- Added:
|
8
|
+
- Site layout
|
9
|
+
- Bootstrap
|
10
|
+
- Bootstrap Icons
|
11
|
+
- Site controller
|
12
|
+
- about page
|
13
|
+
- contact page
|
14
|
+
- home page
|
15
|
+
- faqs page
|
16
|
+
- feed page
|
17
|
+
- pricing page
|
18
|
+
- products page
|
19
|
+
- privacy policy page
|
20
|
+
- terms page
|
21
|
+
- Navigation partial
|
22
|
+
- Footer partial
|
23
|
+
|
24
|
+
# v0.1.2
|
25
|
+
|
26
|
+
Fixed major bug: Templates not found
|
27
|
+
|
28
|
+
# v0.1.3
|
29
|
+
|
30
|
+
Fixed major bug: Generator doesn't work
|
31
|
+
- Mispelling in the copy_file argument... Finally works!
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2021 Otoniel Reyes
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Frontsite
|
2
|
+
Create a site for your app.
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
Add this line to your application's Gemfile:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
gem 'frontsite'
|
9
|
+
```
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
```bash
|
13
|
+
$ bundle
|
14
|
+
```
|
15
|
+
|
16
|
+
Or install it yourself as:
|
17
|
+
```bash
|
18
|
+
$ gem install frontsite
|
19
|
+
```
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
Run the generator:
|
24
|
+
```bash
|
25
|
+
$ bin/rails g frontsite:install
|
26
|
+
```
|
27
|
+
|
28
|
+
## Contributing
|
29
|
+
Contribution directions go here.
|
30
|
+
|
31
|
+
## License
|
32
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
|
3
|
+
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
|
4
|
+
load "rails/tasks/engine.rake"
|
5
|
+
|
6
|
+
load "rails/tasks/statistics.rake"
|
7
|
+
|
8
|
+
require "bundler/gem_tasks"
|
9
|
+
|
10
|
+
require "rake/testtask"
|
11
|
+
|
12
|
+
Rake::TestTask.new(:test) do |t|
|
13
|
+
t.libs << 'test'
|
14
|
+
t.pattern = 'test/**/*_test.rb'
|
15
|
+
t.verbose = false
|
16
|
+
end
|
17
|
+
|
18
|
+
task default: :test
|
File without changes
|
data/config/routes.rb
ADDED
data/lib/frontsite.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Frontsite
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path('templates', __dir__)
|
7
|
+
|
8
|
+
def copy_controller
|
9
|
+
copy_file "site_controller.rb", "app/controllers/site_controller.rb"
|
10
|
+
end
|
11
|
+
|
12
|
+
def copy_helper
|
13
|
+
copy_file "site_helper.rb", "app/helpers/site_helper.rb"
|
14
|
+
end
|
15
|
+
|
16
|
+
def copy_layout
|
17
|
+
copy_file "site.html.erb", "app/views/layouts/site.html.erb"
|
18
|
+
end
|
19
|
+
|
20
|
+
def copy_partials
|
21
|
+
copy_file "_site_navigation.html.erb", "app/views/shared/_site_navigation.html.erb"
|
22
|
+
copy_file "_site_footer.html.erb", "app/views/shared/_site_footer.html.erb"
|
23
|
+
end
|
24
|
+
|
25
|
+
def copy_views
|
26
|
+
copy_file "index.html.erb", "app/views/site/index.html.erb"
|
27
|
+
copy_file "about.html.erb", "app/views/site/about.html.erb"
|
28
|
+
copy_file "products.html.erb", "app/views/site/products.html.erb"
|
29
|
+
copy_file "pricing.html.erb", "app/views/site/pricing.html.erb"
|
30
|
+
copy_file "contact.html.erb", "app/views/site/contact.html.erb"
|
31
|
+
copy_file "feed.html.erb", "app/views/site/feed.html.erb"
|
32
|
+
copy_file "privacy_policy.html.erb", "app/views/site/privacy_policy.html.erb"
|
33
|
+
copy_file "terms.html.erb", "app/views/site/terms.html.erb"
|
34
|
+
copy_file "faqs.html.erb", "app/views/site/faqs.html.erb"
|
35
|
+
end
|
36
|
+
|
37
|
+
def copy_styles
|
38
|
+
copy_file "site.scss", "app/stylesheets/site.scss"
|
39
|
+
end
|
40
|
+
|
41
|
+
def add_routes
|
42
|
+
route "root to: 'site#index'"
|
43
|
+
route "get 'home', to: 'site#index'"
|
44
|
+
route "get 'about', to: 'site#about'"
|
45
|
+
route "get 'products', to: 'site#products'"
|
46
|
+
route "get 'pricing', to: 'site#pricing'"
|
47
|
+
route "get 'contact', to: 'site#contact'"
|
48
|
+
route "get 'feed', to: 'site#feed'"
|
49
|
+
route "get 'privacy_policy', to: 'site#privacy_policy'"
|
50
|
+
route "get 'terms', to: 'site#terms'"
|
51
|
+
route "get 'faqs', to: 'site#faqs'"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="container">
|
2
|
+
<footer class="py-3 my-4">
|
3
|
+
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
4
|
+
<li class="nav-item"><%= link_to 'Feed', feed_path, class: 'nav-link px-2 text-muted' %></li>
|
5
|
+
<li class="nav-item"><%= link_to 'Privacy Policy', privacy_policy_path, class: 'nav-link px-2 text-muted' %></li>
|
6
|
+
<li class="nav-item"><%= link_to 'Pricing', pricing_path, class: 'nav-link px-2 text-muted' %></li>
|
7
|
+
<li class="nav-item"><%= link_to 'Terms and Conditions', terms_path, class: 'nav-link px-2 text-muted' %></li>
|
8
|
+
<li class="nav-item"><%= link_to 'FAQs', faqs_path, class: 'nav-link px-2 text-muted' %></li>
|
9
|
+
</ul>
|
10
|
+
<p class="text-center text-muted">© <%= Time.now.year %> Company, Inc</p>
|
11
|
+
</footer>
|
12
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="container">
|
2
|
+
<header class="d-flex flex-wrap align-items-center justify-content-center justify-content-md-between py-3">
|
3
|
+
<%= link_to tag.i('', class:'bi bi-app-indicator h3 mb-0'), root_path, class:"d-flex align-items-center col-md-3 mb-2 mb-md-0 text-dark text-decoration-none" %>
|
4
|
+
|
5
|
+
<ul class="nav col-12 col-md-auto mb-2 justify-content-center mb-md-0">
|
6
|
+
<li><%= link_to 'Home', root_path, class:'nav-link px-2 link-secondary' %></li>
|
7
|
+
<li><%= link_to 'About', about_path, class:'nav-link px-2 link-secondary' %></li>
|
8
|
+
<li><%= link_to 'Products', products_path, class:'nav-link px-2 link-secondary' %></li>
|
9
|
+
<li><%= link_to 'Pricing', pricing_path, class:'nav-link px-2 link-secondary' %></li>
|
10
|
+
<li><%= link_to 'Contact', contact_path, class:'nav-link px-2 link-secondary' %></li>
|
11
|
+
</ul>
|
12
|
+
|
13
|
+
<div class="col-md-3 text-end">
|
14
|
+
<%= link_to 'Login', root_path, class:"btn btn-outline-info me-2" %>
|
15
|
+
<%= link_to 'Sign-up', root_path, class:"btn btn-info" %>
|
16
|
+
</div>
|
17
|
+
</header>
|
18
|
+
</div>
|
@@ -0,0 +1,87 @@
|
|
1
|
+
<%= render 'shared/site_navigation' %>
|
2
|
+
<% content_for :title, 'Awesome Site | About Us' %>
|
3
|
+
|
4
|
+
<div class="p-5">
|
5
|
+
<div class="container-fluid py-5 text-center">
|
6
|
+
<i class="bi bi-app-indicator h1"></i>
|
7
|
+
<h1 class="display-5 fw-bold">About Us</h1>
|
8
|
+
<p class="fs-4">A short description about the team, the work we do, who we work for and our motivation.</p>
|
9
|
+
<p class="fs-4">We are moving forward</p>
|
10
|
+
<button class="btn btn-primary btn-lg" type="button">Sign-up</button>
|
11
|
+
<button class="btn btn-outline-primary btn-lg" type="button">Contact Us</button>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="album py-5 bg-light">
|
16
|
+
<h2 class="text-center border-bottom mb-4 pb-3">The Team</h2>
|
17
|
+
<div class="container">
|
18
|
+
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-4 g-3">
|
19
|
+
<div class="col">
|
20
|
+
<div class="card shadow-sm">
|
21
|
+
<img src="//picsum.photos/id/555/200" class="card-img-top">
|
22
|
+
|
23
|
+
<div class="card-body text-center">
|
24
|
+
<h4 class="card-title">
|
25
|
+
Awesome Name
|
26
|
+
</h4>
|
27
|
+
<hr>
|
28
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
29
|
+
<div class="d-grid gap-2">
|
30
|
+
<button type="button" class="btn btn-dark rounded-0">Contact</button>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="col">
|
36
|
+
<div class="card shadow-sm">
|
37
|
+
<img src="//picsum.photos/id/555/200" class="card-img-top">
|
38
|
+
|
39
|
+
<div class="card-body text-center">
|
40
|
+
<h4 class="card-title">
|
41
|
+
Awesome Name
|
42
|
+
</h4>
|
43
|
+
<hr>
|
44
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
45
|
+
<div class="d-grid gap-2">
|
46
|
+
<button type="button" class="btn btn-dark rounded-0">Contact</button>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
<div class="col">
|
52
|
+
<div class="card shadow-sm">
|
53
|
+
<img src="//picsum.photos/id/555/200" class="card-img-top">
|
54
|
+
|
55
|
+
<div class="card-body text-center">
|
56
|
+
<h4 class="card-title">
|
57
|
+
Awesome Name
|
58
|
+
</h4>
|
59
|
+
<hr>
|
60
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
61
|
+
<div class="d-grid gap-2">
|
62
|
+
<button type="button" class="btn btn-dark rounded-0">Contact</button>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
</div>
|
67
|
+
<div class="col">
|
68
|
+
<div class="card shadow-sm">
|
69
|
+
<img src="//picsum.photos/id/555/200" class="card-img-top">
|
70
|
+
|
71
|
+
<div class="card-body text-center">
|
72
|
+
<h4 class="card-title">
|
73
|
+
Awesome Name
|
74
|
+
</h4>
|
75
|
+
<hr>
|
76
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
77
|
+
<div class="d-grid gap-2">
|
78
|
+
<button type="button" class="btn btn-dark rounded-0">Contact</button>
|
79
|
+
</div>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
</div>
|
86
|
+
|
87
|
+
<%= render 'shared/site_footer' %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<% content_for :title, 'Awesome Site | Contact' %>
|
2
|
+
|
3
|
+
<%= render 'shared/site_navigation' %>
|
4
|
+
|
5
|
+
<div class="p-5">
|
6
|
+
<div class="container-fluid py-5 text-center">
|
7
|
+
<h1 class="display-5 fw-bold">Contact Us</h1>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="container">
|
12
|
+
<div class="row align-items-center">
|
13
|
+
<div class="col-4"><img src="//picsum.photos/400" class="image-responsive w-100"></div>
|
14
|
+
<div class="col-8">
|
15
|
+
<form>
|
16
|
+
<h4>Leave us a message</h4>
|
17
|
+
<div class="form-group">
|
18
|
+
<label>Name</label>
|
19
|
+
<input type="text" class="form-control">
|
20
|
+
</div>
|
21
|
+
<div class="form-group">
|
22
|
+
<label>Email</label>
|
23
|
+
<input type="email" class="form-control">
|
24
|
+
</div>
|
25
|
+
<div class="form-group">
|
26
|
+
<label>Message</label>
|
27
|
+
<textarea class="form-control"></textarea>
|
28
|
+
</div>
|
29
|
+
<div class="my-2">
|
30
|
+
<input type="submit" value="Send" class="btn btn-primary">
|
31
|
+
</div>
|
32
|
+
</form>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<%= render 'shared/site_footer' %>
|
@@ -0,0 +1,88 @@
|
|
1
|
+
<% content_for :title, 'Awesome Site' %>
|
2
|
+
<%= render 'shared/site_navigation' %>
|
3
|
+
|
4
|
+
<div class="px-4 py-5 my-5 text-center">
|
5
|
+
<i class="bi bi-app-indicator h1"></i>
|
6
|
+
<h1 class="display-5 fw-bold">Site Home</h1>
|
7
|
+
<div class="col-lg-6 mx-auto">
|
8
|
+
<p class="lead mb-4">Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.</p>
|
9
|
+
<div class="d-grid gap-2 d-sm-flex justify-content-sm-center">
|
10
|
+
<button type="button" class="btn btn-primary btn-lg px-4 gap-3">Primary button</button>
|
11
|
+
<button type="button" class="btn btn-outline-secondary btn-lg px-4">Secondary</button>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<div class="container marketing">
|
17
|
+
|
18
|
+
<!-- Three columns of text below the carousel -->
|
19
|
+
<div class="row justify-content-center py-4">
|
20
|
+
<div class="col-lg-4 text-center">
|
21
|
+
<img src="//picsum.photos/id/80/128" class="rounded-circle d-block mx-auto">
|
22
|
+
|
23
|
+
<h2>Heading</h2>
|
24
|
+
<p>Some representative placeholder content for the three columns of text below the carousel. This is the first column.</p>
|
25
|
+
<p><a class="btn btn-secondary" href="#">View details »</a></p>
|
26
|
+
</div><!-- /.col-lg-4 -->
|
27
|
+
<div class="col-lg-4 text-center">
|
28
|
+
<img src="//picsum.photos/id/80/128" class="rounded-circle d-block mx-auto">
|
29
|
+
|
30
|
+
<h2>Heading</h2>
|
31
|
+
<p>Another exciting bit of representative placeholder content. This time, we've moved on to the second column.</p>
|
32
|
+
<p><a class="btn btn-secondary" href="#">View details »</a></p>
|
33
|
+
</div><!-- /.col-lg-4 -->
|
34
|
+
<div class="col-lg-4 text-center">
|
35
|
+
<img src="//picsum.photos/id/80/128" class="rounded-circle d-block mx-auto">
|
36
|
+
|
37
|
+
<h2>Heading</h2>
|
38
|
+
<p>And lastly this, the third column of representative placeholder content.</p>
|
39
|
+
<p><a class="btn btn-secondary" href="#">View details »</a></p>
|
40
|
+
</div><!-- /.col-lg-4 -->
|
41
|
+
</div><!-- /.row -->
|
42
|
+
|
43
|
+
|
44
|
+
<!-- START THE FEATURETTES -->
|
45
|
+
|
46
|
+
<hr class="featurette-divider">
|
47
|
+
|
48
|
+
<div class="row featurette align-items-center">
|
49
|
+
<div class="col-md-7">
|
50
|
+
<h2 class="featurette-heading">First featurette heading. <span class="text-muted">It’ll blow your mind.</span></h2>
|
51
|
+
<p class="lead">Some great placeholder content for the first featurette here. Imagine some exciting prose here.</p>
|
52
|
+
</div>
|
53
|
+
<div class="col-md-5">
|
54
|
+
<img src="//picsum.photos/id/26/600" class="w-100 image-responsive">
|
55
|
+
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<hr class="featurette-divider">
|
60
|
+
|
61
|
+
<div class="row featurette align-items-center">
|
62
|
+
<div class="col-md-7 order-md-2">
|
63
|
+
<h2 class="featurette-heading">Oh yeah, it’s that good. <span class="text-muted">See for yourself.</span></h2>
|
64
|
+
<p class="lead">Another featurette? Of course. More placeholder content here to give you an idea of how this layout would work with some actual real-world content in place.</p>
|
65
|
+
</div>
|
66
|
+
<div class="col-md-5 order-md-1">
|
67
|
+
<img src="//picsum.photos/id/24/600" class="w-100 image-responsive">
|
68
|
+
|
69
|
+
</div>
|
70
|
+
</div>
|
71
|
+
|
72
|
+
<hr class="featurette-divider">
|
73
|
+
|
74
|
+
<div class="row featurette align-items-center">
|
75
|
+
<div class="col-md-7">
|
76
|
+
<h2 class="featurette-heading">And lastly, this one. <span class="text-muted">Checkmate.</span></h2>
|
77
|
+
<p class="lead">And yes, this is the last block of representative placeholder content. Again, not really intended to be actually read, simply here to give you a better view of what this would look like with some actual content. Your content.</p>
|
78
|
+
</div>
|
79
|
+
<div class="col-md-5">
|
80
|
+
<img src="//picsum.photos/id/25/600" class="w-100 image-responsive">
|
81
|
+
|
82
|
+
</div>
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
|
86
|
+
<hr class="my-3">
|
87
|
+
|
88
|
+
<%= render 'shared/site_footer' %>
|
@@ -0,0 +1,117 @@
|
|
1
|
+
<% content_for :title, 'Awesome Site | Pricing' %>
|
2
|
+
|
3
|
+
<%= render 'shared/site_navigation' %>
|
4
|
+
|
5
|
+
<main class="container-fluid">
|
6
|
+
<div class="row row-cols-1 row-cols-md-3 mb-3 text-center">
|
7
|
+
<div class="col">
|
8
|
+
<div class="card mb-4 rounded-3 shadow-sm">
|
9
|
+
<div class="card-header py-3">
|
10
|
+
<h4 class="my-0 fw-normal">Free</h4>
|
11
|
+
</div>
|
12
|
+
<div class="card-body">
|
13
|
+
<h1 class="card-title pricing-card-title">$0<small class="text-muted fw-light">/mo</small></h1>
|
14
|
+
<ul class="list-unstyled mt-3 mb-4">
|
15
|
+
<li>10 users included</li>
|
16
|
+
<li>2 GB of storage</li>
|
17
|
+
<li>Email support</li>
|
18
|
+
<li>Help center access</li>
|
19
|
+
</ul>
|
20
|
+
<button type="button" class="w-100 btn btn-lg btn-outline-primary">Sign up for free</button>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
<div class="col">
|
25
|
+
<div class="card mb-4 rounded-3 shadow-sm">
|
26
|
+
<div class="card-header py-3">
|
27
|
+
<h4 class="my-0 fw-normal">Pro</h4>
|
28
|
+
</div>
|
29
|
+
<div class="card-body">
|
30
|
+
<h1 class="card-title pricing-card-title">$15<small class="text-muted fw-light">/mo</small></h1>
|
31
|
+
<ul class="list-unstyled mt-3 mb-4">
|
32
|
+
<li>20 users included</li>
|
33
|
+
<li>10 GB of storage</li>
|
34
|
+
<li>Priority email support</li>
|
35
|
+
<li>Help center access</li>
|
36
|
+
</ul>
|
37
|
+
<button type="button" class="w-100 btn btn-lg btn-primary">Get started</button>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
<div class="col">
|
42
|
+
<div class="card mb-4 rounded-3 shadow-sm border-primary">
|
43
|
+
<div class="card-header py-3 text-white bg-primary border-primary">
|
44
|
+
<h4 class="my-0 fw-normal">Enterprise</h4>
|
45
|
+
</div>
|
46
|
+
<div class="card-body">
|
47
|
+
<h1 class="card-title pricing-card-title">$29<small class="text-muted fw-light">/mo</small></h1>
|
48
|
+
<ul class="list-unstyled mt-3 mb-4">
|
49
|
+
<li>30 users included</li>
|
50
|
+
<li>15 GB of storage</li>
|
51
|
+
<li>Phone and email support</li>
|
52
|
+
<li>Help center access</li>
|
53
|
+
</ul>
|
54
|
+
<button type="button" class="w-100 btn btn-lg btn-primary">Contact us</button>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<h2 class="display-6 text-center mb-4">Compare plans</h2>
|
61
|
+
|
62
|
+
<div class="container">
|
63
|
+
<table class="table text-center">
|
64
|
+
<thead>
|
65
|
+
<tr>
|
66
|
+
<th style="width: 34%;"></th>
|
67
|
+
<th style="width: 22%;">Free</th>
|
68
|
+
<th style="width: 22%;">Pro</th>
|
69
|
+
<th style="width: 22%;">Enterprise</th>
|
70
|
+
</tr>
|
71
|
+
</thead>
|
72
|
+
<tbody>
|
73
|
+
<tr>
|
74
|
+
<th scope="row" class="text-start">Public</th>
|
75
|
+
<td><i class="bi bi-check text-success"></i></td>
|
76
|
+
<td><i class="bi bi-check text-success"></i></td>
|
77
|
+
<td><i class="bi bi-check text-success"></i></td>
|
78
|
+
</tr>
|
79
|
+
<tr>
|
80
|
+
<th scope="row" class="text-start">Private</th>
|
81
|
+
<td></td>
|
82
|
+
<td><i class="bi bi-check text-success"></i></td>
|
83
|
+
<td><i class="bi bi-check text-success"></i></td>
|
84
|
+
</tr>
|
85
|
+
</tbody>
|
86
|
+
|
87
|
+
<tbody>
|
88
|
+
<tr>
|
89
|
+
<th scope="row" class="text-start">Permissions</th>
|
90
|
+
<td><i class="bi bi-check text-success"></i></td>
|
91
|
+
<td><i class="bi bi-check text-success"></i></td>
|
92
|
+
<td><i class="bi bi-check text-success"></i></td>
|
93
|
+
</tr>
|
94
|
+
<tr>
|
95
|
+
<th scope="row" class="text-start">Sharing</th>
|
96
|
+
<td></td>
|
97
|
+
<td><i class="bi bi-check text-success"></i></td>
|
98
|
+
<td><i class="bi bi-check text-success"></i></td>
|
99
|
+
</tr>
|
100
|
+
<tr>
|
101
|
+
<th scope="row" class="text-start">Unlimited members</th>
|
102
|
+
<td></td>
|
103
|
+
<td><i class="bi bi-check text-success"></i></td>
|
104
|
+
<td><i class="bi bi-check text-success"></i></td>
|
105
|
+
</tr>
|
106
|
+
<tr>
|
107
|
+
<th scope="row" class="text-start">Extra security</th>
|
108
|
+
<td></td>
|
109
|
+
<td></td>
|
110
|
+
<td><i class="bi bi-check text-success"></i></td>
|
111
|
+
</tr>
|
112
|
+
</tbody>
|
113
|
+
</table>
|
114
|
+
</div>
|
115
|
+
</main>
|
116
|
+
|
117
|
+
<%= render 'shared/site_footer' %>
|
@@ -0,0 +1,200 @@
|
|
1
|
+
<% content_for :title, 'Awesome Site | Products' %>
|
2
|
+
<%= render 'shared/site_navigation' %>
|
3
|
+
|
4
|
+
<div class="position-relative overflow-hidden p-3 p-md-5 m-md-3 text-center bg-light">
|
5
|
+
<div class="col-md-5 p-lg-5 mx-auto my-5">
|
6
|
+
<h1 class="display-4 fw-normal">Punny headline</h1>
|
7
|
+
<p class="lead fw-normal">And an even wittier subheading to boot. Jumpstart your marketing efforts with this example based on Apple’s marketing pages.</p>
|
8
|
+
<a class="btn btn-outline-secondary" href="#">Coming soon</a>
|
9
|
+
</div>
|
10
|
+
<div class="product-device shadow-sm d-none d-md-block"></div>
|
11
|
+
<div class="product-device product-device-2 shadow-sm d-none d-md-block"></div>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="album py-5 bg-light">
|
15
|
+
<div class="container">
|
16
|
+
|
17
|
+
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3">
|
18
|
+
<div class="col">
|
19
|
+
<div class="card shadow-sm">
|
20
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
21
|
+
|
22
|
+
<div class="card-body">
|
23
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
24
|
+
<div class="d-flex justify-content-between align-items-center">
|
25
|
+
<div class="btn-group">
|
26
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
27
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
28
|
+
</div>
|
29
|
+
<small class="text-muted">9 mins</small>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div class="col">
|
35
|
+
<div class="card shadow-sm">
|
36
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
37
|
+
|
38
|
+
<div class="card-body">
|
39
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
40
|
+
<div class="d-flex justify-content-between align-items-center">
|
41
|
+
<div class="btn-group">
|
42
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
43
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
44
|
+
</div>
|
45
|
+
<small class="text-muted">9 mins</small>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
<div class="col">
|
51
|
+
<div class="card shadow-sm">
|
52
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
53
|
+
|
54
|
+
<div class="card-body">
|
55
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
56
|
+
<div class="d-flex justify-content-between align-items-center">
|
57
|
+
<div class="btn-group">
|
58
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
59
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
60
|
+
</div>
|
61
|
+
<small class="text-muted">9 mins</small>
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
|
67
|
+
<div class="col">
|
68
|
+
<div class="card shadow-sm">
|
69
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
70
|
+
|
71
|
+
<div class="card-body">
|
72
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
73
|
+
<div class="d-flex justify-content-between align-items-center">
|
74
|
+
<div class="btn-group">
|
75
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
76
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
77
|
+
</div>
|
78
|
+
<small class="text-muted">9 mins</small>
|
79
|
+
</div>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
<div class="col">
|
84
|
+
<div class="card shadow-sm">
|
85
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
86
|
+
|
87
|
+
<div class="card-body">
|
88
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
89
|
+
<div class="d-flex justify-content-between align-items-center">
|
90
|
+
<div class="btn-group">
|
91
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
92
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
93
|
+
</div>
|
94
|
+
<small class="text-muted">9 mins</small>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
</div>
|
99
|
+
<div class="col">
|
100
|
+
<div class="card shadow-sm">
|
101
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
102
|
+
|
103
|
+
<div class="card-body">
|
104
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
105
|
+
<div class="d-flex justify-content-between align-items-center">
|
106
|
+
<div class="btn-group">
|
107
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
108
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
109
|
+
</div>
|
110
|
+
<small class="text-muted">9 mins</small>
|
111
|
+
</div>
|
112
|
+
</div>
|
113
|
+
</div>
|
114
|
+
</div>
|
115
|
+
|
116
|
+
<div class="col">
|
117
|
+
<div class="card shadow-sm">
|
118
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
119
|
+
|
120
|
+
<div class="card-body">
|
121
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
122
|
+
<div class="d-flex justify-content-between align-items-center">
|
123
|
+
<div class="btn-group">
|
124
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
125
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
126
|
+
</div>
|
127
|
+
<small class="text-muted">9 mins</small>
|
128
|
+
</div>
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
</div>
|
132
|
+
<div class="col">
|
133
|
+
<div class="card shadow-sm">
|
134
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
135
|
+
|
136
|
+
<div class="card-body">
|
137
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
138
|
+
<div class="d-flex justify-content-between align-items-center">
|
139
|
+
<div class="btn-group">
|
140
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
141
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
142
|
+
</div>
|
143
|
+
<small class="text-muted">9 mins</small>
|
144
|
+
</div>
|
145
|
+
</div>
|
146
|
+
</div>
|
147
|
+
</div>
|
148
|
+
<div class="col">
|
149
|
+
<div class="card shadow-sm">
|
150
|
+
<svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail" preserveAspectRatio="xMidYMid slice" focusable="false"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
|
151
|
+
|
152
|
+
<div class="card-body">
|
153
|
+
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
|
154
|
+
<div class="d-flex justify-content-between align-items-center">
|
155
|
+
<div class="btn-group">
|
156
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
|
157
|
+
<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
|
158
|
+
</div>
|
159
|
+
<small class="text-muted">9 mins</small>
|
160
|
+
</div>
|
161
|
+
</div>
|
162
|
+
</div>
|
163
|
+
</div>
|
164
|
+
</div>
|
165
|
+
</div>
|
166
|
+
</div>
|
167
|
+
|
168
|
+
<%= render 'shared/site_footer' %>
|
169
|
+
|
170
|
+
<style type="text/css">
|
171
|
+
.product-device {
|
172
|
+
position: absolute;
|
173
|
+
right: 10%;
|
174
|
+
bottom: -30%;
|
175
|
+
width: 300px;
|
176
|
+
height: 540px;
|
177
|
+
background-color: #333;
|
178
|
+
border-radius: 21px;
|
179
|
+
transform: rotate(30deg);
|
180
|
+
}
|
181
|
+
|
182
|
+
.product-device::before {
|
183
|
+
position: absolute;
|
184
|
+
top: 10%;
|
185
|
+
right: 10px;
|
186
|
+
bottom: 10%;
|
187
|
+
left: 10px;
|
188
|
+
content: "";
|
189
|
+
background-color: rgba(255, 255, 255, .1);
|
190
|
+
border-radius: 5px;
|
191
|
+
}
|
192
|
+
|
193
|
+
.product-device-2 {
|
194
|
+
top: -25%;
|
195
|
+
right: auto;
|
196
|
+
bottom: 0;
|
197
|
+
left: 5%;
|
198
|
+
background-color: #e5e5e5;
|
199
|
+
}
|
200
|
+
</style>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= yield :title %></title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<%= csrf_meta_tags %>
|
7
|
+
<%= csp_meta_tag %>
|
8
|
+
|
9
|
+
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
|
10
|
+
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
|
11
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
|
12
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
|
13
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj" crossorigin="anonymous"></script>
|
14
|
+
</head>
|
15
|
+
<body>
|
16
|
+
|
17
|
+
<%= yield %>
|
18
|
+
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/*
|
2
|
+
Place all the styles related to the matching controller here.
|
3
|
+
They will automatically be included in application.css.
|
4
|
+
*/
|
5
|
+
|
6
|
+
/* Styles bellow are taken from bootstrap examples */
|
7
|
+
|
8
|
+
/*
|
9
|
+
* Globals
|
10
|
+
*/
|
11
|
+
|
12
|
+
|
13
|
+
/* Custom default button */
|
14
|
+
.btn-secondary,
|
15
|
+
.btn-secondary:hover,
|
16
|
+
.btn-secondary:focus {
|
17
|
+
color: #333;
|
18
|
+
text-shadow: none; /* Prevent inheritance from `body` */
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
/*
|
23
|
+
* Base structure
|
24
|
+
*/
|
25
|
+
|
26
|
+
body {
|
27
|
+
text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5);
|
28
|
+
box-shadow: inset 0 0 5rem rgba(0, 0, 0, .5);
|
29
|
+
}
|
30
|
+
|
31
|
+
.cover-container {
|
32
|
+
max-width: 42em;
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
/*
|
37
|
+
* Header
|
38
|
+
*/
|
39
|
+
|
40
|
+
.nav-masthead .nav-link {
|
41
|
+
padding: .25rem 0;
|
42
|
+
font-weight: 700;
|
43
|
+
color: rgba(255, 255, 255, .5);
|
44
|
+
background-color: transparent;
|
45
|
+
border-bottom: .25rem solid transparent;
|
46
|
+
}
|
47
|
+
|
48
|
+
.nav-masthead .nav-link:hover,
|
49
|
+
.nav-masthead .nav-link:focus {
|
50
|
+
border-bottom-color: rgba(255, 255, 255, .25);
|
51
|
+
}
|
52
|
+
|
53
|
+
.nav-masthead .nav-link + .nav-link {
|
54
|
+
margin-left: 1rem;
|
55
|
+
}
|
56
|
+
|
57
|
+
.nav-masthead .active {
|
58
|
+
color: #fff;
|
59
|
+
border-bottom-color: #fff;
|
60
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class SiteController < ApplicationController
|
2
|
+
def index
|
3
|
+
end
|
4
|
+
|
5
|
+
def about
|
6
|
+
end
|
7
|
+
|
8
|
+
def products
|
9
|
+
end
|
10
|
+
|
11
|
+
def pricing
|
12
|
+
end
|
13
|
+
|
14
|
+
def contact
|
15
|
+
end
|
16
|
+
|
17
|
+
def feed
|
18
|
+
end
|
19
|
+
|
20
|
+
def privacy_policy
|
21
|
+
end
|
22
|
+
|
23
|
+
def terms
|
24
|
+
end
|
25
|
+
|
26
|
+
def faqs
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: frontsite
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- kenliten
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 6.1.4
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 6.1.4
|
27
|
+
description: Generate a full front site to your new rails app
|
28
|
+
email:
|
29
|
+
- kenliten@otonielreyes.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- CHANGELOG.md
|
35
|
+
- MIT-LICENSE
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- app/assets/config/frontsite_manifest.js
|
39
|
+
- config/routes.rb
|
40
|
+
- lib/frontsite.rb
|
41
|
+
- lib/frontsite/engine.rb
|
42
|
+
- lib/frontsite/version.rb
|
43
|
+
- lib/generators/frontsite/install_generator.rb
|
44
|
+
- lib/generators/frontsite/templates/_site_footer.html.erb
|
45
|
+
- lib/generators/frontsite/templates/_site_navigation.html.erb
|
46
|
+
- lib/generators/frontsite/templates/about.html.erb
|
47
|
+
- lib/generators/frontsite/templates/contact.html.erb
|
48
|
+
- lib/generators/frontsite/templates/faqs.html.erb
|
49
|
+
- lib/generators/frontsite/templates/feed.html.erb
|
50
|
+
- lib/generators/frontsite/templates/index.html.erb
|
51
|
+
- lib/generators/frontsite/templates/pricing.html.erb
|
52
|
+
- lib/generators/frontsite/templates/privacy_policy.html.erb
|
53
|
+
- lib/generators/frontsite/templates/products.html.erb
|
54
|
+
- lib/generators/frontsite/templates/site.html.erb
|
55
|
+
- lib/generators/frontsite/templates/site.scss
|
56
|
+
- lib/generators/frontsite/templates/site_controller.rb
|
57
|
+
- lib/generators/frontsite/templates/site_helper.rb
|
58
|
+
- lib/generators/frontsite/templates/terms.html.erb
|
59
|
+
- lib/tasks/frontsite_tasks.rake
|
60
|
+
homepage: https://github.com/kenliten/frontsite
|
61
|
+
licenses:
|
62
|
+
- MIT
|
63
|
+
metadata:
|
64
|
+
homepage_uri: https://github.com/kenliten/frontsite
|
65
|
+
documentation_uri: https://github.com/kenliten/frontsite
|
66
|
+
source_code_uri: https://github.com/kenliten/frontsite
|
67
|
+
changelog_uri: https://github.com/kenliten/frontsite/blob/main/CHANGELOG.md
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
requirements: []
|
83
|
+
rubygems_version: 3.2.15
|
84
|
+
signing_key:
|
85
|
+
specification_version: 4
|
86
|
+
summary: A frontsite generator tool
|
87
|
+
test_files: []
|