Lean application development

We will use an example, a simple public-facing RESTful API. This RESTful API displays the names and addresses of a list of accommodations in JSON format to any user via GET:

  • If no passwords are to be used, then ext/mcrypt is not needed.
  • If no date calculations are to performed, then nesbot/carbon is not needed. Since there is no HTML interface, then the following libraries involved in testing the HTML of an application, symfony/css-selector and symfony/dom-crawler, will not be needed.
  • If no e-mail is to be sent to the user, then neither illuminate/mail nor swiftmailer/swiftmailer is needed.
  • If no special interaction with the filesystem is needed, then there is no need for league/flysystem.
  • If not commands that are to run from the command line, then the symfony/console is not needed.
  • If Redis is not needed, then illuminate/redis may be left out.
  • If specific configuration values will not be needed for different environments, then vlucas/phpdotenv is not needed.


The vlucas/phpdotenv package is a suggested package in the composer.json file.

It is clear that the decision to remove certain packages has been done carefully so as to lighten up Lumen as needed with the simplest of applications in mind.