A detailed look at the projects that make up my portfolio: what they are, the purpose behind each one, and the stack that makes them work.
View projects ↓An automated QA suite that tests the Shipping Hub platform end to end — API, UI and BDD — in a CI pipeline that runs nightly and on pull requests.
A professional QA automation suite that validates the Shipping Hub platform (project 02) the way a QA Automation Engineer would: API contract and functional tests with Karate, end-to-end UI journeys with Selenium under the Serenity Screenplay pattern, BDD scenarios with Cucumber/Gherkin, and a hand-runnable Postman/Newman collection — including security-oriented negatives such as rate limiting, broken authorization and tampered tokens. The Page Object Model was retired in favor of Screenplay (Actors performing Tasks, asking Questions), which stays maintainable as the UI surface grows. All layers run in CI: the pipeline spins up the API, the web app and a headless browser, produces Serenity living documentation plus a Karate report, and includes a SonarQube quality-gate step.
To demonstrate professional QA automation against a real distributed system: designing a layered test strategy (API, BDD, UI), automating it in CI, and gating quality — reflecting hands-on experience testing production software rather than toy examples.
A reactive, bilingual interface on top of a distributed architecture that connects services written in different languages into a single system.
A UPS/FedEx-style parcel shipping & tracking platform. A reactive, SEO-optimized bilingual (es/en) web interface sits on top of a distributed backend: a transactional Node.js API — with JWT auth, a shipment state machine and a wallet backed by a double-entry ledger — talks to PostgreSQL, while stateless Python microservices handle pricing/ETA and PDF labels. Anyone can track a parcel with no account.
To demonstrate end-to-end full-stack capability: designing a modern, fast frontend while orchestrating a distributed backend where different languages and services (Node.js and Python) communicate and share persistence. It reflects experience with real production architectures, not just a static site.
A carefully paced tool that downloads whole short-drama series your own TikTok account can already watch, for personal offline viewing — it never unlocks paid episodes or bypasses DRM.
A downloader for whole short-drama series that your own TikTok account can already watch — several series in one run — for personal offline viewing, with three front ends: a Python CLI, a small local web page (usable from a phone or TV on the home network with an access token) and a Chrome extension for Windows, macOS and Linux. Episodes are saved as “<Series> - Episode NN.mp4”, exactly as served (nothing is re-encoded), with the cover embedded in the MP4; every file is verified — complete, with an audio track, the expected length — before it counts, and interrupted runs resume. Paid episodes the account has unlocked download like free ones; locked ones are listed and skipped. It never unlocks paid episodes or bypasses DRM or access controls: encrypted media is detected and never kept.
To demonstrate careful, polite automation on a platform that guards against bulk downloading: it never tries to defeat that protection — no proxies, no stealth, no parallel requests — and instead behaves like one person watching: one request at a time, randomized pauses, rests, a hard stop on any refusal and a 30-minute cooldown. It also treats media integrity and testability as features, tested against fixtures and a local fake server, never the real site.
This very site: a two-page portfolio built from scratch without frameworks — pure web technologies only.
A personal portfolio made up of two connected pages: the main page — with my introduction, experience, and skills — and this projects page. Everything is built from scratch with plain HTML, CSS, and JavaScript, and includes a hero greeting that rotates through four languages, reveal and typing animations, a background that subtly shifts colors, and a fully responsive design.
To demonstrate command of frontend fundamentals without relying on frameworks: building an interactive, polished experience using only native web technologies. It is also my calling card in action: the project you are evaluating is the very page you are reading it on.