edgy_app 1.0.0

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: 78728bb46d73c2632075f71796bb70ab22c76abab7902e46f314aa6c77c36215
4
+ data.tar.gz: e3cbf4f018894917e3caa6f892fe7efb37322d0051e2ea4ba2472aff20077b43
5
+ SHA512:
6
+ metadata.gz: b7c26f74c4c35f99d46278298f1935238e08171bad14c2cd3d667ef7e7e9212199af794d7758bb51ee0c080af878cfbf581c2d1900ce58ea8faea1b8a5416465
7
+ data.tar.gz: 0f1d52649b76477208e17dfc8c42e58c913ba1972cf1b0be127046873adbb1d8cb7e0fa9ba212cb8a890ef8a964609a74a7244d9cd3c8e3b3c5ec5b9912384f2
@@ -0,0 +1,17 @@
1
+ <div id='footer'>
2
+ <div class='footer-menu'>
3
+ <%= link_to 'Home', APP_NAME_root_path, class:'footer-menu-link' %>
4
+ <%= link_to 'About', APP_NAME_about_path, class:'footer-menu-link' %>
5
+ <%= link_to 'Contact', APP_NAME_contact_path, class:'footer-menu-link' %>
6
+ <%= link_to 'Terms of Use', APP_NAME_terms_path, class:'footer-menu-link' %>
7
+ <%= link_to 'Privacy', APP_NAME_privacy_path, class:'footer-menu-link' %><br><br>
8
+ EDGY_APP INSERT_MAP
9
+ </div>
10
+ <div class='footer-social'>
11
+ <h2>Follow</h2>
12
+ <div class='social-wrapper'><%= link_to (image_tag 'fb.png', class:'social'), 'https://facebook.com' %></div>
13
+ <div class='social-wrapper'><%= link_to (image_tag 'twitter.png', class:'social'), 'https://twitter.com' %></div>
14
+ <div class='social-wrapper'><%= link_to (image_tag 'youtube.png', class:'social'), 'https://youtube.com' %></div>
15
+ </div>
16
+ <div class='footer-c'>© <%=Date.today.year%> APP_NAME</div>
17
+ </div>
@@ -0,0 +1,22 @@
1
+ <div class='header'>
2
+ <%= link_to (image_tag 'APP_NAME/Logo.png', id:'header-logo'), APP_NAME_root_path %>
3
+ <div class='header-menu-desktop'>
4
+ <%= link_to 'About', APP_NAME_about_path, class:'header-link' %>
5
+ <%= link_to 'Contact', APP_NAME_contact_path, class:'header-link' %>
6
+ </div>
7
+ <%= image_tag 'menu.png', id:'open-menu-mobile' %>
8
+ </div>
9
+ <div id='header-menu-mobile'>
10
+ <div id='close-header-menu-mobile'></div>
11
+ <%= link_to 'Home', APP_NAME_root_path, class:'header-link' %><br>
12
+ <%= link_to 'About', APP_NAME_about_path, class:'header-link' %><br>
13
+ <%= link_to 'Contact', APP_NAME_contact_path, class:'header-link' %>
14
+ </div>
15
+ <script type="text/javascript">
16
+ $("#open-menu-mobile").click(function() {
17
+ $("#header-menu-mobile").fadeIn(200);
18
+ });
19
+ $("#close-header-menu-mobile").click(function() {
20
+ $("#header-menu-mobile").fadeOut(100);
21
+ })
22
+ </script>
File without changes
@@ -0,0 +1,33 @@
1
+ <% content_for :title do %>APP_CAMEL | Contact Us<% end %>
2
+
3
+ <%= render 'APP_NAME/pages/header' %>
4
+
5
+ <h1>Contact Us</h1><br><br><br>
6
+ <div class="contact">
7
+ <div id="contact-form">
8
+ <% if flash[:thanks] == "true" %>
9
+ <div class="big">Thanks for your message. We'll get back to you shortly.</div>
10
+ <% else %>
11
+ <% @contact = Contact.new %>
12
+ <%= form_for @contact, url: APP_NAME_contact_form_path(@contact) do |f| %>
13
+ <div class="ab-h2">Please fill out the form and we will be in touch.</div>
14
+ <%= f.text_field :name, placeholder:"Name", class:"contact-field" %><br>
15
+ <%= f.text_field :contact_info, placeholder:"Your Email", class:"contact-field" %><br>
16
+ <%= f.text_area :text, placeholder:"Message", class:"contact-field" %><br>
17
+ <%= f.hidden_field :app, value: "APP_NAME" %>
18
+ <%= f.submit "SUBMIT", id:"contact-submit" %>
19
+ <% end %>
20
+ <% end %>
21
+ </div>
22
+ <div class="connect-wrapper">
23
+ <div class="connect-h">Name</div>
24
+ Tel: 1 101 101 1010<br>
25
+ Email: example@gmail.com, or<br><br>
26
+ <div class="connect-h">Address</div>
27
+ 101 10th Street NW<br>
28
+ Kansas City KA, 10101
29
+ </div>
30
+ </div>
31
+ <br><br>
32
+
33
+ <%= render 'APP_NAME/pages/footer' %>
@@ -0,0 +1 @@
1
+ $("#contact-form").html("Thanks for your message. We'll respond shortly.");
data/lib/edgy_app.rb ADDED
@@ -0,0 +1,183 @@
1
+ require "rails/generators"
2
+ require "fileutils"
3
+
4
+ class EdgyApp
5
+
6
+ def self.create_file(template, new_file_path, name, domain)
7
+ path_template = "/home/greg/edgy_app/lib/#{template}"
8
+ template = File.new(path_template)
9
+ new = File.new(new_file_path, "w")
10
+ template.close
11
+ FileUtils.cp(template, new)
12
+ new.close
13
+
14
+ #insert name
15
+ content = File.read(new_file_path)
16
+ new_content = content.gsub("APP_NAME", name).gsub("APP_CAMEL", name.capitalize).gsub("DOMAIN_NAME", domain)
17
+ File.open(new_file_path, "w") {|file| file.puts new_content }
18
+ end
19
+
20
+ def self.new
21
+ require "fileutils"
22
+
23
+ print "Enter snake_case name of new app: "
24
+ @name = gets.chomp.to_s.downcase
25
+ print "Enter domain name including TLD (eg 'example.xyz'): "
26
+ @domain = gets.chomp.to_s.downcase
27
+ print "Enable email? (y/n): "
28
+ @email = gets.chomp.to_s
29
+ if @email.to_s.downcase != "y"
30
+ @email = false
31
+ else
32
+ @email = true
33
+ end
34
+ print "Enable users? (y/n): "
35
+ @user = gets.chomp.to_s
36
+ if @user.to_s.downcase != "y"
37
+ @user = false
38
+ else
39
+ @user = true
40
+ end
41
+ print "Business address? (n/type address): "
42
+ @address = gets.chomp.to_s
43
+ if @address.to_s.downcase == "n"
44
+ @address = false
45
+ end
46
+
47
+ #CONTROLLER
48
+ system "mkdir app/controllers/#{@name}"
49
+ filename = "pages_controller.rb"
50
+ new_file_path = "app/controllers/#{@name}/#{filename}"
51
+ create_file(filename, new_file_path, @name, @domain)
52
+ print "Created #{new_file_path}\n"
53
+
54
+ #VIEWS
55
+ system "mkdir app/views/#{@name}"
56
+ system "mkdir app/views/#{@name}/pages"
57
+ #home
58
+ filename = "home.html.erb"
59
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
60
+ create_file(filename, new_file_path, @name, @domain)
61
+ print "Created #{new_file_path}\n"
62
+
63
+ #header
64
+ filename = "_header.html.erb"
65
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
66
+ create_file(filename, new_file_path, @name, @domain)
67
+ print "Created #{new_file_path}\n"
68
+
69
+ #footer
70
+ filename = "_footer.html.erb"
71
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
72
+ create_file(filename, new_file_path, @name, @domain)
73
+ content = File.read(new_file_path)
74
+ if @address == false
75
+ new_contents = content.gsub("EDGY_APP INSERT_MAP", "<%= image_tag '#{@name}/Logo.png', class:'footer-logo' %>")
76
+ else
77
+ new_contents = content.gsub("EDGY_APP INSERT_MAP", "\t\t<div class='map-h'>#{@address}</div>\n\t\t<iframe class='footer-map'\n\t\t\t
78
+ src='https://www.google.com/maps/embed/v1/place?key=\#{google_api_key}&q=#{@address}'
79
+ allowfullscreen>\n\t\t</iframe>")
80
+ end
81
+ File.open(new_file_path, "w") {|file| file.puts new_contents }
82
+ print "Created #{new_file_path}\n"
83
+
84
+ #about
85
+ filename = "about.html.erb"
86
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
87
+ create_file(filename, new_file_path, @name, @domain)
88
+ print "Created #{new_file_path}\n"
89
+
90
+ #contact
91
+ filename = "contact.html.erb"
92
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
93
+ create_file(filename, new_file_path, @name, @domain)
94
+ print "Created #{new_file_path}\n"
95
+
96
+ #contact_form
97
+ filename = "contact_form.js.erb"
98
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
99
+ create_file(filename, new_file_path, @name, @domain)
100
+ print "Created #{new_file_path}\n"
101
+
102
+ #sitemap
103
+ filename = "sitemap.xml"
104
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
105
+ create_file(filename, new_file_path, @name, @domain)
106
+ print "Created #{new_file_path}\n"
107
+
108
+ #readme
109
+ filename = "readme.txt"
110
+ new_file_path = "app/views/#{@name}/pages/#{filename}"
111
+ create_file(filename, new_file_path, @name, @domain)
112
+ print "Created #{new_file_path}\n"
113
+
114
+
115
+ #STYLESHEET
116
+ filename = "stylesheet.css.scss"
117
+ new_file_path = "app/assets/stylesheets/#{@name}.css.scss"
118
+ create_file(filename, new_file_path, @name, @domain)
119
+ print "Created #{new_file_path}\n"
120
+
121
+ #ROUTES
122
+ @completed = false
123
+ tempfile = File.open("routes.tmp", 'w')
124
+ f = File.new("config/routes.rb")
125
+ f.each do |line|
126
+ if (@completed == false) && (["\t", " "].include? line[0])
127
+ @completed = true
128
+ tempfile << "\n"
129
+ tempfile << "\t##{@name.upcase}\n"
130
+ tempfile << "\t#constraints domain: '#{@domain}' do\n"
131
+ tempfile << "\tconstraints domain: 'localhost' do\n"
132
+ tempfile << "\t\troot '#{@name}/pages#home', as: '#{@name}_root'\n"
133
+ tempfile << "\t\tget 'about' => '#{@name}/pages#about', as: '#{@name}_about'\n"
134
+ tempfile << "\t\tget 'contact' => '#{@name}/pages#contact', as: '#{@name}_contact'\n"
135
+ tempfile << "\t\tpost 'contact_form' => '#{@name}/pages#contact_form', as: '#{@name}_contact_form'\n"
136
+ tempfile << "\t\tget 'terms' => '#{@name}/pages#terms', as: '#{@name}_terms'\n"
137
+ tempfile << "\t\tget 'privacy' => '#{@name}/pages#privacy', as: '#{@name}_privacy'\n"
138
+ tempfile << "\t\tget 'sitemap.xml' => '#{@name}/pages#sitemap', defaults: {format: 'xml'}\n"
139
+ tempfile << "\tend\n"
140
+ tempfile << "\n"
141
+ tempfile << line
142
+ else
143
+ tempfile << line
144
+ end
145
+ end
146
+ f.close
147
+ tempfile.close
148
+ FileUtils.mv("routes.tmp", "config/routes.rb")
149
+ print "Updated routes.rb\n"
150
+
151
+ #MANIFEST.JS
152
+ File.open('app/assets/config/manifest.js', 'a') { |f| f.write("\n//= link #{@name}.css") } #appends line
153
+ print "Updated manifest.js\n"
154
+
155
+ #USERS
156
+ if @user == "not yet"
157
+ @completed = false
158
+ tempfile = File.open("user.tmp", 'w')
159
+ f = File.new("app/models/user.rb")
160
+ f.each do |line|
161
+ tempfile << line.gsub("]#edgy_app insert", ", #{@name}]#edgy_app insert")
162
+ end
163
+ f.close
164
+ tempfile.close
165
+ FileUtils.mv("user.tmp", "app/models/user.rb")
166
+ print "Updated app/models/user.rb\n"
167
+ end
168
+
169
+ #IMAGES
170
+ system "mkdir app/assets/images/#{@name}"
171
+ print "Created app/assets/images/#{@name}\n"
172
+
173
+ #SUCCESS
174
+ print "Generated #{@name}!\n\nYou still need to:\n"
175
+ print "\t- Add a Logo.png to app/assets/images/#{@name}\n"
176
+ print "\t- Add a #{@name}.png favicon to assets/images/favicons\n"
177
+ print "\t- Update the three arrays in dev_helper.rb\n\n"
178
+ print "When developing, remember to update the default app in the following files:\n"
179
+ print "\t- routes.rb\n\t- application.html\n\t- sessions_helper.rb?\n"
180
+ print "💧\n"
181
+
182
+ end
183
+ end
data/lib/home.html.erb ADDED
@@ -0,0 +1,10 @@
1
+ <% content_for :title do %>APP_CAMEL<% end %>
2
+
3
+ <%= render 'APP_NAME/pages/header' %>
4
+
5
+ <div id='hero' style='background-image: url(<%= image_path "background4.png" %>)'>
6
+ <h1>APP_CAMEL</h1>
7
+ <h2>APP_CAMEL</h2>
8
+ </div>
9
+
10
+ <%= render 'APP_NAME/pages/footer' %>
@@ -0,0 +1,17 @@
1
+ class APP_CAMEL::PagesController < ApplicationController
2
+
3
+ def contact_form
4
+ @contact = Contact.new(contact_params)
5
+ @contact.save
6
+ GeneralMailer.contact(@contact.id, "team@theedgeworkshop.com",
7
+ "New Message On DOMAIN_NAME", "New Message On DOMAIN_NAME").deliver
8
+ flash[:thanks] = "true"
9
+ redirect_to APP_NAME_contact_path
10
+ end
11
+
12
+ private
13
+
14
+ def contact_params
15
+ params.require(:contact).permit(:name, :contact_info, :subject, :text, :app)
16
+ end
17
+ end
data/lib/readme.txt ADDED
@@ -0,0 +1,9 @@
1
+ You still need to:
2
+
3
+ [] Add a APP_NAME.png favicon to assets/images/favicons
4
+ [] Update the three configs in dev_helper.rb
5
+
6
+ Update default app for localhost in:
7
+ - routes.rb
8
+ - sessions_helper.rb
9
+ - application.html
data/lib/sitemap.xml ADDED
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" >
3
+ <url>
4
+ <loc>https://www.DOMAIN_NAME/</loc>
5
+ <lastmod>DATE_NOW</lastmod>
6
+ <changefreq>monthly</changefreq>
7
+ <priority>1.0</priority>
8
+ </url>
9
+ <url>
10
+ <loc>https://www.DOMAIN_NAME/about</loc>
11
+ <lastmod>DATE_NOW</lastmod>
12
+ <changefreq>monthly</changefreq>
13
+ <priority>0.6</priority>
14
+ </url>
15
+ <url>
16
+ <loc>https://www.DOMAIN_NAME/contact</loc>
17
+ <lastmod>DATE_NOW</lastmod>
18
+ <changefreq>monthly</changefreq>
19
+ <priority>0.6</priority>
20
+ </url>
21
+ <url>
22
+ <loc>https://www.DOMAIN_NAME/terms</loc>
23
+ <lastmod>DATE_NOW</lastmod>
24
+ <changefreq>monthly</changefreq>
25
+ <priority>0.1</priority>
26
+ </url>
27
+ <url>
28
+ <loc>https://www.DOMAIN_NAME/privacy</loc>
29
+ <lastmod>DATE_NOW</lastmod>
30
+ <changefreq>monthly</changefreq>
31
+ <priority>0.1</priority>
32
+ </url>
33
+ </urlset>
@@ -0,0 +1,249 @@
1
+ $blue: #3373EA;
2
+
3
+ html {
4
+ height: 100%;
5
+ max-height: auto;
6
+ width: 100%;
7
+ text-align: center;
8
+ font-family: "Hevletica-Neue", "Arial", sans-serif;
9
+ font-family: 'Lustria', serif;
10
+ font-family: 'Overlock', cursive;
11
+ font-family: 'Spinnaker', sans-serif;
12
+ font-family: 'Pacifico', cursive;
13
+ font-family: 'Lato', sans-serif;
14
+ font-family: 'Roboto', sans-serif;
15
+ //font-family: 'Montserrat', sans-serif;
16
+ //font-family: 'Fira Sans', sans-serif;
17
+ }
18
+
19
+ body {
20
+ margin: 0;
21
+ top: 0;
22
+ height: 100%;
23
+ min-width: 100%;
24
+ margin: 0;
25
+ position: relative;
26
+ }
27
+
28
+ .container {
29
+ height: 100%;
30
+ width: 100%;
31
+ position: absolute;
32
+ top: 0;
33
+ z-index: 1;
34
+ }
35
+
36
+ .header {
37
+ position: relative;
38
+ width: 100%;
39
+ height: 70px;
40
+ background: white;
41
+ box-shadow: 0 0 6px 1px rgba(0,0,0,0.4);
42
+ padding-top: 6px;
43
+ box-sizing: border-box;
44
+ z-index: 9;
45
+ #header-logo {
46
+ position: absolute;
47
+ height: 80%;
48
+ top: 0;
49
+ left: 5%;
50
+ }
51
+ .header-menu-desktop {
52
+ position: relative;
53
+ display: inline-block;
54
+ vertical-align: top;
55
+ @media screen and (max-width: 800px){display: none;}
56
+ .header-link {
57
+ position: relative;
58
+ display: inline-block;
59
+ vertical-align: middle;
60
+ font-size: 25px;
61
+ text-decoration: none;
62
+ color: black;
63
+ margin: 10px;
64
+ }
65
+ }
66
+ #open-menu-mobile {
67
+ position: absolute;
68
+ height: 90%;
69
+ top: 0;
70
+ right: 5%;
71
+ cursor: pointer;
72
+ @media screen and (min-width: 800px){display: none;}
73
+ }
74
+ }
75
+ #header-menu-mobile {
76
+ position: fixed;
77
+ left:0;right:0;top:0;bottom:0;
78
+ z-index: 999;
79
+ background: rgba(0,0,0,0.8);
80
+ display: none;
81
+ padding: 10% 0;
82
+ box-sizing: border-box;
83
+ @media screen and (min-width: 800px){width: 0;}
84
+ #close-header-menu-mobile {
85
+ position: absolute;
86
+ left:0;right:0;top:0;bottom:0;
87
+ }
88
+ .header-link {
89
+ position: relative;
90
+ display: inline-block;
91
+ padding: 15px;
92
+ color: white;
93
+ z-index: 2;
94
+ text-decoration: none;
95
+ font-size: 20px;
96
+ transition: all 0.5s;
97
+ }
98
+ .header-link:hover {color: #2B67FF;}
99
+ }
100
+
101
+
102
+ #hero {
103
+ position: relative;
104
+ width: 100%;
105
+ height: 300px;
106
+ padding: 50px 20px 20px 20px;
107
+ box-sizing: border-box;
108
+ background-image: cover;
109
+ background-position: center center;
110
+ }
111
+
112
+
113
+
114
+
115
+ #contact-form {
116
+ position: relative;
117
+ display: inline-block;
118
+ vertical-align: top;
119
+ width: 600px;
120
+ max-width: 100%;
121
+ text-align: left;
122
+ padding: 25px;
123
+ -moz-box-sizing: border-box;
124
+ -webkit-box-sizing: border-box;
125
+ box-sizing: border-box;
126
+ background-color: #E0E0E0;
127
+ .big {
128
+ position: relative;
129
+ display: inline-block;
130
+ font-weight: bold;
131
+ font-size: 20px;
132
+ padding: 90px 0;
133
+ width: 100%;
134
+ text-align: center;
135
+ }
136
+ .contact-field {
137
+ position: relative;
138
+ width: 100%;
139
+ max-width: 100%;
140
+ resize: vertical;
141
+ padding: 10px;
142
+ margin: 5px auto;
143
+ -moz-box-sizing: border-box;
144
+ -webkit-box-sizing: border-box;
145
+ box-sizing: border-box;
146
+ -moz-border-radius: 5px;
147
+ -webkit-border-radius: 5px;
148
+ border-radius: 5px;
149
+ border: none;
150
+ outline: none;
151
+ font-family: 'Arial', sans-serif;
152
+ font-size: 20px;
153
+ }
154
+ #contact-submit {
155
+ position: relative;
156
+ background-color: $blue;
157
+ -moz-border-radius: 5px;
158
+ -webkit-border-radius: 5px;
159
+ border-radius: 5px;
160
+ padding: 10px 30px;
161
+ border: none;
162
+ outline: none;
163
+ color: white;
164
+ font-weight: bold;
165
+ font-size: 20px;
166
+ cursor: pointer;
167
+ }
168
+ }
169
+ .connect-wrapper {
170
+ position: relative;
171
+ display: inline-block;
172
+ vertical-align: top;
173
+ width: 300px;
174
+ padding: 25px;
175
+ font-size: 16px;
176
+ -moz-box-sizing: border-box;
177
+ -webkit-box-sizing: border-box;
178
+ box-sizing: border-box;
179
+ text-align: left;
180
+ .connect-h {font-size: 120%;}
181
+ }
182
+
183
+
184
+
185
+ #footer {
186
+ position: relative;
187
+ width: 100%;
188
+ background: #232323;
189
+ color: white;
190
+ padding: 40px 20px 20px 20px;
191
+ box-sizing: border-box;
192
+ border-top: 1px #9F9EFF solid;
193
+ @media screen and (max-width: 800px){font-size: 80%}
194
+ .footer-menu {
195
+ position: relative;
196
+ display: inline-block;
197
+ width: 50%;
198
+ text-align: center;
199
+ @media screen and (max-width: 800px){width: 100%;}
200
+ .footer-menu-link {
201
+ position: relative;
202
+ display: inline-block;
203
+ margin: 10px 5px;
204
+ color: white;
205
+ text-decoration: none;
206
+ font-size: 20px;
207
+ font-weight: bold;
208
+ }
209
+ .map-h {position: relative;margin: auto;width: 300px;}
210
+ .footer-map {
211
+ position: relative;
212
+ display: block;
213
+ margin: auto;
214
+ width: 300px;
215
+ height: 200px;
216
+ }
217
+ .footer-logo {
218
+ position: relative;
219
+ height: 80px;
220
+ }
221
+ }
222
+ .footer-social {
223
+ position: relative;
224
+ display: inline-block;
225
+ vertical-align: top;
226
+ width: 40%;
227
+ text-align: center;
228
+ @media screen and (max-width: 800px){width: 100%;margin-top: 17px;}
229
+ .social-wrapper {
230
+ position: relative;
231
+ display: inline-block;
232
+ width: 46px;
233
+ height: 30px;
234
+ overflow-x: visible;
235
+ text-align: center;
236
+ padding: 20px 12px;
237
+ margin: 0 5px;
238
+ border-radius: 50%;
239
+ background: white;
240
+ .social {
241
+ height: 30px;
242
+ position: relative;
243
+ display: inline-block;
244
+ margin: auto;
245
+ }
246
+ }
247
+ }
248
+ .footer-c {position: relative;width: 100%;margin-top: 50px;font-size: 80%;}
249
+ }
metadata ADDED
@@ -0,0 +1,53 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: edgy_app
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Greg Kiss
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-03-02 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: team@theedgeworkshop.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/_footer.html.erb
20
+ - lib/_header.html.erb
21
+ - lib/about.html.erb
22
+ - lib/contact.html.erb
23
+ - lib/contact_form.js.erb
24
+ - lib/edgy_app.rb
25
+ - lib/home.html.erb
26
+ - lib/pages_controller.rb
27
+ - lib/readme.txt
28
+ - lib/sitemap.xml
29
+ - lib/stylesheet.css.scss
30
+ homepage: https://www.theedgeworkshop.com/dev/edgy_app_gem
31
+ licenses:
32
+ - MIT
33
+ metadata: {}
34
+ post_install_message:
35
+ rdoc_options: []
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirements: []
49
+ rubygems_version: 3.1.2
50
+ signing_key:
51
+ specification_version: 4
52
+ summary: Generate new apps in a superapp using Edge architecture.
53
+ test_files: []