Skip to content

This is a deliberately overengineered example of a Rails app to demonstrate some modularity practices

Notifications You must be signed in to change notification settings

tylerwillingham/overengineered

Repository files navigation

README

This is the eventual replacement for twilling.io - my personal site.

It is deliberately over-engineered as a case study in evolving a traditional Rails application using patterns that I've picked up from my time focusing on scaling start-ups and working on companies doing Big Rails.

This is not an example of how an early Rails app should look, hence why the repo is intentionally called "overengineered".

Modularity via Engines + Packwerk

Packwerk provides the static analysis for dependency checking but standard Rails Engines are providing the loading framework for the individual packages (called components in the app).

There are two key types of packages in this repository:

  • Interface packages (i.e. components/public_site)
  • Domain packages (i.e. components/blog)

External library dependencies are managed via the root Gemfile for broadly applicable dependencies (like rspec) and more specific domain/interface dependencies are added via the components' gemspecs. These are loosely versioned and bundler reconciles everything in the standard ./Gemfile.lock

About

This is a deliberately overengineered example of a Rails app to demonstrate some modularity practices

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published