My Photo Portfolio Website - Good? Definitely Not Good Enough!

Posted on Wed 25 October 2023 in Web

I don't know a lot, but at this point I can tell you one thing that I do know is that I am more obsessed with perfecting my photo portfolio website than I am with going out and capturing the best content to put in it. I have all of these unorganized ideas chaotically floating around in my head right now, so I am going to attempt to organize them by transferring them to text.


Haven't you solved this problem already? Yes, but I'm actually having fun building this thing, let me live a little.

Okay, but doesn't Smugmug do it better? Yeah, they do. You know what though? Someone did it better than Smugmug before they existed.

LOL, so you're going to be the next Smugmug? No, this is just for me.. and maybe anyone else who wants it. Which takes me to the next section of this post...


Philosophies:

  • cattle, not pets - You might have heard this about servers before. The idea is that your server, or in the case of this project, my server and my gallery being served on it, do not matter. What matters is that my "pets"(photos and code) live at home with me and don't leave because I love them and they are special. The "cattle" can be replaced at will (the meat industry is awful, but this is the analogy I chose) and do not matter to me.
  • minimal - No stupid frameworks (even though they are better) - I will not budge on this because I do not want to maintain them. HTML and javascript only!
  • push-button - I should be able to push a button (run a script) that will sync my portfolio with my webserver. This is my true advantage over a service like SmugMug, it allows me to be lazy!
  • free(ish) - I think for a photographer like me who has not monetized, Smugmug just costs too much and I cannot justify it. I can code for free. My web hosting is not free, but I get a lot of use out of my cloud server for more than just my portfolio and I can justify that.
  • read-only - I've said it before, but I am not a web developer. Since I am not a web developer, the best way to ensure that I don't end up with a mess on my hands is to not have any services running that allow people to push to my server via the web. I serve files from this website and that is it!

Components:

  • server - I am a Linux guy, so I use a Rocky Linux 9 server hosted on DigitalOcean. Rocky Linux 9 took the place of CentOS when IBM/Red Hat decided to screw anyone that loved that OS. Nothing on this server matters due to the philosophies outlined above.
  • apache/nginx - In my current world I use Apache as I'm more familiar with it than nginx. This simply makes directories I create available on the web.
  • website - This is the part of my gallery that needs the most improvement and that I struggle with the most. It works right now using HTML, javascript, and CSS. The javascript can and will be improved, but it works. The photos are served from a "photos" directory in my web root and this portion also needs a little improvement.
  • backend - Backend design is what I feel that I am the best at and want to continuously improve. I am going to go into some detail about the backend below.

Backend:

What does this backend need to accomplish? Basically it just needs to be the 'button' in my push button philosophy.

What are some of the components of the backend? NAS server - this is the server that both all of my RAW and JPG files live on. For this project we are only concerned with the JPGs as those are the files that your web browser knows how to handle. publish.py - This is the 'button' that makes everything work. The way I've designed my script, as outlined in yesterday's post, allows me to run a couple commands and push the latest updates out to my gallery.

...I am going to stop typing now. The neighbor kids are outside loudly playing basketball right next to my window and I can no longer think. I will revisit this tomorrow or something. F#$@#(*).