Skip to content

FrankJamison/FrankJamison.com-v2013

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FrankJamison.com v2013

Developer-facing repo for a preserved-and-modernized snapshot of a classic XHTML-era personal/resume website (circa 2013).

It’s intentionally “no framework, no build step”: mostly static HTML/CSS/JS with a small PHP handler for the contact form.

Primary maintenance goals:

  • Keep markup and shared navigation consistent across many static pages
  • Preserve the original Flash-era header by rendering the SWF via Ruffle (WASM)
  • Keep the contact form working via authenticated SMTP (not PHP mail())

Repository

Canonical GitHub repository:

https://github.com/FrankJamison/FrankJamison.com-v2013

Clone:

git clone https://github.com/FrankJamison/FrankJamison.com-v2013.git

What it does

  • Serves a multi-section personal site (home, resume pages, portfolio/gallery sections, writing archive)
  • Uses shared JavaScript “includes” to keep navigation/header/footer consistent across many pages
  • Renders a legacy Flash banner (.swf) using a self-hosted Ruffle runtime so it still displays today
  • Provides a working contact form that submits via authenticated SMTP (rather than PHP mail())

Live preview

Production-style preview:

https://frankjamison2013.fcjamison.com/

Quick start (local dev)

  1. Serve this folder from a local web server (Apache/Nginx/IIS/etc.).
  2. Ensure the server’s document root is the repo root (the folder containing index.htm).
  3. Browse to http://frankjamisoncomv2013.localhost/ (or your chosen local hostname).

VS Code:

  • Run the Open in Browser task to open the local URL in Chrome.

Notes:

  • Opening pages directly from disk (file:///...) can break script/resource loading.
  • Some pages use absolute-root links (like /resources/...), so hosting under a subfolder usually requires rewrites.

How it works (implementation overview)

Static pages + shared UI includes

  • Pages are .htm files.
  • Repeated UI (header/menu/footer) is generated through classic JavaScript includes (primarily via document.write).
  • Shared assets live under resources/.

Key include scripts:

  • resources/javascripts/menu.js — primary navigation
  • resources/javascripts/resumeMenu.js — resume-side navigation
  • resources/javascripts/header.js — loads the Flash header via Ruffle
  • resources/javascripts/footer.js — footer markup

Flash-era header, preserved via Ruffle

The banner animation is still the original SWF:

  • resources/sfw/header.swf

Modern browsers no longer support the Flash plugin, so pages load Ruffle (a WebAssembly Flash emulator) from:

  • resources/ruffle/

resources/javascripts/header.js initializes Ruffle and instructs it to render the SWF. No Adobe Flash Player is required.

Contact form: PHP + SMTP

The contact form posts to:

  • contact/sendmail.php

Email is sent via SMTP submission (STARTTLS on port 587 by default), which is generally more reliable than PHP mail() on shared hosting.

Running locally

Requirements

  • A web server (Apache/Nginx/IIS/etc.)
  • A browser (Chrome/Edge recommended)
  • For the contact form: PHP support is required

Avoid opening pages via file:///... — modern browser security restrictions can break script/resource loading.

Recommended local URL

This workspace includes a VS Code task that opens:

http://frankjamisoncomv2013.localhost/

To use that URL, configure your local web server with:

  • Host name: frankjamisoncomv2013.localhost
  • Document root: this repo folder (the one containing index.htm)

Most systems treat *.localhost as loopback automatically. If it does not resolve on your machine, add to:

C:\Windows\System32\drivers\etc\hosts

127.0.0.1  frankjamisoncomv2013.localhost

XAMPP / Apache VirtualHost (example)

<VirtualHost *:80>
   ServerName frankjamisoncomv2013.localhost
   DocumentRoot "D:/path/to/2013FrankJamison"

   # This repo uses index.htm (not index.html)
   DirectoryIndex index.htm index.html index.php

   <Directory "D:/path/to/2013FrankJamison">
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
   </Directory>
</VirtualHost>

Troubleshooting

  • If browsing http://frankjamisoncomv2013.localhost/ redirects to /dashboard/, you’re hitting XAMPP’s default site (not this repo). Enable Apache VirtualHosts and confirm the DocumentRoot points at this folder.
  • If the header animation doesn’t render, hard refresh (Ctrl+F5) and check the browser console for missing files under resources/ruffle/.

Note on localhost automation

If you use the included VS Code task (Open in Browser), it may automatically ensure your Windows hosts file and Apache VirtualHost entries include frankjamisoncomv2013.localhost (this can require admin privileges for the hosts-file step).

Repo layout (quick tour)

  • index.htm — home page entry point
  • resume/ — resume section pages
  • portfolio/, gallery/, music/, poetry/ — content sections
  • contact/ — contact form + PHP mail handler
  • resources/ — shared CSS/JS/images + the Ruffle runtime and SWF assets

Notes and constraints (useful for real-world maintenance)

Absolute-root links

Many pages use absolute-root URLs like /resources/... and /resume/....

That means:

  • The site should be served at the web server’s document root.
  • If you host it under a subfolder (for example https://example.com/2013/), many links will break unless paths are rewritten or a base-path strategy is applied.

Character encoding

Many pages declare charset=iso-8859-1. If you edit content, keep encoding consistent across the site to avoid mojibake in older text.

SMTP configuration (deployment)

SMTP can be configured either with environment variables (preferred) or with a local config file.

Environment variables:

  • FJ_SMTP_USER — mailbox (example: contact@yourdomain.com)
  • FJ_SMTP_PASS — mailbox password (SMTP AUTH must be enabled)

Optional overrides:

  • FJ_SMTP_HOST (default smtp.office365.com)
  • FJ_SMTP_PORT (default 587)
  • FJ_SMTP_FROM (default = FJ_SMTP_USER)
  • FJ_MAIL_TO (default frank@frankjamison.com)

Config file method (common on shared hosting):

  1. Copy contact/smtp_settings.example.php to contact/smtp_settings.php
  2. Fill in real values
  3. contact/.htaccess blocks direct web access to smtp_settings.php

If sending fails, the handler can write to contact/sendmail_failures.log (ignored by Git) to help troubleshoot server-side issues.

Updating Ruffle (optional)

Ruffle is vendored in resources/ruffle/. If you need newer Flash compatibility:

  1. Download the official web self-hosted build from https://ruffle.rs/ (or the GitHub releases page)
  2. Replace the contents of resources/ruffle/ with the new files
  3. Hard refresh (Ctrl+F5) and verify there are no 404s in DevTools

Security and repo hygiene

  • Credentials are intentionally not committed: contact/smtp_settings.php is ignored.
  • Large local “downloads” folders are ignored to keep the repo GitHub-friendly.

About

FrankJamison.com v2013 is a preserved and modernized version of my 2013 personal website, built with HTML, CSS, JavaScript, and PHP. It demonstrates legacy maintenance, shared JavaScript navigation, Flash preservation using Ruffle, and a secure SMTP contact form, showcasing my ability to update and document older codebases responsibly.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages