Architecture

Architecture, like design, is not my favorite part. (One might wonder if I actually have any favorite parts; and if not, why on earth would I decide on software as a career field? All good questions.) Unfortunately, you have to make some decisions about architecture before you start coding, and they have to be good decisions. Otherwise you're going to waste a lot of time going down rabbit holes (trust me, not my first rodeo).

The number one requirement of my site is that it needs to cost me nothing to operate. I'm willing to spend up to $20/year on domain registration, but that's it (see Site History). Which means the only commercial technologies I'm going to be using are the ones that offer a free tier that is sufficient for my needs. Luckily, everything is scalable nowadays, so if I end up using too much bandwidth because my site is inexplicably popular, I can always upgrade.

So, for starters, I'm going to deploy my front-end on GitHub's GH Pages, because it's really easy. It's not immediately clear that I need my own back-end, because a lot of the features I need are offered by free services.

The main thing I need to be able to do is store images. I decided to use Cloudinary, which is a service I heard about on a podcast. It offers a bunch of on-the-fly transformation options in addition to storage. It calculates usage based on a complex algorithm involving storage, bandwidth, and processing, but I've uploaded all my images and played with just about every feature they offer, and have yet to reach 5% of my free-tier quota. So that's kind of a no-brainer.

The other thing I want to do is create and sell derivative products, based on my artwork. There are a bunch of services that allow this via API, and I tentatively chose Printful just because it offers a pretty wide selection of products. (By "derived products," I mean stuff like T-shirts, coffee mugs, and posters with my pictures on them.) Printful allows you to create products ahead of time and then order them via API call, or create products on the fly via another API call. So that's the product API I went with. (At the time of this writing, I'm reconsidering that decision; but let's worry about that later.)

Finally, I want users to be able to contact me. That's kind of a basic feature of websites in general. Sending messages typically requires a server (ie a back-end), but writing a whole back-end just to enable a contact form seems kind of dumb. So I'm tentatively going to try setting up a servlerless contact form using GMail.
So anyway, my starting goal is to build a site that does all the things I want by connecting to 3rd-party, free-tier APIs and then rendering an attractive display using React.

Comments

Popular posts from this blog

Basically done! (at least on full-screen. except for some issues.)

Getting back to it, again

Mobile Issues