This is the code for my personal website https://datamesse.github.io, designed by me using HTML, CSS, Markdown, and JavaScript with React.js and GitHub Pages. No boiler site templates like Jekyll are used.
My initial design was a basic 2 page layout for a project portfolio and my blog. For each project I displayed a year-month label and the logo of the technology used.
Credit: The JavaScript code that renders blog post data from markdown to "separate" web pages was from a YouTube tutorial by Will Ward.
I wanted a clean and easy to look at light-blue and light-grey smooth-edged design.
The video banner background "Communication Line Technology" is used free from pixabay.com by ArtDio2020.
Archived source files are here: https://github.com/datamesse/datamesse.github.io/tree/main/src/z_version1
I updated the layout to be minimalistic with new sections including recent blog post preview, skills assessment, and contacts sections. The style is based on a YouTube tutorial by Shuvam Kumar a.k.a Overreacted.
The JavaScript title switch animation code was by Ajay Narain Mathur on Stack Overflow.
Archived source files are here: https://github.com/datamesse/datamesse.github.io/tree/main/src/z_version2
I merged the technical style and colour scheme from Version 1 with Version 2's layout. On the front page, each project has the name and logo of the main technology used. It is re-designed as a compact portfolio preview gallery, but has a button to a full portfolio page with code links.
Source files are here: https://github.com/datamesse/datamesse.github.io/tree/main/src/z_version3
My previous design (Version 3) did not fully accommodate for landscape and higher desktop resolutions. So I redid my entire site's CSS code from scratch using a more responsive design with prolific use of vh and vw for visual scaling, and adopting display: grid and z-index attributes to better overlay div elements. The end result is cleaner code for a futuristic tech-styled mobile design that retains its simple vertical layout even when viewed on a landscaped desktop.
Source files are here: https://github.com/datamesse/datamesse.github.io/tree/main/src
Here are some asset references for this version:
Gear used in the background by TheDigitalArtist from Pixabay https://pixabay.com/vectors/art-circle-design-pattern-science-7147602/
Another gear used in the background by TheDigitalArtist from Pixabay https://pixabay.com/vectors/cyber-tech-circle-rings-pattern-7153617/
Polygon world map used in the background by GDJ from Pixabay https://pixabay.com/vectors/triangles-triangular-low-poly-1289379/
Patawan Island beach photo used in the background by Kris Guico from Unsplash https://unsplash.com/photos/rsB-he-ye7w
mp3 tracks "Time Flows", "Small Discoveries", and "Good Mood For No Reason" by Evgeny_Bardyuzha from Pixabay https://pixabay.com/users/evgeny_bardyuzha-25235210/
Button sound effects are from https://mixkit.co/free-sound-effects/
CSS clip-path polygon creation tool by Bennett Feely
CSS glowing of div elements taken from this Stackoverflow post
Animated gif creation by recording screen
Font to SVG path creation tool by Dan Marshall
Software logos and other art were used from:
Screen resolution emulator to test website design
SVG creation tools:
Text to PNG:
See instructions below on how to create your own GitHub Pages site.
Based on a post by Ibrahim Ragab
Requirement: Install Node.js on your machine, and install React as a local dependency
npm install -g create-react-app
From the Repository's Settings, scroll to the bottom, click GitHub Pages and publish the site to https://datamesse.github.io/.
create-react-app datamesse.github.io
cd datamesse.github.io
npm start
From Visual Studio Code, start building the app, and watch it render via http://localhost:3000/.
Install additional dependencies needed for the blog post component.
npm i react-router-dom react-markdown
"scripts": {
"server": "node src/scripts/main.js"
},
npm install gh-pages --save-dev
{
"homepage": "http://datamesse.github.io/"
},
"scripts": {
"predeploy": "npm run build",
"deploy": "gh-pages -d build",
},
}
npm run server
npm run deploy
Note: It is important to let the process complete fully, otherwise you may get errors that may require rebuilding from scratch.
From GitHub, change the GitHub Pages setting to deploy from branch gh-pages.
From GitHub Desktop, push the changes (the Current branch selected should still be main by default, do not change this).
Note: You will only see the changes you applied to the source files in GitHub Desktop for the push, not the compiled file changes that will end up deployed to gh-pages branch. This is normal.
npm run server
npm run deploy
Note: If you make a change to the source code and push it without building first, no changes will be reflected on the gh-pages branch. So ensure that when trying to push gh-pages build changes, that something in the source files has been changed, otherwise GitHub Desktop won't detect anything for the push.
Note: If you hit an error whilst performing the push, it may be relating to number/size of files being sent, in which case from GitHub Desktop, try repushing, otherwise click the History tab and undo or reverse the commits that are pending, and resend the changes in smaller amounts.
Based on this Stack Overflow post: https://stackoverflow.com/questions/48223566/using-anchor-tags-in-react-router-4
npm install --save react-router-hash-link
import { HashLink as Link } from 'react-router-hash-link';
<Link to="/pathLink#yourAnchorTag">Your link text</Link>
<div id= "yourAnchorTag">
<p>Linked to here<p>
</div>
Some social sites like LinkedIn can display preview images (including gifs) just by providing them your site's URL. They retrieve the image information from the head tag of your site. In my case, I defined this from the index.html file.
index.html
<head>
<meta content="1264" property="og:image:width"/>
<meta content="https://raw.githubusercontent.com/datamesse/datamesse.github.io/main/src/assets-portfolio/img-2022-12-portfolio-website-react-v3-fast.gif" property="og:image"/>
<meta content="799" property="og:image:height"/>
<meta content="https://datamesse.github.io/#/" property="og:url"/>
</head>
Then from LinkedIn, go to your Featured section > + button > Add a link > and provide your site URL without adding a Preview image. The image you embedded in index.html will be rendered upon saving.
I used this YouTube video How to make horizontal scroll item - CSS Tricks by Laravel Article as a guide to help me create a vertical carousel design for my portfolio and blog components (rather than a horizontal one which felt less natural to navigate).
I used this "Animated music bar with CSS blog post by Samuel Kraft to add a subtle music bar mini-animation to the site's header.
Based on this Youtube tutorial by Rizwan Khan.
Other important links below:
npm install react-circular-progressbar
import { CircularProgressbarWithChildren, buildStyles } from 'react-circular-progressbar';
import 'react-circular-progressbar/dist/styles.css';
<CircularProgressbarWithChildren
strokeWidth={3}
value={100 - skill.score}
styles={buildStyles({
pathColor: "#23a9f2",
trailColor: "#E9F6FE"
})}>
<label className='skill-name'>{ skill.shortname }</label>
<img className='skill-icon'
src={ skill.icon }
alt={ skill.name }
/>
<label className='skill-score'>Top {`${ skill.score }%`} of {skill.taken}</label>
<label className='skill-date'>{skill.shortdate}</label>
</CircularProgressbarWithChildren>