Closed humphd closed 1 year ago
Hello @humphd, I did some updates on the Certificate UI design and I would appreciate your feedback on that: https://www.figma.com/file/XAcnMIC1y4qumWinSalHI9/Starchart-UI?node-id=2105%3A2109&t=G1CD9TRcUmXAM98Z-1
OK, here's my initial feedback. I'd also encourage you to chat with @dadolhay, since he's thinking a lot about how this flow will work.
I think we need explanatory text here. What is a certificate? What can I do with it? Who is Let's Encrypt? What will happen when I click this button?
I also think you should drop "Let's Encrypt" from the button text and use "Request a Certificate". I notice that this is also what AWS uses on their UI.
I also think we should show the user which domains will be included in their certificate. Here is what Amazon does, for example:
In our case, we're going to include two domains:
username.domain.com
*.username.domain.com
It would be good to show the user this, and add some info about what the *
will mean (i.e., "This certificate will be valid for all subdomains owned by the user").
The process is going to take a while, and I'm not sure that a spinner is the right UI. It might be better to have some text that says, "We've requested your certificate and will notify you when it's ready." We could add polling later to update the UI when it does become available, in case a user does want to wait.
I like how you did "Created On" and "Expires On". Can you add two buttons beside this:
The Clipboard Copy buttons should either go over-top of the text area, like GitHub does (see top-right):
Or you should move it to be a proper button beside "Download"
I would get rid of "Check public key" and always show it.
For the Private Key, similar feedback. I would also consider obscuring it (e.g., replace all but the first 5 characters with 'x' or something) and have a button to "Reveal" it. The point of this is to help teach the user that this is not something to be shared.
The process is going to take a while, and I'm not sure that a spinner is the right UI. It might be better to have some text that says, "We've requested your certificate and will notify you when it's ready." We could add polling later to update the UI when it does become available, in case a user does want to wait.
I was thinking that maybe we can keep the spinner or make the button disabled when it's being processed. We can then switch it to a "view certificate" when it's finished? . We can prompt the user in regards to notification when they press the "request a certificate" button like a modal of some kind.
I think a spinner is good when you're looking at something that will take a few seconds. If you get into minutes, I think it's less useful.
A lot of sites will show some more stable UI (e.g., a dialog box or inline panel), which indicates that a long-running process is underway. For example:
We won't have a progress indicator, but we could use something like Chakra's Animated Progress bar to indicate "something is still happening."
So my proposal would be, when a user goes to this page:
In our meeting today, we discussed the need for a Certificate UI design, similar to what's happening with the current Figma design for the Domains. I wanted to include some thoughts on what I think will be necessary.
Click on "Certificates" should take the user to a screen with some text explaining what a Certificate is (a paragraph). There should also be a button to Request a certificate from Let's Encrypt.
Clicking this button will start a long async process. We have to go back and forth with Let's Encrypt and Route53 to do the order, set DNS records, pass various challenges, etc. After the user clicks the Request button, the UI should disable the button, and indicate that the process has been started and the user will receive an e-mail when complete.
In the background, Remix can try checking if the certificate is available yet, or wait a bit, and try again. This process can continue for as long as necessary until the certificate records are ready in the DB.
Once the certificate is available, the UI should change to show the following: