Personal Website

 - Web front- & backend for my own website

Project Summary

2024RELEASED & ongoing

My personal website 😃. It all started from a simple HTML page around 2007, to a Drupal 6 to 9 (CMS) based site. <b>Now</b> it's made fully with Angular and a tiny NestJS backend with Continuos Integration & Deployment to Kubernetes 💜. The website is modular built and other (future) projects will use certain components which lead to continuos improvements of all my web projects =)

Project Details

  • Website made with Angular 18
    • SSR (ServerSideRendering) & PAW (Progressive Web App)
  • Backend written with NestJS
    • Handles contact form
  • GitLab CI & Deployment
    • Commit to develop / release branches
    • After review and merge into master, new build is created
    • Created build is deployed to Kubernetes / Docker
  • Image Lazy Load
    • Preprocess images into optimized formats and sizes
    • Dynamically load correct images (hopefully this works everywhere, would love to get feedback)
  • Custom Privacy Consent tool. Full control and easy to use for end users without frustrating UI.
    • One click or customize settings
    • DoNotTrack support
    • In the future, I eventually offload it into backend to store IP as hash and document consent + no need to store on client
  • I *might* have added too many animations / transitions, but I love it :D
  • (I removed Drupal because it was too bloated & I rather develop my own solution with a few packages which I can upgrade + redeploy)
  • I made several Open Source contributions on GitHub
    • I upgraded ng-animate (https://github.com/jiayihu/ng-animate) to angular 14 and added missing animations + fixed bugs
    • I added features and bug fixes to ipp (https://github.com/MarcusCemes/image-processing-pipeline)

Project Information

Used (noteworthy) packages

Frontend

  • @angular (Angular 18+)
  • @mdi/svg (material icons)
  • @ngneat/until-destroy (helpful utility)
  • @hkjeffchan/ngx-scroll-to
  • ng-lazyload-image
  • ngx-bootstrap (Bootstrap 5)
  • ngx-countup
  • ng-animate
  • ngx-markdown
  • ngx-scrollbar
  • angulartics2
  • ngx-gallery
  • three.js

Backend

  • @nestjs
  • better-sqlite3 (for contact form temporary storage DB)
  • nodemailer + handlebars (for contact form notification to myself)

Development

  • cli-real-favicon
  • @ipp/cli

Roadmap for 2025

  • Upgrade to ng20
  • Implement search
  • Implement a nice blog (I wanted to have this for so long) with markdown support
  • Implement basic comments for blog
  • Better sitemap generation / offload to backend
  • Eventually offload projects data into backend
  • Continue on improvements to performance and page load
  • 100% Test coverage 😅
  • Even nicer showcase of projects & insights
  • Better credits
  • Eventually some blog posts about this awesome site 😄