Daivik's Personal Website
Table of Contents
Introduction
This repository contains the source code for my personal website which hosts my blog and resume. The website is built using the Gatsby frontend framework; and I have also used the Material UI library to design the layouts and for various other components. The website is still WIP, but once I've added a few more functionalities I do plan on publishing it (or atleast a sightly modified version of it) as a starter on the official Gatsby website. For now, anyone who wishes to copy or modify this code for their own use is welcome to do so (please see the LICENSE and copyright notice for complete details)
Setting up a development environment and running the site locally
-
Make sure you have a relatively recent version of node and npm installed
Binaries for node (including npm) can be found here. If you're on Ubuntu, I've found that the package manager version of Node/NPM is a little out of date, so I prefer to install via the binary archive. Instructions for the same can be found here
-
Install gatsby-cli
On a terminal execute the following:
npm install -g gatsby-cli
-
Clone the source code
On a terminal, execute:
git clone https://github.com/daiviknema/daiviknema.github.io
-
Install node modules
Change directories into the cloned repo (eg
cd daiviknema.github.io/
) and execute:npm install
This will install all the dependencies (such as Material-UI and other Gatsby plugins into a directory called
node_modules/
) -
Deploy the site
The development server can be started by running
gatsby develop
from the command line. Note that this deploys a development bundle onlocalhost:8000
. This is ideal if you are looking to modify the code.For a production bundle (with minified CSS and obfuscated JS), you will need to execute:
gatsby build gatsby serve
This will deploy your site to
localhost:9000
CircleCI Setup
The website is hosted on Github Pages - which requires that the static site be deployed from the master
branch. Because of this constraint, I've updated the default branch on this repo to be dev
instead of master
. I've set up CircleCI on this repository to perform a build on every commit push; however, deployment is only performed when commits are pushed/merged to the dev
branch. That is, when a commit is pushed/merged to dev
branch, CircleCI performs a build and pushes the build output (public/
directory) to master
branch - where GH pages can pick it up. Please take a look at .circleci/config.yml
for the exact specification of the build and deploy steps.
Found Issues? Got Feedback?
I've tried my best to make the website experience as nice and bug-free as possible for the viewers, but I'm hardly above the universal truth that all code that does anything useful has bugs. In case you've found one, please do let me know by raising an issue. Alternatively, if you have any feedback for me, feel free to raise an issue as well!
License
The code in this repository is licensed under the MIT license