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 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
@@ -0,0 +1,2 @@
1
+ Rails.application.routes.draw do
2
+ end
@@ -0,0 +1,4 @@
1
+ module Frontsite
2
+ class Engine < ::Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Frontsite
2
+ VERSION = '0.1.3'
3
+ end
data/lib/frontsite.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "frontsite/version"
2
+ require "frontsite/engine"
3
+
4
+ module Frontsite
5
+ # Your code goes here...
6
+ end
@@ -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">&copy; <%= 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,3 @@
1
+ <% content_for :title, 'Awesome Site | FAQs' %>
2
+
3
+ <%= render 'shared/site_navigation' %>
@@ -0,0 +1,3 @@
1
+ <% content_for :title, 'Awesome Site | Feed' %>
2
+
3
+ <%= render 'shared/site_navigation' %>
@@ -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 &raquo;</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 &raquo;</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 &raquo;</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,3 @@
1
+ <% content_for :title, 'Awesome Site | Privacy Policy' %>
2
+
3
+ <%= render 'shared/site_navigation' %>
@@ -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
@@ -0,0 +1,2 @@
1
+ module SiteHelper
2
+ end
@@ -0,0 +1,3 @@
1
+ <% content_for :title, 'Awesome Site | Terms and Conditions' %>
2
+
3
+ <%= render 'shared/site_navigation' %>
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :frontsite do
3
+ # # Task goes here
4
+ # 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: []