This app is designed as a personal blog built with Vue and GraphQL and hosted on AWS. The blogs are displayed as a list of short abstracts which can be opened into a full article. The app can create, read, update and delete a blog, when logged in as an administrator.
The client-side code uses Vue Router and Vuex for state management. Apollo Client is used for handling the GraphQL. Search is handled client-side using the library package Lunr.
The server code uses MongoDB, Apollo Server and ExpressJS. The ExpressJS runs simultaneously with the Apollo Server and is used to launch the Client-code from a static folder in a production environment. Authentication is with JSON web tokens.
The site is hosted on an Amazon, AWS, EC2 Ubuntu instance with an Nginx server. The Nginx server is configured as a reverse proxy to re-direct the in-coming traffic on Port 80 to the Node server running on Port 4000. A low-cost domain name was purchased from Bluehost to enable SSL to be used. The SSL uses a security certificate generated from Let's Encrypt. In March 2024 the Nginx was replaced with a Caddy reverse proxy server to enable automatic SSL certificate generation.
The front-page styling and design, with Masonry image packing and upside-down navigation, was based on the www.wix.com template: graphic-design-portf. The choice of an upside-down navigation was intentional, as the app will eventually be upgraded to a PWA for use on mobile phones. The remainder of the styling is Bootstrap 3, with flat-buttons and controls. Code syntax highlighting is with the PrismJS library using the default colour scheme.
The blog template is currently populated with blogs created from the 1998 Netscape manual, 'Core Javascript Guide 1.4', which is can be viewed at CoreGuideJS14.
Mark Mackenzie
February 2021






