Skip to content

Feat: Auth Setup Wizard #discuss #270

Open
@nelsonic

Description

@nelsonic

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 dwyl/product-roadmap#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? 💭

Metadata

Metadata

Assignees

No one assigned

    Labels

    T25mTime Estimate 25 Minuteschorea tedious but necessary task often paying technical debtdiscussShare your constructive thoughts on how to make progress with this issuedocumentationImprovements or additions to documentationhelp wantedIf you can help make progress with this issue, please comment!tech-debtA feature/requirement implemented in a sub-optimal way & must be re-writtentechnicalA technical issue that requires understanding of the code, infrastructure or dependenciesuser-feedbackFeedback from people using the App

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions