spar 1.0 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,14 +1,38 @@
1
1
  # Introduction
2
2
 
3
- Spar, the *Single Page Application Rocketship*, is an opinionated framework that aims to ease single-page web-app development by addressing major challenges:
3
+ Spar is an opinionated framework that makes developing and deploying single-page web apps and static websites using modern front-end technology like SASS, Haml, and Coffeescript a cinch.
4
4
 
5
- * Asset organization
6
- * Compilation pipeline
7
- * Build & deployment support
5
+ We created Spar to decouple front-end development and deployment from specific backend languages like ruby, python, or Java.
8
6
 
9
- Additionally, Spar provides templates & example projects for either a bare-bones project, or one with some of our favorite tools pre-included.
7
+ Who should use Spar?
8
+
9
+ * Developers who have completely decoupled web applications (i.e. Old New Twitter) who want to do front-end development with state of the art tools like Coffeescript and SASS independent of their backend API stack.
10
+
11
+ * Designers who love using modern technology like SASS, Less, and Haml but don't feel comfortable running and deploying apps in frameworks like Rails or Django.
12
+
13
+ * Anyone who needs to make simple static websites and host them as static files on S3 (i.e. for really really cheap).
10
14
 
11
- Under the hood, Spar is a Sprockets-based, Rails-derived project. Spar uses Sprockets to provide a powerful asset-pipeline, while stripping out legacy web-app support and introducing tools & patterns specific to single-page apps.
15
+ Under the hood, Spar uses Rack and Sprockets to provide a powerful asset pipeline similar to Rail's asset pipeline. If you're familiar with the Rail's asset pipeline, you'll feel right at home with Spar.
16
+
17
+ What makes Spar different?
18
+
19
+ * Intepret configuration variables in your assets. For instance, setup an `api_url` variable that's different for your development vs. production environments.
20
+
21
+ * No server-side language knowledge necessary. If you know how to type a few commands into the terminal you'll be good to go.
22
+
23
+ * Built in support for CSS, Sass, Less, HTML, Haml, Javascript, Coffeescript, Compass, Haml-Coffeescript templating, and more.
24
+
25
+ If you run into issues, please use the [issues page](https://github.com/GoBoundless/spar/issues) to report them and we'll help you out.
26
+
27
+ # Example Spar Applications
28
+
29
+ For your reference, and to build on top of, we've created two example applications using Spar.
30
+
31
+ The first is the quintessential TODO application as popularized by [addyosmani](http://addyosmani.github.com/todomvc/). The second, is a bootstrap application containing some of our favorite tools to kick-start the pretty (jQuery, Backbone, and Twitter Bootstrap).
32
+
33
+ Both can be found at our [spar-examples](https://github.com/GoBoundless/spar-examples) repo.
34
+
35
+ You can also see a demo of the TODO app [here](http://spar-demo-todo.boundless.com).
12
36
 
13
37
  # Requirements
14
38
 
@@ -161,14 +185,6 @@ Or, in CSS:
161
185
  ```
162
186
  You only need to do this for additional root-level Javascript and CSS based files, as Spar deploys all images, pages, and static files automatically.
163
187
 
164
- # Example Spar Applications
165
-
166
- For your reference, and to build on top of, we've created two example applications using Spar.
167
-
168
- The first is the quintessential TODO application as popularized by [addyosmani](http://addyosmani.github.com/todomvc/). The second, is a bootstrap application containing some of our favorite tools to kick-start the pretty (jQuery, Backbone, and Twitter Bootstrap).
169
-
170
- Both can be found at our [spar-examples](https://github.com/BoundlessLearning/spar-examples) repo.
171
-
172
188
  # Deploying Your Spar App
173
189
 
174
190
  Spar supports three different deployment methods out of the box:
@@ -216,56 +232,16 @@ production:
216
232
  deploy_bucket: "mysite.test.com"
217
233
  ```
218
234
 
219
- You'll need to enter your own credentials. You can find your S3 credentials on the [AWS Security Credentials](https://portal.aws.amazon.com/gp/aws/securityCredentials) page.
220
-
221
- Next, you'll need visit the [AWS S3 Console](https://console.aws.amazon.com/s3/home) and create a bucket to host your app. We suggest using the same as your fully qualified domain name. You should not use this bucket for anything else.
222
-
223
- ![click here](http://spar-screenshots.s3.amazonaws.com/s3_click_here.png)
224
-
225
- ![create bucket](http://spar-screenshots.s3.amazonaws.com/s3_create_bucket.png)
226
-
227
- Next, you'll need to turn on [S3 Website Hosting](http://aws.typepad.com/aws/2011/02/host-your-static-website-on-amazon-s3.html) in the S3 console.
228
-
229
- ![bucket properties](http://spar-screenshots.s3.amazonaws.com/s3_bucket_properties.png)
230
-
231
- ![enable website](http://spar-screenshots.s3.amazonaws.com/s3_enable_website.png)
232
-
233
- You'll need to create a new `CNAME` record. How this works is up to your hosting provider, but it should look something like this.
234
-
235
- app.example.com. IN CNAME app.example.com.s3-website-us-east-1.amazonaws.com.
236
-
237
- ### About Logging
238
-
239
- You'll probably want to be able to log requests to your site. Even though your app uses cutting edge webscale tools like Airbrake, Loggly, Google Analytics, MixPanel, et al, eventually you'll want to know how many people hit you with IE6 or NoScript, and you gave them the middle finger.
240
-
241
- Create a bucket log using the [AWS S3 Console](https://console.aws.amazon.com/s3/home). Give it a name like `logs.example.com` and update either your app's CloudFront distribution or your app's S3 bucket to write its log files to this log bucket.
242
-
243
- ![enable logging](http://spar-screenshots.s3.amazonaws.com/s3_enable_logging.png)
235
+ Now Spar will dpeloy your app directly to an S3 bucket. To learn more and see how to setup an S3 bucket as a website, see the [S3 Deployment Wiki Page](https://github.com/GoBoundless/spar/wiki/S3-Deployment)
244
236
 
245
237
 
246
238
  ## CloudFront Deployment
247
239
 
248
- Cloudfront deployment is very similar to S3 deployment, but you need to add a `cloudfront_distribution` property to your config file:
249
-
250
- ```yaml
251
- production:
252
- deploy_strategy: cloudfront
253
- aws_key: "my_access_key"
254
- aws_secret: "my+super+secret+access+key"
255
- deploy_bucket: "mysite.test.com"
256
- cloudfront_distribution: "distribution+id"
257
- ```
258
- Cloudfront will turn your fast site into a *really* fast site. From the [AWS CloudFront Console](https://console.aws.amazon.com/cloudfront/home), create a new distribution *with the website form of your bucket name as the origin* and save the ID in your config.yml.
259
-
260
- Take note of the **Domain Name** field (something like `d242ood0j0gl2v.cloudfront.net`). You will need to replace the CNAME you created earlier.
261
-
262
- app.example.com. IN CNAME d242ood0j0gl2v.cloudfront.net.
263
-
264
- Now, every time you deploy, Spar will automatically issue CloudFront invalidation requests for index.html (and anything else without a hash value). CloudFront invalidations usually take around 8 minutes, but they can take quite a bit lot longer when Amazon is having problems.
240
+ For details on Cloudfront deploys please see the [Cloudfront Deployment Wiki Page](https://github.com/GoBoundless/spar/wiki/Cloudfront-Deployment)
265
241
 
266
242
  # Issues & Bugs
267
243
 
268
- Please use our Github [issue tracker](https://github.com/BoundlessLearning/spar/issues) for Spar.
244
+ Please use our Github [issue tracker](https://github.com/GoBoundless/spar/issues) for Spar.
269
245
 
270
246
  # License
271
247
 
@@ -2,6 +2,11 @@ require 'rack'
2
2
  require 'pathname'
3
3
  require 'sprockets'
4
4
  require 'haml'
5
+ require 'sass'
6
+ require 'sprockets-sass'
7
+ require 'compass'
8
+ require 'coffee-script'
9
+ require 'haml_coffee_assets'
5
10
 
6
11
  module Spar
7
12
  autoload :Version, 'spar/version'
@@ -71,6 +76,9 @@ module Spar
71
76
  @sprockets ||= begin
72
77
  env = Sprockets::Environment.new(root)
73
78
 
79
+ HamlCoffeeAssets.config.namespace = "window.HAML"
80
+ HamlCoffeeAssets.config.escapeHtml = false
81
+
74
82
  if settings['compress']
75
83
  env.js_compressor = Compressor::JS.new
76
84
  env.css_compressor = Compressor::CSS.new
@@ -83,7 +91,7 @@ module Spar
83
91
  env.append_path(root.join('vendor', child_folder))
84
92
  Gem.loaded_specs.each do |name, gem|
85
93
  env.append_path(File.join(gem.full_gem_path, 'vendor', 'assets', child_folder))
86
- env.append_path(File.join(gem.full_gem_path, 'app', 'assets', 'assets', child_folder))
94
+ env.append_path(File.join(gem.full_gem_path, 'app', 'assets', child_folder))
87
95
  end
88
96
  end
89
97
 
@@ -94,8 +102,6 @@ module Spar
94
102
  end
95
103
 
96
104
  env.register_engine '.haml', Tilt::HamlTemplate
97
- env.register_engine '.md', Tilt::BlueClothTemplate
98
- env.register_engine '.textile', Tilt::RedClothTemplate
99
105
 
100
106
  env.register_postprocessor 'text/css', Spar::DirectiveProcessor
101
107
  env.register_postprocessor 'application/javascript', Spar::DirectiveProcessor
@@ -26,10 +26,9 @@ module Spar
26
26
  desc 'deploy', 'Deploy the project.'
27
27
 
28
28
  def deploy(environment='production')
29
- say "Deploying: #{Spar.root}"
30
-
31
29
  Spar.environment = environment
32
-
30
+ say "Deploying #{Spar.root} to the #{Spar.environment} environment"
31
+
33
32
  if strategy = Spar.settings['deploy_strategy']
34
33
  require "spar/deployers/#{strategy}_deployer"
35
34
 
@@ -44,6 +43,7 @@ module Spar
44
43
  desc 'version', 'Show the current version of Spar'
45
44
 
46
45
  def version
46
+ require 'spar/version'
47
47
  puts "Spar Version #{Spar::VERSION}"
48
48
  end
49
49
 
@@ -42,16 +42,18 @@ module Spar
42
42
  }
43
43
  elsif logical_path =~ /\w+\.(?!js|css).+/
44
44
  return {
45
- :digest => Spar.settings['digests'],
45
+ :digest => Spar.settings['digest'],
46
46
  :cache_control => Spar.settings['cache_control']
47
47
  }
48
48
  elsif file_path = Spar.sprockets.resolve(logical_path)
49
49
  file = File.open(file_path, "rb").read
50
50
  if header = file[Sprockets::DirectiveProcessor::HEADER_PATTERN, 0]
51
- if directive = header.lines.peek[Sprockets::DirectiveProcessor::DIRECTIVE_PATTERN, 1]
52
- name, *args = Shellwords.shellwords(directive)
53
- if name == 'deploy'
54
- return deploy_directive_info(*args)
51
+ header.lines.each do |header|
52
+ if directive = header[Sprockets::DirectiveProcessor::DIRECTIVE_PATTERN, 1]
53
+ name, *args = Shellwords.shellwords(directive)
54
+ if name == 'deploy'
55
+ return deploy_directive_info(*args)
56
+ end
55
57
  end
56
58
  end
57
59
  end
@@ -65,7 +67,7 @@ module Spar
65
67
  options[arg.split(':')[0]] = arg.split(':')[1]
66
68
  end
67
69
  {
68
- :digest => Spar.settings['digests'],
70
+ :digest => Spar.settings['digest'],
69
71
  :cache_control => options['cache_control'] || Spar.settings['cache_control']
70
72
  }
71
73
  end
@@ -1,4 +1,5 @@
1
1
  require 'cloudfront-invalidator'
2
+ require 'spar/deployers/s3_deployer'
2
3
 
3
4
  class CloudfrontDeployer < S3Deployer
4
5
 
@@ -30,4 +31,4 @@ class CloudfrontDeployer < S3Deployer
30
31
  super
31
32
  end
32
33
 
33
- end
34
+ end
@@ -319,9 +319,6 @@ TEMPLATE = <<-HTML # :nodoc:
319
319
  </table>
320
320
  <div class="clear"></div>
321
321
  </div> <!-- /RACK ENV -->
322
-
323
- <p id="explanation">You're seeing this error because you have
324
- enabled the <code>show_exceptions</code> setting.</p>
325
322
  </div> <!-- /WRAP -->
326
323
  </body>
327
324
  </html>
@@ -5,7 +5,7 @@ default:
5
5
 
6
6
  development:
7
7
  debug: true
8
-
8
+
9
9
  production:
10
10
  debug: false
11
11
  digest: true
@@ -1,11 +1,18 @@
1
- !!! Strict
1
+ !!! 5
2
2
  %html
3
3
  %head
4
- %title Spar App
4
+ %title New Spar App
5
5
  [{ stylesheet_link_tag(application) }]
6
+
6
7
  %body
7
- %h1
8
- Nice app!
9
- %h2
10
- Point LiveReload to the directory of this project if you want to use it. No extensions or JS required.
8
+ #wrap
9
+ %img{src: "[{ path_to(spar.png) }]", width: 200}
10
+ #summary
11
+ %h1 Spar
12
+ %h2 Welcome to your new Spar app.
13
+ %p
14
+ If you have any questions, please checkout out the
15
+ %a{href: "https://github.com/GoBoundless/spar", target: "_blank"} README
16
+ on Github. Have Fun!
17
+
11
18
  [{ javascript_include_tag(application) }]
@@ -1,16 +1,22 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1
+ <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Spar App</title>
4
+ <title>New Spar App</title>
5
5
  [{ stylesheet_link_tag(application) }]
6
6
  </head>
7
7
  <body>
8
- <h1>
9
- Nice app!
10
- </h1>
11
- <h2>
12
- Point LiveReload to the directory of this project if you want to use it. No extensions or JS required.
13
- </h2>
8
+ <div id='wrap'>
9
+ <img src='[{ path_to(spar.png) }]' width='200' />
10
+ <div id='summary'>
11
+ <h1>Spar</h1>
12
+ <h2>Welcome to your new Spar app.</h2>
13
+ <p>
14
+ If you have any questions, please checkout out the
15
+ <a href='https://github.com/GoBoundless/spar' target='_blank'>README</a>
16
+ on Github. Have Fun!
17
+ </p>
18
+ </div>
19
+ </div>
14
20
  [{ javascript_include_tag(application) }]
15
21
  </body>
16
- </html>
22
+ </html>
@@ -13,6 +13,47 @@
13
13
  *= require_tree .
14
14
  */
15
15
 
16
+ * {
17
+ margin: 0;
18
+ padding: 0;
19
+ border: 0;
20
+ outline: 0; }
21
+
22
+ html {
23
+ min-height: 100%;
24
+ height: 100%; }
25
+
16
26
  body {
27
+ min-height: 100%;
28
+ height: 100%;
29
+ background: #eeeeee;
30
+ margin: 0;
31
+ padding: 0;
32
+ font-family: "Lucida Grande", "Lucida Sans Unicode", "Garuda"; }
33
+
34
+ #wrap {
35
+ min-height: 100%;
36
+ height: 100%;
37
+ width: 1000px;
17
38
  background: white;
18
- }
39
+ margin: 0 auto;
40
+ padding: 0 50px 0 50px;
41
+ border-left: 1px solid #dddddd;
42
+ border-right: 1px solid #dddddd;
43
+ text-align: center; }
44
+
45
+ img {
46
+ margin-top: 80px; }
47
+
48
+ a {
49
+ color: #be292b; }
50
+
51
+ h1 {
52
+ margin: 0 0 0.1em 0;
53
+ font-size: 72px;
54
+ color: #be292b; }
55
+
56
+ h2 {
57
+ margin: 0 0 1em 0;
58
+ font-size: 22px;
59
+ color: #333333; }
@@ -11,5 +11,47 @@
11
11
  //= require_self
12
12
  //= require_tree .
13
13
 
14
+ *
15
+ margin: 0
16
+ padding: 0
17
+ border: 0
18
+ outline: 0
19
+
20
+ html
21
+ min-height: 100%
22
+ height: 100%
23
+
14
24
  body
15
- background: white
25
+ min-height: 100%
26
+ height: 100%
27
+ background: #EEEEEE
28
+ margin: 0
29
+ padding: 0
30
+ font-family: "Lucida Grande", "Lucida Sans Unicode", "Garuda"
31
+
32
+ #wrap
33
+ min-height: 100%
34
+ height: 100%
35
+ width: 1000px
36
+ background: #FFFFFF
37
+ margin: 0 auto
38
+ padding: 0 50px 0 50px
39
+ border-left: 1px solid #DDDDDD
40
+ border-right: 1px solid #DDDDDD
41
+ text-align: center
42
+
43
+ img
44
+ margin-top: 80px
45
+
46
+ a
47
+ color: #BE292B
48
+
49
+ h1
50
+ margin: 0 0 0.1em 0
51
+ font-size: 72px
52
+ color: #BE292B
53
+
54
+ h2
55
+ margin: 0 0 1em 0
56
+ font-size: 22px
57
+ color: #333333
@@ -72,7 +72,7 @@ module Spar
72
72
  end
73
73
 
74
74
  def digest_for(logical_path, options={})
75
- if Spar.settings['digests'] && !Spar.settings['debug'] && asset = Spar.sprockets.find_asset(logical_path, options)
75
+ if Spar.settings['digest'] && !Spar.settings['debug'] && asset = Spar.sprockets.find_asset(logical_path, options)
76
76
  return asset.digest_path
77
77
  end
78
78
  return logical_path
@@ -1,3 +1,3 @@
1
1
  module Spar
2
- VERSION = "1.0"
2
+ VERSION = "1.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spar
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: 1.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-26 00:00:00.000000000 Z
12
+ date: 2012-09-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
@@ -197,11 +197,36 @@ dependencies:
197
197
  - - ! '>='
198
198
  - !ruby/object:Gem::Version
199
199
  version: 2.6.0
200
+ - !ruby/object:Gem::Dependency
201
+ name: sprockets-sass
202
+ requirement: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ~>
206
+ - !ruby/object:Gem::Version
207
+ version: '0.9'
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: 0.9.1
211
+ type: :runtime
212
+ prerelease: false
213
+ version_requirements: !ruby/object:Gem::Requirement
214
+ none: false
215
+ requirements:
216
+ - - ~>
217
+ - !ruby/object:Gem::Version
218
+ version: '0.9'
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: 0.9.1
200
222
  - !ruby/object:Gem::Dependency
201
223
  name: compass
202
224
  requirement: !ruby/object:Gem::Requirement
203
225
  none: false
204
226
  requirements:
227
+ - - ~>
228
+ - !ruby/object:Gem::Version
229
+ version: '0.12'
205
230
  - - ! '>='
206
231
  - !ruby/object:Gem::Version
207
232
  version: 0.12.2
@@ -210,20 +235,23 @@ dependencies:
210
235
  version_requirements: !ruby/object:Gem::Requirement
211
236
  none: false
212
237
  requirements:
238
+ - - ~>
239
+ - !ruby/object:Gem::Version
240
+ version: '0.12'
213
241
  - - ! '>='
214
242
  - !ruby/object:Gem::Version
215
243
  version: 0.12.2
216
244
  - !ruby/object:Gem::Dependency
217
- name: sprockets-sass
245
+ name: haml_coffee_assets
218
246
  requirement: !ruby/object:Gem::Requirement
219
247
  none: false
220
248
  requirements:
221
249
  - - ~>
222
250
  - !ruby/object:Gem::Version
223
- version: '0.5'
251
+ version: '1.5'
224
252
  - - ! '>='
225
253
  - !ruby/object:Gem::Version
226
- version: '0.5'
254
+ version: 1.5.1
227
255
  type: :runtime
228
256
  prerelease: false
229
257
  version_requirements: !ruby/object:Gem::Requirement
@@ -231,10 +259,10 @@ dependencies:
231
259
  requirements:
232
260
  - - ~>
233
261
  - !ruby/object:Gem::Version
234
- version: '0.5'
262
+ version: '1.5'
235
263
  - - ! '>='
236
264
  - !ruby/object:Gem::Version
237
- version: '0.5'
265
+ version: 1.5.1
238
266
  - !ruby/object:Gem::Dependency
239
267
  name: bundler
240
268
  requirement: !ruby/object:Gem::Requirement
@@ -323,22 +351,6 @@ dependencies:
323
351
  - - ! '>='
324
352
  - !ruby/object:Gem::Version
325
353
  version: 0.4.2
326
- - !ruby/object:Gem::Dependency
327
- name: test-unit
328
- requirement: !ruby/object:Gem::Requirement
329
- none: false
330
- requirements:
331
- - - ! '>='
332
- - !ruby/object:Gem::Version
333
- version: '0'
334
- type: :runtime
335
- prerelease: false
336
- version_requirements: !ruby/object:Gem::Requirement
337
- none: false
338
- requirements:
339
- - - ! '>='
340
- - !ruby/object:Gem::Version
341
- version: '0'
342
354
  - !ruby/object:Gem::Dependency
343
355
  name: mime-types
344
356
  requirement: !ruby/object:Gem::Requirement
@@ -371,22 +383,6 @@ dependencies:
371
383
  - - ! '>='
372
384
  - !ruby/object:Gem::Version
373
385
  version: '0'
374
- - !ruby/object:Gem::Dependency
375
- name: rack-livereload
376
- requirement: !ruby/object:Gem::Requirement
377
- none: false
378
- requirements:
379
- - - ! '>='
380
- - !ruby/object:Gem::Version
381
- version: '0'
382
- type: :runtime
383
- prerelease: false
384
- version_requirements: !ruby/object:Gem::Requirement
385
- none: false
386
- requirements:
387
- - - ! '>='
388
- - !ruby/object:Gem::Version
389
- version: '0'
390
386
  - !ruby/object:Gem::Dependency
391
387
  name: yui-compressor
392
388
  requirement: !ruby/object:Gem::Requirement
@@ -404,7 +400,7 @@ dependencies:
404
400
  - !ruby/object:Gem::Version
405
401
  version: '0'
406
402
  - !ruby/object:Gem::Dependency
407
- name: bluecloth
403
+ name: cloudfront-invalidator
408
404
  requirement: !ruby/object:Gem::Requirement
409
405
  none: false
410
406
  requirements:
@@ -419,9 +415,9 @@ dependencies:
419
415
  - - ! '>='
420
416
  - !ruby/object:Gem::Version
421
417
  version: '0'
422
- description: Spar uses Sprockets to provide an asset development environment very
423
- similar to the asset pipeline found in Rails. It allows you to use all the awesome
424
- features of the asset pipeline without all the heft of Rails.
418
+ description: Spar uses Rack and Sprockets to provide an asset development environment
419
+ very similar to the asset pipeline found in Rails. It also has built in deployment
420
+ tasks for deploying your entire site to AWS S3 and Cloudfront.
425
421
  email:
426
422
  - matt@boundless.com
427
423
  executables:
@@ -443,8 +439,10 @@ files:
443
439
  - lib/spar/deployers/s3_deployer.rb
444
440
  - lib/spar/directive_processor.rb
445
441
  - lib/spar/exceptions.rb
442
+ - lib/spar/generators/templates/base/app/images/spar.png
446
443
  - lib/spar/generators/templates/base/config.yml
447
444
  - lib/spar/generators/templates/base/README
445
+ - lib/spar/generators/templates/base/static/favicon.ico
448
446
  - lib/spar/generators/templates/pages/haml/app/pages/index.html.haml
449
447
  - lib/spar/generators/templates/pages/html/app/pages/index.html
450
448
  - lib/spar/generators/templates/scripts/coffee/app/javascripts/application.js.coffee
@@ -458,7 +456,7 @@ files:
458
456
  - lib/spar/tasks.rb
459
457
  - lib/spar/version.rb
460
458
  - lib/spar.rb
461
- homepage: http://github.com/BoundlessLearning/spar
459
+ homepage: http://goboundless.github.com/spar
462
460
  licenses: []
463
461
  post_install_message:
464
462
  rdoc_options: []