dwyl / auth

πŸšͺ πŸ” UX-focussed Turnkey Authentication Solution for Web Apps/APIs (Documented, Tested & Maintained)
https://authdemo.fly.dev
GNU General Public License v2.0
130 stars 9 forks source link

Feat: Auth Setup Wizard `#discuss` #270

Open nelsonic opened 1 year ago

nelsonic commented 1 year ago

At present, when a required environment variable is not set, the auth (v1.6.6) app will not start. Instead we see an error message of the form:

09:06:28.149 [error] ERROR: ADMIN_EMAIL Environment Variable is not set
** (FunctionClauseError) no function clause matching in Auth.Person.get_person_by_email/1

    The following arguments were given to Auth.Person.get_person_by_email/1:

        # 1
        nil

    Attempted function clauses (showing 1 out of 1):

        def get_person_by_email(email) when not (email == nil)

    (auth 1.6.7) lib/auth/person.ex:261: Auth.Person.get_person_by_email/1
    (auth 1.6.7) lib/auth/init/init.ex:76: Auth.Init.create_admin/0
    (auth 1.6.7) lib/auth/init/init.ex:30: Auth.Init.main/0

This is a lot better than the old (cryptic) error messages we had before envar but it's still lame. πŸ€¦β€β™€οΈ Someone new running the auth app on their localhost for the first time shouldn't see this kind of thing!!

What we should have instead is:

Story

As a prospective contributor or deployer of the auth project, I want a Web UI-based Setup Wizard that helpfully and progressively guides me through the process of inputing the required values So that I know what I need to do to get everything working!

Note: Progressive UI/UX is described in https://github.com/dwyl/product-roadmap/issues/43

/init is nice but not enough ...

At present we have the following "init" page: https://authdemo.fly.dev/init #176

image

That informs people which environment variables are defined. This was a make-shift page we created just for our own deployment needs.

But if more people are going to run and contribute to the auth app, the "onboarding" for new devs needs to be significantly streamlined.

Only 2 Environment Variables Required to Startup

Of the environment variables currently listed on the /init page, the only two that are really needed are DATABASE_URL and SECRET_KEY_BASE. And even these two shouldn't be required to boot the auth app ... πŸ’­ We have demo Apps running on Fly.io that don't use PostgreSQL and therefor don't need a DATABASE_URL ... But given that auth will always have DB tables in order to work ... and we know from experience of deploying to Fly.io (and on localhost) that the mix ecto.setup or mix ecto.migrate fails when there is no DB, so the app simply won't boot. So the DATABASE_URL and SECRET_KEY_BASE are probably "baseline" ... πŸ™„

OK, Let's operate under the assumption/understanding that these two are the only require environment variables. And that everything else is defined progressively. i.e. when added they "unlock" features in the auth App.

Thoughts? πŸ’­