My personal portfolio website built with SvelteKit and hosted on Vercel.
Yes, you can fork this repo. Please give me proper credit by linking back to romanusangina.com. Thanks!
I value keeping my site open source, but plagiarism is bad. It's always disheartening whenever I find that someone has copied my site without giving me credit. I spent a non-trivial amount of effort building and designing this website, and I am proud of it! All I ask is that you don't claim this effort as your own.
Please also note that I did not build this site with the intention of it being a starter theme, so if you have questions about implementation, please refer to the SvelteKit docs.
This site uses a CSS masking trick to display images with theme-aware coloring. Instead of serving full-color images, I use dithered, transparent PNGs as mask images. The actual color comes from CSS custom properties, which means images automatically adapt to the current theme without needing multiple image variants.
.image {
background-color: var(--color-image);
-webkit-mask-image: url('/path/to/dithered-image.png');
mask-image: url('/path/to/dithered-image.png');
mask-size: cover;
}
This approach keeps the site lightweight since dithered images with transparency compress well, and the color palette can be controlled entirely through CSS.
The process is manual but straightforward:
Resize your images
Remove the background (optional)
Dither the image
#000000 (black) as one of the colors in your palette#ffffff white)Remove one color to create transparency
#000000) to create the transparent maskI wanted this site to be lightweight, which is why I chose Svelte and accepted the manual image processing workflow. The performance gains are worth the extra effort. I'll likely build an in-project dithering tool in the future to streamline this.
git clone https://github.com/romanus-angina/portfolio.git
cd portfolio
npm install
npm run dev
npm run build
npm run preview
This site is configured for deployment on Vercel. Push to your main branch and Vercel will handle the rest, or run:
vercel
| Color | Light Theme | Dark Theme |
|---|---|---|
| Background | #ffffff |
#0a0a0a |
| Text | #1a1a1a |
#f0f0f0 |
| Text Muted | #555555 |
#999999 |
| Accent | #84161f |
#22B464 |
| Image Tint | #991925 |
#6ae4a3 |