I've recently taken to photography as a new hobby. Wanting a dedicated place to show off my photographs, I decided to build a website to showcase them.
Now I could have simply used a WordPress site, or built something quick with Square Space, or even simply put them on Instagram (which, well, I did also get an Instagram account, @charming_photographics, where I post some highlights), but none of those quite seemed right for what I wanted.
For my photography website, I had a few key objectives in mind:
- I wanted it to be as focused on displaying photos as possible, without any clutter
- I wanted it to be easy to share photos and albums from it
- I wanted it to be SEO-friendly and built with web best-practices in mind (including accessibility and a mobile-first design)
- I wanted it to be easy and intuitive to use, both for visitors and for me when uploading and posting photos
What I came up with in the end is this, which you can view at photography.schlachter.xyz:
There's also quite a bit of hidden magic happening behind the scenes; for example, responsive and next-gen images are used to minimize the file size of images being served to visitors, which ensures everything runs quickly and saves valuable data for people visiting the site from their phone. Speaking of phones, the share button found on the album and image pages uses the native share dialog when supported by the browser (with a sensible fallback, of course). The image page also allows navigating using swipes with touchscreens or arrow keys on the keyboard, which I think makes for a nice user experience.
In addition to the clean and focused visitor-facing site, I also built a powerful backend with ajax-based dynamic actions, integrated Google Analytics for seeing when my site is being visited and what albums/photos are most popular, and the option to unpublish albums so that they're only accessible via the link (hidden from the home/album/images pages and not submitted to Google in the sitemap).
On top of that, I also made many aspects of the site configurable through the site so that it can be updated without having to change any code. This also means it would be possible for me to spin up an instance for anybody else who wants one (so long as they're willing to pay a small monthly fee to cover hosting, domain name, my time managing the server and applying updates, etc. which I would be happy to discuss if you shoot me an email at firstname.lastname@example.org).