← Projects

Messianic Fellowships

A geographic directory of Messianic congregations — the earliest surviving web app of my own, built in PHP with browser geolocation back when that still needed a fallback.

phpmysqlgeolocationresponsivedirectoryweb

A visual directory of Messianic congregations: who they are, where they meet, when they meet, and what they are affiliated with. The problem it solved is the one every scattered community has — the information exists, but only in people's heads and on a hundred separate websites.

This is the earliest surviving web app I built for myself, and around 2,500 lines of PHP of it are still on the drive.

Screenshot 1
The wordmark, in the same face as [Supply The Pulpit](/projects/supply-the-pulpit/) — the two were built as a pair.

The data model

The whole design is legible from one table:

CREATE TABLE fellowships (
  id          varchar(30) primary key,
  name        varchar(200),
  address     varchar(400),
  email       varchar(50),
  timestamp   int(11) unsigned not null,
  leader      varchar(50),
  phone       varchar(15),
  website     varchar(50),
  affiliations varchar(200),
  latitude    varchar(10),
  longitude   varchar(10),
  services    varchar(400)
);

latitude and longitude are the interesting columns. The directory was not a list you scrolled — it was a map you stood on. Geocoding each congregation at the point of entry, rather than at the point of search, is what made "near me" cheap.

Geolocation, in 2012

Finding the user was the hard part, because navigator.geolocation could not yet be assumed. The app shipped a shim that detected whether the browser had native geolocation and, when it did not, fell back to Google Gears — including a special case for the build of Gears that ran on Windows Mobile.

That is a dead technology stack solving a problem that is now one line of JavaScript, and it is a fair snapshot of what web development felt like at the time: every capability you wanted was a feature test and two fallbacks.

Layout was handled the same way — the 960 grid system for structure, and adapt.js to swap stylesheets by viewport width. This was responsive design in the window after people accepted that phones mattered and before media queries were something you could simply rely on.

The rest of it

A hand-rolled framework under fls-include/: configuration, a database layer, form handling, a mailer, and a session layer that runs to 634 lines on its own. On top of that, the things any directory needs — login, forgot-password, user profile editing, and add and edit flows for the fellowships themselves, with an admin tier above ordinary users.

The user profile table carried headline, location, about, topics, websites, and feerange, which is not what a congregation directory needs — it is what a speaker profile needs. The same backend was powering Supply The Pulpit, built alongside it that year.