Libraries, tools, and services, oh my.
One of the ideas with anacubist was to create products using open source and free resources. We start small and take advantage of the free tiers offered by many services.
The main site is created using Notus UI kit which uses Next.js, Tailwind CSS, and React. The toolkit is MIT licensed. The anacubist site is stored on GitHub. As commits get merged to 'main' the site is built and deployed to Vercel as static pages. This done with a Vercel application in GitHub. All hands off. Vercel will build branches when they are committed. The Vercel build pipeline is straight out of the box.
Development has been done on an iMac. (I have one and the screen is nice.) Many programming tools have OSX versions. If they are command line tools, then OSX will run them anyway. I use oh-my-zsh in an iTerm2 window, with powerline fonts to give glyphs and shapes in the prompt. I use a few shell plugins in that.
Local testing is done using the npm tools which came with the UI kit. The pages are made with a set of React components, composed of existing controls and styles from that took kit. Icon images come from Fontawesome and the photos come from unsplash. I like unsplash, as the photos are excellent, and they have auto sizing and cropping on the url. Using the url updates the image producer's counts.
I use Visual Studio Code and a few plugins when developing any Javascript or TypeScript coding. Nice editor and it keeps getting better.
With any front end there is a bit of back end. The back end is ridiculously small. There is one Azure function, which calls SendGrid to send an email to me and one to the user contacting us. The email is put together in the function, but that will be changed to use SendGrid templates and letting them handle the merge.
The Azure function is in an Azure DevOps git repo. A build pipeline builds and deploys the function. The pipeline is from the default pipeline list. So easy! The function is written in C# using Visual Studio for Mac and tested in the debugger using Postman to post requests. I could use VS Code in the future or even Rider.
This blog is also using Next.js and hosted on Vercel. The content is stored in Prismic. As content is updated there the blog site gets refreshed. The blog could have been done using any number of options, but a CMS seemed sensible.
Route53 on AWS handles DNS. I have a project using AWS services, so stayed with that. That points subdomains to the appropriate real locations and entries for SendGrid, Microsoft 365 etc. Many services now give detailed information for the required DNS entries. That makes it much easier.
Visit attribution for a full list of the tools and libraries we have used during the creation of the site or the business.