Skip to content
View Robotbino's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report Robotbino

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
Robotbino/README.md

Bino Hlongwana

Full-Stack Developer | Musician — Spring Boot · Angular · React — Curious about things :)

Full-stack developer in Pretoria, South Africa.
Enterprise Java by day · Spring Boot + Angular/React after hours · tests, docs and trade-offs included.

Open to full-stack roles Portfolio LinkedIn Email

Hiring? hlongwanabino@gmail.com or LinkedIn. Every project below has its code and docs in the open.

👋 About Me

I write enterprise Java web applications during the day, the kind with long-lived business rules, workflow engines and a QA process behind every release. After hours I build on the modern stack: Spring Boot APIs and Angular/React front ends.

That split is deliberate. Work taught me how software survives in production. My own projects are where I go deep on the modern stack (stateless JWT auth, Angular Signals, WebGL, transactional checkouts) and then write down why I chose what I chose.

  • 💼 3 years of professional full-stack experience, since June 2023
  • 🎓 BSc Information Technology, North-West University (2023)
  • 🧭 "Less but better": simple interfaces, dependable code, honest docs
  • 🕹️ Side quests: producing music, soccer, reading, and far too much anime 🗡️
  • 🐍 The snake at the bottom of this page eats my commit history. Stick around for it.

🔭 Right Now

Updated October 2026

  • 🔨 Deploying: GameStore, from localhost to live. Docker and a production profile first, then the API on an Oracle Cloud Always-Free VM and the UI on Cloudflare Pages, then CI on every push. It is feature-complete locally; a URL is the next gap.
  • 📚 Studying: AWS Certified Cloud Practitioner · Oracle Certified Associate, Java SE 8 Programmer (1Z0-808)
  • 🤖 Next up: AI engineering in Java, starting with retrieval-augmented generation (RAG), and running LLMs locally with Ollama.

🛠️ Tech & Tools

Languages
Java, TypeScript, JavaScript, Python, C#

Frontend
Angular, React, HTML5, CSS3, Sass, Vite, Bootstrap
➕ Angular Signals · RxJS · React Router · WebGL (OGL) · GLSL

Backend & Data
Spring Boot, Hibernate, MySQL, .NET
➕ Spring Security · JWT · Spring Data JPA · Flyway · Java EE · Oracle SQL · ASP.NET Core · EF Core · SQL Server

Testing & Quality
GitHub Actions
➕ JUnit 5 · MockMvc · H2 · Jasmine · Karma · ESLint · Prettier · Architecture Decision Records

Tools & Platforms
Git, GitHub, Postman, Maven, IntelliJ IDEA, VS Code, Eclipse, Docker, Netlify, Azure
➕ Claude Code for AI-assisted development


📂 Featured Projects

Project What it is
🎮 GameStore · API · UI Full-stack game store with a simulated checkout, rewards and an admin portal
👔 Employee Manager · API · UI Spring Boot API and Angular client with JWT auth across the seam
🃏 Code Pairs · Repo · Live Memory game on Angular Signals, with combo scoring and ranks from S to C
🌌 Personal Portfolio · Repo · Live One looping scroll over a WebGL aurora and star map, no router, 15 ADRs

🎮 GameStore: a complete commerce loop, end to end

Started as a React UI exercise. I kept asking what an actual store needs behind the pretty grid, and it turned into a full-stack app with the whole loop: discover → wishlist → cart → checkout → own. Two audiences share one API: customers get live search, a wishlist, checkout, a library, a profile with their rewards ledger and a settings page; admins get a separate portal with full CRUD over games and users.

GameStore checkout, pay step: Card, Stripe and Payflex options, a live card preview and a 'Demo checkout, no money moves' badge

React 19 TypeScript Vite 7 React Router 7 Spring Boot 3 Spring Security JWT MySQL 8 Flyway JUnit 5

🔗 Backend · Frontend · In-repo handbook: API side · UI side

