// skills.html

Technical Skills

Organised by engineering layer — not by arbitrary percentage bars. Skills assessed honestly: Proficient, Working Knowledge, or Learning.

Skill level legend

Knowledge levels:

PROFICIENT — Use it regularly, confident in depth
WORKING KNOWLEDGE — Know it, have used it in projects
LEARNING — Actively studying, building with it

Skills by engineering layer

Frontend Layer

Proficient
HTML5

Semantic elements, document structure, forms, ARIA, metadata, accessibility attributes.

Proficient
CSS3

Custom properties, Flexbox, Grid, animations, media queries, specificity management, architecture.

Proficient
Vanilla JavaScript

DOM manipulation, event handling, closures, modules, async/await, Fetch API, localStorage.

Proficient
Responsive Design

Mobile-first methodology, fluid layouts, breakpoint strategy, viewport units, container queries.

Proficient
DOM API

Element querying, event delegation, mutation observation, dynamic rendering, class/attribute manipulation.

Proficient
Accessibility (WCAG)

Semantic HTML, keyboard navigation, ARIA roles/attributes, colour contrast, focus management.

Working Knowledge
SVG

Inline SVG creation, path manipulation, animation, charts, icon systems.

Working Knowledge
Web APIs

IntersectionObserver, ResizeObserver, History API, URLSearchParams, Canvas basics.

Working Knowledge
ES Modules

import/export syntax, module architecture, dependency management without bundlers.

Working Knowledge
Performance

Image optimisation, lazy loading, Critical CSS, font loading strategies, Lighthouse audits.

Backend Knowledge

Working Knowledge
Node.js

Runtime environment, file system, modules, package management, http module basics.

Learning
Express.js

Routing, middleware, request/response cycle, static file serving, error handling.

Learning
REST APIs

HTTP methods, status codes, endpoint design, JSON responses, input validation.

Learning
Authentication

Session-based auth, JWT basics, password hashing, protected routes.

Working Knowledge
CRUD Operations

Create, Read, Update, Delete patterns — implemented in both client-side and server-side contexts.

Data Layer

Working Knowledge
SQL

SELECT, INSERT, UPDATE, DELETE, JOINs, WHERE, GROUP BY — core query writing.

Learning
SQLite

Embedded database, schema creation, Node.js integration via better-sqlite3.

Working Knowledge
Database Design

Normalisation basics, entity relationships, foreign keys, schema planning.

Working Knowledge
Data Integrity

Constraints, NOT NULL, UNIQUE, data validation at application and DB layer.

Proficient
localStorage / JSON

Structured client-side persistence, schema versioning, serialisation/deserialisation.

Engineering Practices

Proficient
Git

Version control, branching, merging, rebasing, commit discipline, .gitignore.

Proficient
GitHub

Repositories, README documentation, issues, pull requests, GitHub Pages.

Proficient
Debugging

Browser DevTools, console methods, breakpoints, network panel, performance profiling.

Working Knowledge
CSS Architecture

Custom properties, layered stylesheets, component-driven organisation, specificity management.

Working Knowledge
Deployment

GitHub Pages, Netlify, basic FTP hosting, domain configuration, HTTPS.

Learning
Testing

Manual cross-browser testing, structured test cases, beginning automated testing.

Working Knowledge
System Architecture

Module boundaries, component contracts, separation of concerns, documented decisions.

Working Knowledge
Cross-Browser Compat.

Feature detection, vendor prefixes, progressive enhancement, testing on real devices.

Day-to-Day Tools

📝
VS Code

Primary editor

🖥
Chrome DevTools

Debugging + profiling

🐙
Git + GitHub

Version control

🎨
Figma

Design reference

⚡
Netlify

Deployment

💻
Terminal

Git, Node, npm

📐
Lighthouse

Performance audits

🌐
Firefox DevTools

Cross-browser testing

See these skills applied.

The projects page shows how these capabilities are used together to solve actual problems — not just listed on a screen.