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:
headings:ordata-headings— section titles for the menutitle:ordata-title— the page titledescription:ordata-description— a short summary or "hover text"
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.
Full-Text Search
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 |
|---|---|
| Server | PHP (built-in) |
| Markdown | Parsedown |
| Navigation | PHP DirectoryIterator + regex extraction |
| Search | PHP line-by-line scanning |
| Stylesheets | CSS3 + stylesheet title switching |
| Dynamic includes | Custom XHR include() in JS |
| Maps | Leaflet / OpenStreetMap |
| Analytics | Google AdSense / Analytics |