Engineering notes: checkout, auth, schema, tests
  • Checkout that respects money, even fake money. One transaction snapshots each line's title and price, grants ownership and returns a DEMO- receipt. The rewards ledger (earn 10 points per R1, redeem 100 points for R1 off) is always recomputed on the server. Card, Stripe and Payflex are all simulated: card details never leave the browser, and a card number ending in 0002 is declined locally so the failure path can be exercised.
  • Security is the backbone, not a bolt-on. Stateless JWTs, USER/ADMIN roles in one ordered filter chain, identity taken only from the token (never from a ?userId=), and authorities reloaded from the database on every request: one extra read per call, in exchange for a role change taking effect immediately. A public /demo page walks through the 401 → 403 → 200 access ladder.
  • Built to be trusted. Flyway owns the schema through six versioned migrations with ddl-auto=validate, so drift stops the app at startup instead of hiding. The API is 26 routes across 7 controllers, and 63 integration tests run it against in-memory H2 (MySQL-only constraints are on the known-limitations list). The two repos share one engineering handbook, searchable, with diagrams and a scorecard, and each README keeps a plain list of known limitations.
  • Small things that add up. Debounced live search with a keyboard-navigable combobox, server-side pagination, optimistic wishlist toggles, skeleton loaders, and a motion system that respects prefers-reduced-motion.

👔 Employee Manager: stateless auth across two apps

Plenty of tutorials stop at "login works". I built this one to find out where token-based auth actually leaks: the seam between an API and a client that has to remember everything. Login and the filter chain are done; the employee routes themselves are still open, and closing them is the first item on the MVP roadmap.

Java 17 Spring Boot 3 Spring Security 6 JWT MySQL Angular 19 SCSS

🔗 Backend · Frontend

Engineering notes: the JWT seam, theming, decisions
  • Java 17 / Spring Boot 3 REST API over employee records. Registering and logging in issue JWTs, and a once-per-request filter validates the Bearer token on every call. The employee routes themselves are still open; the architecture doc names closing that gap as the first of four scoped MVP changes, alongside a global error contract, server-side pagination and CSV export.
  • The Angular side holds up its end. An HTTP interceptor attaches the token and signs out on a 401 or 403; a route guard keeps the protected routes protected, with a return URL, instead of just hiding the nav link.
  • A UI that only promises what it does. Light and dark themes with measured WCAG AA contrast (lowest 6.16:1 in light, 5.04:1 in dark), a dense table that drops columns by priority on smaller screens, distinct loading, empty, no-results and error states, and toasts instead of alert(). Three buttons that led nowhere were removed, not styled.
  • Decisions on paper. The API ships an architecture and MVP roadmap doc; the client records its theme and layout choices as three ADRs and keeps a CONTEXT.md glossary that separates User, Employee and Employee Code.

🃏 Code Pairs: a memory game, rebuilt to learn Signals

A code-themed card matching game that I tore down and rebuilt on Angular's standalone components and Signals. The rewrite was the point.

Angular 19 Angular Signals TypeScript SCSS Jasmine Netlify

🔗 Repository · Live Demo

Engineering notes: derived state, game design, accessibility
  • Game state as derived state. One service holds the raw state in writable signals, and everything else (multiplier, accuracy, rank) is computed from it, which removes a whole class of stale-UI bugs. The board locks during a mismatch, every deal gets fresh card ids, and the confetti runs outside Angular's zone.
  • Actual game design. Three difficulties, each with its own grid, lives and par time, from a 2×2 board in 12 seconds to 4×3 in 70. Consecutive matches ramp a combo multiplier from 1× to 3×, and every win is graded S, A, B or C.
  • Neo-brutalist "Paper & Ink" design system built on CSS custom properties, with 3D CSS card flips. Every button splits into a stationary hit box and a moving face, so a press can't slide off its own target.
  • Playable by everyone. Keyboard controls, screen-reader announcements for every flip and match, full reduced-motion support, and Jasmine/Karma unit tests on the game rules, the scoreboard and the card.

🌌 Personal Portfolio: an Awwwards-inspired site

I didn't want a résumé with a nav bar. Boring. This one is a single continuous scroll: five destinations (Home, Experience, About, Certifications, Contact) that wrap into a seamless loop, floating over a WebGL aurora and a star map drawn from real stars.

Angular 21 Angular Signals TypeScript OGL WebGL GLSL CSS3 Portfolio CI status

🔗 Repository · Live Demo · ADRs

