Personal Website
- Web front- & backend for my own website
Project Summary
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 😄