Examples: CoffeeScript, LESS, HAML, Dart
Build Tools / Site Generators
Different tools will be created with different purposes. Some are built for a specific purpose while others can be used for just about any application you might build. When choosing a build tool, it makes sense to find something that fits your workflow, is actively maintained, and has an active user community.
Examples: Jekyll, Grunt, Yeoman, Harp, Roots, Brunch.io
Package managers allow developers to easily install open source or shared library code that is meant to work across multiple applications. Using a package manager, you can declare dependencies for your project that the package manager will automatically download and install into a usable location. This makes it easier both to add new libraries and update existing libraries in your projects.
Examples: Bower, Component
Different frameworks utilize different methodologies such as Model View Controller (MVC) or Model View ViewModel (MVVM). Each has its own strengths, weaknesses, and communities, and it is well worth your time to investigate options thoroughly before settling on one.
Examples: Angular, Ember, Backbone
A UI framework can help you quickly implement common interface patterns by providing sensible default styles and behaviors for your application. Useful both for rapid application prototyping and as a basis for production code, these frameworks give you elements such as buttons, grid layouts, well-styled forms, and more.
Examples: Bootstrap, Foundation
Static Web Hosts
Of course, you'll need a place to host your project once you're ready to bring it online. There are many options for static web hosting including traditional shared hosts, online storage with hosting, and new dedicated static web hosting services. When choosing a host, there are a few things (other than cost) to look for:
- Does the host provide any kind of content acceleration through a global server network?
- Can I host an SSL-protected static web app on the provider?
- How easy is the deploy process? Are there developer-friendly features like rollback?
Examples: Divshot, Amazon S3, GitHub Pages
Back-end service providers offer a way to implement a part of your application's business needs without having to host or build custom code for it. These services may provide database storage, user authentication, email delivery, or a variety of other services. Some back-end services try to offer a comprehensive package while others focus on a narrower slice of your application needs.
Examples: Firebase, UserApp, Hull
Examples: AWS SDK for Browser, GitHub API, Keen IO
Custom Server APIs
As you build out your application, you may find there are pieces that can't be handled by an off-the-shelf third-party provider. That's ok, and totally in keeping with a static application mindset! When you run into these cases, it's best to build the functionality you need as a compact, independent, purpose-driven service that can be easily consumed by the browser and any other platforms you support.
Choosing a technology stack that works well for you will be vital to the productivity and maintainability of your project. What works well for one application may not work well for another, but one of the benefits of building static is that you have more flexibility to compose an ideal, modular stack that suits your needs.