Engineering notes: the loop, the frame pulse, the dependency diet
  • No router. The whole site is one scroll loop with a cloned first section at the end, so reaching the bottom wraps back to the top without a jump or a route change.
  • One frame loop drives everything. A GLSL aurora and a WebGL star map, both rendered with OGL, share a single requestAnimationFrame pulse outside Angular's zone, which keeps change detection off the 60 fps hot path. The star map sets each star's depth from its real distance (log-scaled), tints the halos by spectral class in dark mode and swings one camera between destinations; if WebGL is slow or software-rendered it falls back to SVG for the session, and phones get a CSS aurora instead.
  • Lean by decision. The only third-party runtime libraries beyond Angular are OGL and RxJS: no UI kit, no animation library, no icon font. three.js was rejected at roughly 129 kB gzipped, inline SVG icons replaced an icon font, fonts are self-hosted, and every component is OnPush, enforced by lint. The move to Angular 21 took npm audit from 3 critical and 33 high findings to zero critical and zero high.
  • Every real decision is an ADR. Fifteen so far, including one that was proposed and rejected, and each records the alternatives it turned down. The repo also ships an interactive onboarding guide for anyone reading the code cold.
  • Every push to main and every pull request is checked. CI runs lint, a format check, all 29 spec files, and a build that generates the Content-Security-Policy and fails if it can't.

🧱 How I Build

  • Decisions get written down. 15 ADRs in the portfolio, 3 in Employee Manager, and one engineering handbook spanning both GameStore repos.
  • Tests live where the logic lives. 63 integration tests on the GameStore API, 29 spec files in the portfolio's CI, unit tests on the Code Pairs game rules.
  • The schema is code. Flyway, six migrations, ddl-auto=validate: drift fails startup instead of hiding.
  • Accessibility is part of done. Keyboard play, screen-reader announcements and reduced motion in Code Pairs and the portfolio; measured WCAG AA contrast in both Employee Manager themes.
  • Limitations are stated plainly. Both GameStore READMEs keep a "Known limitations" section, and the Employee Manager architecture doc names its own auth gap as the first thing to fix.

🧰 More on My GitHub

Project What it is Built with
📋 Agile Board Kanban-style task manager: switch between boards, TODO / DOING / DONE columns, and a light/dark theme that is remembered along with your sidebar and active board Vanilla JS (ES modules) · CSS · localStorage
😂 Meme Generator Pulls templates from the Imgflip API and lets you caption them; my hands-on lesson in React state and controlled forms, built while following Scrimba's Learn React course React 19 (RC) · JavaScript · Vite
🚚 EcoPower Logistics API University project (NWU CMPG323, 2023): ASP.NET Core 6 Web API with ASP.NET Core Identity and JWT (Admin/User roles issued in the token), EF Core on SQL Server and Swagger docs. Ran on Azure for the module; retired since C# · .NET 6 · EF Core · SQL Server
🌦️ Weather App 🚧 Paused: the first UI skeleton (nav, a current-conditions card with placeholder values, an hourly-forecast stub) is in place; live data is next when I pick it back up React 19 · Vite

📜 Courses & Certificates

Certificate Issuer Issued Proof
Claude Code 101 Anthropic Academy Apr 2026 Verify
Claude 101 Anthropic Academy Apr 2026 Verify
JavaScript Scrimba Dec 2025 Verify
Learn HTML and CSS Scrimba Dec 2025 Verify
Artificial Intelligence Fundamentals IBM SkillsBuild Oct 2024 Verify

📈 GitHub Activity

GitHub contribution streak: total contributions, current streak and longest streak

Most used languages across my public repositories

🐍 Contribution Snake

Contribution snake animation


Looking for a full-stack developer who writes the docs too?
hlongwanabino@gmail.com · LinkedIn

Popular repositories Loading

  1. CMPG323-Project-2-37687638 CMPG323-Project-2-37687638 Public

    University project (NWU CMPG323, 2023): ASP.NET Core 6 Web API for EcoPower Logistics with JWT auth, EF Core on SQL Server, Swagger docs and an Azure deployment.

    C#

  2. EmployeeManager-Application EmployeeManager-Application Public

    Java 17 / Spring Boot 3 REST API for managing employee records, secured with stateless JWT authentication (Spring Security 6) over MySQL.

    Java

  3. CodePairs CodePairs Public

    Code-themed memory game on Angular 19 standalone components and Signals, with combo scoring, S–C ranks, and keyboard and screen-reader support.

    TypeScript

  4. PorfolioWebsite PorfolioWebsite Public

    My portfolio: one looping scroll over a WebGL aurora and a morphing star map. Angular 21 + Signals, no router, documented with ADRs and gated by CI.

    TypeScript

  5. gameStore gameStore Public

    React 19 + TypeScript game store: live search, wishlist, cart, simulated checkout with rewards points, and an admin portal. Front end for gameStore-backend.

    TypeScript

  6. EmployeeManager-Application-Frontend EmployeeManager-Application-Frontend Public

    Angular client for the Employee Manager API: JWT interceptor and route guards, light/dark themes with WCAG AA contrast, and a responsive employee table.

    TypeScript