code: def project(dest, app_bundle, force, dev,
              admin, api, celery, graphene, mail, oauth,
              security, session, sqlalchemy, webpack):
      
      if os.path.exists(dest) and os.listdir(dest) and not force:
          if not click.confirm(f'WARNING: Project directory {dest!r} exists and is '
                               f'not empty. It will be DELETED!!! Continue?'):
              click.echo(f'Exiting.')
              sys.exit(1)
  
      # build up a list of dependencies
      # IMPORTANT: keys here must match setup.py's `extra_requires` keys
      ctx = dict(dev=dev, admin=admin, api=api, celery=celery, graphene=graphene,
                 mail=mail, oauth=oauth, security=security or oauth, session=security or session,
                 sqlalchemy=security or sqlalchemy, webpack=webpack)
      ctx['requirements'] = [k for k, v in ctx.items() if v]
  
      # remaining ctx vars
      ctx['app_bundle_module_name'] = app_bundle
  
      # copy the project template into place
      copy_file_tree(PROJECT_TEMPLATE, dest, ctx, [
          (option, files)
          for option, files
          in [('api', ['app/serializers']),
              ('celery', ['app/tasks',
                          'celery_app.py']),
              ('graphene', ['app/graphql']),
              ('mail', ['templates/email']),
              ('security', ['app/models/role.py',
                            'app/models/user.py',
                            'db/fixtures/Role.yaml',
                            'db/fixtures/User.yaml']),
              ('webpack', ['assets',
                           'package.json',
                           'webpack']),
              ]
          if not ctx[option]
      ])
  
      click.echo(f'Successfully created a new project at: {dest}')
docs: Create a new Flask Unchained project.