This repository contains the source code for a Ember-powered web app that serves as a personal website for an individual on the Web according to principles embodied by the IndieWeb community.
This app is initially intended to display data from a personal web server but can be powered by any data server conforming to the JSON API specification.
A real-world instance of this web app can be found at markmhendrickson.com.
The code requires the following environment variables to run or deploy the server. The following environment variables can be declared by adding a file named .env
(in INI format) to the base directory, assuming they're not declared elsewhere in the system already. Such a file will be ignored by Git.
PERSONAL_WEB_API_HOST
: Host address for data server conforming to JSON API specification (defaults tohttp://127.0.0.1:9100
)PERSONAL_WEB_SEGMENT_WRITE_KEY
: Segment write key
HOIST_DEST_USER
: User name with which to SSH into remote deployment serverHOIST_DEST_HOST
: Host address for remote deployment serverHOIST_DEST_DIR
: Remote system path to app directory on deployment serverPERSONAL_WEB_PRODUCTION_API_HOST
: Host address for data server needed by remote deployment
PERSONAL_WEB_PRODUCTION_SEGMENT_WRITE_KEY
: Segment write key for remote deploymentHOIST_SYSTEMD_SERVICE
:
If you intend to deploy the server to another system using scripts within the "Developing and deploying" section below, you can also create a .env-deploy
file in the base directory, one that will be ignored by Git and used upon deployment to create an .env
file remotely, thereby setting environment variables on the deployment server.
The app will expect the data server to fulfill requests for the following types of data:
attribute
: Basic attributes about the individual, namely those with IDsbirthday
,coverImageUrl
,description
,firstName
,fullName
,gender
,about
,homeLocation
,imageUrl
,lastName
, andprofession
checkin
: Check-ins to list on homepage under "Check-ins"company
: Companies to list on homepage under "Companies"image
: Images to show in relation to postslink
: Links to list on homepage under "Links"photo
: Photos to show in relation to postspost
: Posts to list on homepage under "Posts" and display individually on post pagesredirect
: Redirects to posts that previously had different IDs and therefore different URLsskill
: Skills to list on homepage under "Skills"
Once the environment is ready per above, and Node.js with NPM is installed, simply execute the following commands to prepare and run the app:
npm run install-all
to install NPM and Bower dependenciesnpm run build
to build the appnpm start
to fire app up and automatically reloads it when code changes are made
Deployment scripts are available through Hoist.