8LS Logo
GitHub

How to visualize your skills with a Svelte component

A Journey from Startup Concept to a Functional Skill Visualization Tool

In 2019, I set out to create a platform that would allow users to visualize their skills and connect with others based on shared expertise. The idea was simple: a cleaner, more focused clone of LinkedIn, where you could easily map out your skills and instantly find people with similar abilities. I called the concept Codepals, with the ambitious goal of taking it from idea to launch in just 12 months.

While I didn’t end up launching the platform, the journey led me to develop a unique Svelte component to visually represent skills in a structured way. This post covers the components I built and the lessons learned along the way.

The SkillWurst Component

My initial approach to visualizing skills was to arrange them side by side — a straightforward but effective layout. However, I soon evolved the design into something more meaningful: a tree-like structure where each skill acts as a node, and its sub-skills are represented as child nodes. The result is the SkillWurst component, where color gradients signify different skill levels and tree depth, offering a quick, intuitive way to assess skills hierarchically.

Programming Languages
C
C#
DotNet 7
Opc.UaFx
C++
COBOL
Delphi / Object Pascal
HTML / CSS
UIKit
bootstrap
bulma
JavaScript / NodeJS
@magic-sdk/admin
D3.js
Node.js
Svelte
Vite
magic-sdk
p5.js
Python
Flask
NumPy
Pandas
Pillow
Requests
Tkinter
Uvicorn
asyncua
buildhat
couchdb
django
fastapi
gunicorn
mypy
paramiko
pylint
pytest
sqlalchemy
SQL
Svelte
TACL
Visual Basic
Architecture
Containerization
Docker
Docker-Compose
Design Patterns
Repository
Microservice Architecture
Progressive Web Applications
REST-APIs
Tools & Utilities
Apple Mail
Firefox
Git
Google Drive
PHPBB
Static Site Generators
Hugo
Jekyll
VSCode
Video Editing
Final Cut Pro
Vim
phpMyAdmin
Infrastructure
Cloud Providers
Linode
Tencent
Databases
NoSQL
CouchDB
MongoDB
Relational DBs
MariaDB
PostgreSQL
SQLCI/MX
SQLite
Operating Systems
Alpine Linux
Centos
MacOS X
Ubuntu
Windows
Raspberry Pi
GPS Tracking / GPRS
LCD Screen
Smartwatch
WSO2 Identity Management
Webserver / Loadbalancing
Apache
NGINX
Traefik

This structure provides a clear, organized view of a person’s skill set, making it easier to identify key areas of expertise and their related sub-skills.

The SkillTree Component

Building on the concept of the SkillWurst, I developed the SkillTree. In this implementation, each skill is visualized as a node, and the connections between related skills form the edges of a graph. This is a more familiar model for graph-based visualizations, making it suitable for scenarios where relationships between skills are as important as the skills themselves.

The SkillTree component leverages D3.js to handle the force-directed layout, ensuring that the graph dynamically arranges itself in a way that makes the connections between skills both clear and visually appealing.

Lessons Learned

Through this project, I deepened my understanding of both Svelte and D3.js, specifically in their integration to build interactive visualizations. Although Codepals never saw the light of day, the components I developed continue to work seamlessly and have even found new life in projects like this blog.

The process of turning a concept into a functional product—even if it doesn’t get launched—can offer valuable insights and skills. For me, this experience was a reminder that sometimes, the journey is just as rewarding as the destination.