docs: def parse_config():
      """Parse the configuration and create required services.
  
      Note:
        Either takes the configuration from the environment (a variable
        named ``FLASH_CONFIG``) or a file at the module root (named
        ``config.json``). Either way, it will attempt to parse it as
        JSON, expecting the following format::
  
            {
              "name": <Project Name>,
              "services": [
                {
                  "name": <Service Name>,
                  <Service Settings>
                }
              ]
            }
  
      """
      env = getenv('FLASH_CONFIG')
      if env:
          logger.info('loading configuration from environment')
          data = json.loads(env)
      else:
          data = _parse_file()
      data['project_name'] = data.get('project_name', 'unnamed')
      data['services'] = define_services(data.get('services', []))
      data['style'] = data.get('style', 'default')
      if data.get('project_end'):
          data['project_end'] = repr(data['project_end'])
      return data