This website requires the use of JavaScript, but your browser either doesn't support it or you've elected to disable it. The Tech of HelloStory—Pt. 1

An image of {{fname}}.Gardiner B. May 11th

The Tech of HelloStory—Pt. 1

Image: "

Hi there! My name is Gardiner Bryant and I'm the primary software engineer for HelloStory. I am super passionate about history and how antiques can provide a powerful connection to the past—one which I believe is vital to knowing who we are as people.

I am also very interested in programming, and that's fitting since it's been my livelihood for years.

Suffice it to say, HelloStory's is the intersection of things I care deeply about; rightly making my work here a labor of love.

I spend much of my time developing the software that supports this site—and when I'm not actually writing code, I'm often thinking about or playing with the site.

Architecture

I've been building HelloStory as three distinct parts:

  • Ephemeral Core — The base framework for our site. It provides user accounts, notifications, blog posts, robust routing, and API capabilities
  • Project "Books" — The core components of HelloStory. This is the front end of the site (what you're seeing now) and it's entirely dependent on the Ephemeral framework. This includes all the work done for maintaining the book database, translations, and more!
  • Project "Backend" — The backend of HelloStory. A more "behind the scenes" place where people with authorized user accounts are able to submit translations, transcriptions, blog posts, manage app settings, and more!

I've built these three pieces myself and in this series of posts I hope to examine our technical history thus-far and some of the more challenging aspects of the design process.

First, let's talk about...

Ephemeral Core

As I said above, I built Ephemeral from scratch (aside from a handful of open source projects, of course). While there are many frameworks that already existed, I decided to try my hand at making one. Mostly because I thought it would be a fun challenge. And, boy, has it ever been a challenge. 😉

Originally I started building Ephemeral as just a side project for a small blogging site that I was hoping to deploy on shared hosting (think GoDaddy or 1&1). But as I would hack away on other web development projects, I soon realized that I kept solving the same problems over and over again. Getting fed up with repeating the same work, I decided that Ephemeral was going to become more than just the "blog platform" it started out as.

I wanted to have a flexible, easily modified, and reusable toolkit that I could use for any project I was working on. But most importantly, I wanted something that I completely understood inside and out.

I can hear you asking: "but what does Ephemeral actually do...?" Great question. To put it succinctly, Ephemeral handles many of the things you'd want to do with any complex webapp.

Server-side Code

The server-side code is mostly written in PHP. While PHP has a bit of a poor reputation, I have striven to adopt a modern, MVC paradigm for the architecture of this site. (That's Model View Controller, for those not in the know.)

My years of experience with PHP over the years has taught me a thing or two about what not to code... especially if I intend to keep any semblance of sanity while maintaining my projects down the road.

Currently, the server-side code of Ephemeral handles URL routing, JS package management, fetching and rendering HTML templates, automated email dispatch, event scheduling, blog posts, user accounts, session management, notifications, and finally the JSON-based API which the client-side code interacts with.

Speaking of...

Client-side Code

All the client-side code is written in the language of the web: JavaScript. This code provides common functionalities you're likely to find in sites across the web. Things like creating context menus, modal boxes, status messages, form management, API communication, and other things.

Together, these two codebases form a stable base for HelloStory to be built atop of.

Next time we'll talk about the code I've written specifically for HelloStory itself.

1 of 1 pages
LibraryOur BlogSettingsAbout HelloStoryMy AccountPreferencesSessionsPrivacy PolicyTerms of UseCookies PolicyRegulatory NoticeOpen Source Licenses