├── bin └── bigfoot ├── .gitignore ├── Rakefile ├── bigfoot.gemspec └── README.md /bin/bigfoot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | pkg/** 2 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'bundler' 2 | Bundler::GemHelper.install_tasks :name => 'bigfoot' 3 | -------------------------------------------------------------------------------- /bigfoot.gemspec: -------------------------------------------------------------------------------- 1 | Gem::Specification.new do |s| 2 | s.name = "bigfoot" 3 | s.version = "0.0.1" 4 | s.date = "2012-01-02" 5 | s.platform = Gem::Platform::RUBY 6 | s.authors = ["Foy Savas"] 7 | s.email = "foy@sav.as" 8 | s.homepage = "http://github.com/foysavas/bigfoot" 9 | s.summary = %q{Bigfoot is a mysterious two-legged web framework begot by giants.} 10 | s.description = %q{...} 11 | s.files = %w( Rakefile ) 12 | s.files += Dir.glob("lib/**/*") 13 | s.files += Dir.glob("bin/**/*") 14 | s.executables = %w( bigfoot ) 15 | s.require_paths = ["lib"] 16 | end 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bigfoot 2 | 3 | Bigfoot is a web framework that mimics the recurring architectural design decisions made by the largest online apps. 4 | 5 | It is built to scale by enforcing and rewarding the usage of many of the best practices that are typically adopted as an app grows. 6 | 7 | ## Major Features 8 | 9 | * Separate API and UI - There's one git repo for the API and one for the UI. Developers on either side are able to release as independently as possible. 10 | * Integration through Contract - API developers are responsible for writing up an API schema with exemplary behavior; UI developers test against this and can interact with the examples as mocked responses during development. 11 | * Service Oriented Ruby API - API developers code Ruby Rack services that in composition make up the production API. 12 | * Design Oriented Javascript UI - UI developers code up HTML templates and fetch API data using only Javascript. 13 | * Branched UI - UI developers can release multiple live versions of the UI with git branches, allowing for 14 | * Easy production demos without the need for multiple environments 15 | * Different user experiences for different users (pre-release usage, A/B testing, etc.) 16 | * Phased roll-outs of new UIs to minimize pain 17 | * Streaming Responses - UI server requests are answered with streamed responses, allowing for the fastest loading of resources. 18 | * Plain Old Server-Side Rendering for Initial Requests 19 | * Asynchronous Client-Side Rendering for Subsequent Requests 20 | * Division of UI into Pagelet-like Views 21 | * Automatic Versioning and Bundling of UI Assets 22 | * Single-domain Production Deployment behind HAProxy 23 | 24 | ## How it works 25 | 26 | Each Bigfoot app depends on two code repositories, one for the API and one for the UI. 27 | 28 | bigfoot create big_example 29 | 30 | ## WHERE'S THE CODE??? 31 | 32 | Bigfoot is being extracted from our production app, so it may take some time. 33 | 34 | Please feel free to periodically harass [@foysavas](http://twitter.com/foysavas) on Twitter for best results. 35 | --------------------------------------------------------------------------------