·
4 min read

The 10 Favorite Features of My Developer Portfolio Website

The 10 Favorite Features of My Developer Portfolio Website Image

Inspired by Braydon Coyer's new blogfolio, I've added some excellent new features to my portfolio website.

In this article, I want to demonstrate the ten favorite features of my blogfolio.

1. Stats page

Inspired by SLD and Braydon Coyer, I've added a Stats page on my site.

It shows statistics about the site itself, for example, how many active visitors are currently on the site and how many have visited it in total.

Additionally, it shows some information about my social media channels like the follower count of GitHub, Twitter, Dev.to, and more.

I use AWS Amplify Serverless Functions to access a variety of APIs to provide the necessary data for this site.

Stats Page

2. Article Reactions

Built with Supabase and AWS Amplify Serverless Functions, readers of my articles can now react to the article with the clap emoji.

Additionally, I use the same database table to store the number of page views.

Article Reactions

3. Automated Open Graph Images

I use Braydon's approach to automatically generate Open Graph images for certain pages using the Cloudinary API.

The code grabs the site's title and generates an Open Graph image using Cloudinary API.

The following image shows such an automatically generated image that I use on my website:

Open Graph Image With Cloudinary API

4. Mark Article as Read

Visitors of my website can see at a glimpse which articles they've already read. It's a nice little feature for recurring readers of my blog.

Read blog articles

5. Intelligent Article Suggestions

If a reader of a blog article reaches the end of the article, he will see four similar articles. They are selected by checking how many categories match between the articles.

Suggested Articles

6. Article Search Options

I provide multiple ways to search for blog articles:

  1. All articles are available on the blog page, and you can scroll or use the browser search to find an article.
  2. Use the minimal list, which shows all blog posts grouped in years by title.
  3. Use Google.

Article Search

7. Prism Code Highlighting

I invested some time to create beautiful code snippets on my blog posts, as they are an essential part of my articles.

I use Prism with the Gatsby Prism Remark plugin to show code blocks in my markdown files:

export const getCategoryDisplayText = (category) => { if (category === 'aws') { return category.toUpperCase() } if (category.includes('-js')) { const name = category.split('-')[0] return `${capitalize(name)}.js` } return capitalize(category) }

I can highlight certain lines of code, and I show the programming language as a nice badge on the top right.

8. MDX

MDX is very powerful, and I use it for my tips page, where I inject the following React component into my Markdown files to create a beautiful comparison of two code blocks:

<div :class="isDisabled ? 'disabled' : ''"></div> <!-- Will render <div class></div> -->
<div :class="isDisabled ? 'disabled' : null"></div> <!-- Will render <div></div> -->

9. Generate Scripts

Inspired by Kent C. Dodds, I use multiple JS scripts to generate boilerplate files for new blog posts and tips.

For example, the blogpost.js script will generate a similar output in the console:

bash
? Title this is a test to see if my script is awesome ? Categories development, career, tools ? Release Date (format: yyyy-mm-dd) 2022-01-08 ? Dry run without creating files? (default: false) Yes Date: 2022-01-08 Slug: this-is-a-test-to-see-if-my-script-is-awesome Markdown data: --- title: "This Is a Test to See if My Script Is Awesome" categories: - "development" - "career" - "tools" cover: "images/cover.jpg" ---

The script asks for some mandatory information, converts the entered title to title caps, and finally generates the markdown file with the slug name at the correct directory.

Additionally, I have a script to generate a Table of Content (ToC) for a finished article and an image optimization script.

10. Open Source Analytics

I use Umami with a database hosted on Digital Ocean. I send custom events if a visitor, for example, clicks a social link, subscribes to the newsletter or, edits an article on GitHub. These events provide some valuable insights into how many visitors are using the features on my portfolio website.

Analytics Events

Conclusion

My portfolio website is my favorite digital playground. I love to experiment with different new features and try to provide the best possible experience for visitors.

The source code of my website is available on GitHub, so feel free to take a closer look if you are interested in implementation details. Leave a comment if you want more information about a specific topic.

If you liked this article, follow me on Twitter to get notified about new blog posts and more content from me.

Alternatively (or additionally), you can also subscribe to my newsletter.

I will never share any of your personal data. You can unsubscribe at any time.

If you found this article helpful.You will love these ones as well.
How I Replaced Revue With a Custom-Built Newsletter Service Using Nuxt 3, Supabase, Serverless, and Amazon SES Image

How I Replaced Revue With a Custom-Built Newsletter Service Using Nuxt 3, Supabase, Serverless, and Amazon SES

Track Twitter Follower Growth Over Time Using A Serverless Node.js API on AWS Amplify Image

Track Twitter Follower Growth Over Time Using A Serverless Node.js API on AWS Amplify

Build and Deploy a Serverless GraphQL React App Using AWS Amplify Image

Build and Deploy a Serverless GraphQL React App Using AWS Amplify

Create an RSS Feed With Nuxt 3 and Nuxt Content v2 Image

Create an RSS Feed With Nuxt 3 and Nuxt Content v2