Today we're shipping our second release of Starchart. During this release the team added more than 4K lines of new code, greatly expanding our core APIs and UIs. Here are some of the highlights.
- We've made significant progress on our SSL Certificate request flow and API. Denes has put a lot of time into the API implementation, and written a great post discussing it. He was even able to successful do a first order using our Docker test environment!
- In a similar vein, we've introduce a new API over-top of Route53 and our MySQL database. This makes it possible to create domains and have resource records get added to AWS as well as the details get stored in our backend. For the second week in a row, Won has been doing fantastic work responding to repeated review requests. I'd also like to call out the amazing tests he wrote in parallel to the implementation.
- Both of the Certificate and DNS APIs are long-running, asynchronous processes, which can take quite a while to complete. We decided to add a worker-queue architecture to the app and implemented BullMQ and Redis. We've had good success with this design in Telescope, so it seemed like a good fit. Using worker queues, we can schedule, retry, rate limit, repeat, etc. our long-running background tasks. Our first worker queue was merged for email notifications to users.
- Speaking of email notifications, TD has landed a bunch of new work to get emails working in production and development/testing. We can now send emails via a background worker process using nodemailer. In development and testing we're using the awesome MailHog project in Docker. It lets us send mail via an SMTP server and then use a Web UI or JSON API to check the user's inbox.
- In preparation for deploying to staging, we improved our Docker image creation to be more secure and optimized. ITS has been doing some excellent work getting all of our accounts and systems ready, and we're probably only 1 or 2 releases away from being able to auto-deploy on every commit!
- The front-end team did a bunch of great work on our UI, translating the initial designs into MVP code. Eakam got the ball rolling with routing, which Mario and Tymur were able to use as the basis for their work on the login and domains pages. We also added a
/devroute to give a playground for testing manual flows that don't have associated UI yet.
- Speaking of login, we added the necessary Docker container and configuration in order to run a SAML2 Identity Provider (IdP) in development and testing. The setup includes the SAML identity claims we'll need, and we also added some accounts so that our devs and test code can login.
- Similarly, we expanded our Prisma seeding code to add some dummy data in development and testing. Doing so was a good forcing function for exploring the types of data we want to allow in various fields and the UI.
- We ran into an interesting issue with our Content Security Policy (CSP) and our Chakra-UI/Remix front-end. I'm still not sure what the right fix is going to be, but it will be good to try and solve it before we move to production.
- We did some work to normalize the locations of our tests, which was a bit of technical debt we needed to pay off after starting with the Blue Stack. Our excellent CI setup made that and so much of the other work I've already discussed a lot easier.
- Finally, we updated a bunch of dependencies thanks to the tireless work of Dependabot.
The first few releases of a project like this are an interesting of "wow, we're going fast!" and "why is this app not able to do anything yet?" I'm excited to push through the next few releases, by which time I predict we'll have quite a bit working in an initial state.
I was also encouraged to see familiar names pop-up in our Slack this week. Starchart is an open source project, and one of our goals is to support the community of developers who forms around the work. We've already had some excellent contributions from the larger Seneca community, and I look forward to seeing much more. Hopefully in 0.3+ we'll see new faces in the project's commit history.
Finally, I'll thank our Sheriffs for the past two weeks, Denes and Chen-Yuan. They did an excellent job leading our meetings, doing reviews, and helping keep the tree in working order. Our Sheriffs for 0.3 are Won and TD.