Portfolio

Portfolio

Started on 02/22/2021

Last updated on 11/15/2024

71 hours in total

My project portfolio website showcasing all of my projects and providing a point of contact.

Details

How does it work?

All of my project details, icons, and images are all stored in an Obsidian vault. The project title, description, start date, featured status, time spent, and tools used are all stored as properties at the top of each of the project's markdown files.

I wrote a custom parser that goes through the obsidian vault, extracting the properties and generating a JSON array with every project. Here's the one for this project:

1{ 2 "id": "portfolio", 3 "name": "Portfolio", 4 "description": "My project portfolio website showcasing all of my projects and providing a point of contact.", 5 "startDate": "2024-02-15", 6 "featured": false, 7 "time": 4292, 8 "tools": [ 9 "nextjs", 10 ... 11 ], 12 "images": [] 13}

Home

The home page uses this list to generate project cards for both the featured projects, and all the other projects.

Project Page

The projects page also uses the list of projects to find the data for the project that is being viewed. It then uses the list of image urls to populate the image carousel at the bottom of the page. Lastly, the details.md file is loaded, filling in the main contents of the project page. A table of contents is dynamically generated from the heading in the details file.

Analytics

I implemented Mixpanel tracking to gather a little more information about where my visitors where coming from, and what they were looking at. This gave me insights about which projects are most popular, as well as see how many people click on links in the contact section.

Honeypot

If you don't know, a honeypot is a computer security mechanism set to detect, deflect, or, in some manner, counteract attempts at unauthorized use of information systems. According to Wikipedia. I noticed thousands of requests trying to access vulnerable or malicious Wordpress resources. Of course these resources don't exist since I'm not using Wordpress. I thought I would have a little bit of fun with this. I wrote a fake login page that logs all attempts. Naturally I had to make this page Winnie the Pooh themed. Well as Winnie the Pooh as I can make it without Disney breathing down my neck. I wrote a few accompanying paths and api endpoints that do similar things. If you haven't already, you should try to find them. Happy hunting!

© 2026 Daniel Stoiber

Built with ❤️ and purpose.