frontsite 0.1.3

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