FirstPage

This website runs on our lightweight, file-based content-management system (CMS), FirstPage. There are no databases, no admin panels, no build steps, no signup, and no subscription costs (other than plain, vanilla hosting). Just drag-and drop files onto a server.

Drop Files, Get a Website

Upload any markdown *.md or *.html file to the server and it automatically appears in the navigation menu, the RSS feed, and the search index within 4 hours. No configuration, no registration, no manual linking. Users can create markdown or HTML anytime, at their convenience. They do not have to be logged-in or locked into a walled garden to edit their site.

The navbar class scans the first 10 lines of pages for metadata:

These values appear in the menu. They are extracted automatically and written to sitemap.nav, sitemap.rss, and sitemap.xml. The menu is cached for up to four hours to provide visitors with lightening-fast access. If changes need to be seen right away, delete sitemap.nav and menus will be rebuilt on the very next visit.

Markdown + Parsedown

Content files written in Markdown are converted to HTML on the fly by the well-known and standards-compliant Parsedown library.

Automatic CSS & Scripts

Eliminate duplicaiton. Content does not need to include the same stylesheets and scripts every time. The html.php handler automatically injects that code onto every page. Authors write content; the CMS handles the delivery.

The search bar, search.php, scans every content file for the query string and returns highlighted matches. Results are limited to 99 to keep response times fast.

Theme Switching

Alternate stylesheets are available through the navigation menu. The styleswitcher.js utility toggles the disabled attribute on <link> tags and remembers the user's choice in a cookie.

Remote Document Caching

Files can declare a cache: (Markdown) or data-cache (HTML) URL pointing to a remote document. The navbar class fetches and caches the remote file locally, checking the expires / data-expires header to determine staleness. This lets the site pull in external content without manual updates.

Technology Stack

Component Technology
ServerPHP (built-in)
MarkdownParsedown
NavigationPHP DirectoryIterator + regex extraction
SearchPHP line-by-line scanning
StylesheetsCSS3 + stylesheet title switching
Dynamic includesCustom XHR include() in JS
MapsLeaflet / OpenStreetMap
AnalyticsGoogle AdSense / Analytics