code: func getTemplateBundle(templatePath string) *templates.Bundle {
  	return &templates.Bundle{
  		Loader:          templates.FileSystemLoader(templatePath),
  		DebugMode:       info.IsDevAppServer,
  		DefaultTemplate: "base",
  		DefaultArgs: func(c context.Context, e *templates.Extra) (templates.Args, error) {
  			loginURL, err := auth.LoginURL(c, e.Request.URL.RequestURI())
  			if err != nil {
  				return nil, err
  			}
  			logoutURL, err := auth.LogoutURL(c, e.Request.URL.RequestURI())
  			if err != nil {
  				return nil, err
  			}
  
  			project := e.Params.ByName("project")
  			group := e.Params.ByName("group")
  
  			return templates.Args{
  				"AppVersion":  strings.Split(info.VersionID(c), ".")[0],
  				"IsAnonymous": auth.CurrentIdentity(c) == identity.AnonymousIdentity,
  				"User":        auth.CurrentUser(c),
  				"LoginURL":    loginURL,
  				"LogoutURL":   logoutURL,
  				"CurrentTime": clock.Now(c),
  				"Analytics":   analytics.Snippet(c),
  				"RequestID":   info.RequestID(c),
  				"Request":     e.Request,
  				"Navi":        ProjectLinks(c, project, group),
  				"ProjectID":   project,
  			}, nil
  		},
  		FuncMap: funcMap,
  	}
  }
docs: // getTemplateBundles is used to render HTML templates. It provides base args
  // passed to all templates.  It takes a path to the template folder, relative
  // to the path of the binary during runtime.