trilok.tech homepage on desktop: the name, role line and two actions beside the green coded portrait.
The live homepage on desktop.

Web design & engineering · Case study

Trilok.tech

A cybersecurity portfolio with an animated coded portrait and clear controls for motion.

Role
Website design and delivery
Stack
HTML · CSS · JavaScript · Canvas 2D · Cloudflare
Visit trilok.tech ↗

Project snapshot: October 2026

Brief & role

The brief

Trilok needed a portfolio that organised his career information for recruiters while expressing a distinctive cybersecurity identity. The design needed to work on phones and remain usable with reduced motion or without JavaScript.

I created the website and led its design and delivery. I shaped the positioning and visual direction, directed refinements to the portrait interaction and mobile presentation, reviewed the finished website on desktop and phone, and coordinated the launch.

Signature interaction

A portrait with controlled motion

The portrait is rendered as green characters with a subtle breathing animation. A reveal control introduces colour, while a separate pause control stops the effects. Reduced-motion and static alternatives are also available.

A short screen recording of trilok.tech on desktop. The coded portrait breathes at rest. After “Reveal portrait colour” is selected, natural colour fills the face. After “Pause effects” is selected, motion stops and the face stays in colour. No audio.
  1. Coded portrait made of green glyphs at rest.

    Rest. With default settings, the coded portrait breathes in green glyphs.

  2. Portrait with the face in natural colour and green glyphs on the jacket.

    Reveal begins. Selecting “Reveal portrait colour” brings natural colour into the face while glyphs remain on the jacket.

  3. Revealed portrait with the face in colour and glyphs around it.

    Revealed. Once revealed, the face stays in colour while the surrounding glyphs keep moving.

  4. Green glyph portrait held still after pausing effects.

    Manual pause, captured separately. With the portrait in its default green state, selecting “Pause effects” holds it still and changes the control to “Resume effects”. This still shows a different colour state from the video above.

Fallback states, captured separately

  1. Still green glyph portrait with a reduced-motion preference emulated.

    Reduced motion. With a reduced-motion preference emulated in the browser, the glyph portrait remains still.

  2. Static portrait image shown when JavaScript is disabled.

    JavaScript disabled. With JavaScript disabled, a static image replaces the animated portrait.

Design details

Design decisions

Capability section with “Detection engineering” selected: the list, the panel and the button row show the same selection.

Connected capability navigation

Selecting a capability updates its panel, highlighted state and browser history together.

This keeps the selected content consistent across links, keyboard navigation and the Back button.

Emulated mobile view: the “Reveal portrait colour” control below the portrait, then full-width hero actions.

A mobile layout with clear actions

On phones, the reveal control sits below the portrait and the main actions use equal-width buttons.

The controls have their own space instead of competing with the portrait.

Hero text: serif name, mint monospace role line, and mint primary and cyan-outlined secondary actions on a dark background.

A restrained technical palette

A dark background combines serif headings, monospace accents, mint primary actions and cyan secondary controls.

These choices distinguish the page’s name, role and actions without adding competing visual styles.

Desktop & mobile

Designed for desktop and mobile

trilok.tech homepage on desktop: the name, role line and two actions beside the green coded portrait.trilok.tech homepage in an emulated mobile view: menu, portrait, reveal control, name and full-width actions.
The same homepage on desktop and in an emulated mobile view. The mobile image is not a physical-device test.

Engineering

How it was built

How this site works

From the source code to what runs on your screen, in three delivery stages. Select a step for a short explanation.

The arrows show how the site reaches you, not the order in which each technology runs. Your browser also reads the HTML and CSS and runs the JavaScript.

  1. Source & build

    HTML

    Plain HTML holds the content, headings and links, so everything important is readable before any effects load.

    CSS

    CSS sets the layout, colour and responsive spacing, including the phone layout and the reduced-motion styles.

    JavaScript

    Vanilla JavaScript, with no framework, adds the interactive parts, such as the portrait controls.

  2. Hosting

    Cloudflare

    The finished files are hosted as static assets on Cloudflare and delivered over HTTPS.

  3. In your browser

    Canvas 2D

    Canvas 2D draws the coded portrait and the moving code-style background. “Reveal portrait colour” and “Pause effects” control it, and a still image replaces it when JavaScript is off.

Preparing the portrait before it loads

The JavaScript includes precomputed data for drawing the portrait, reducing the work needed when the page starts.

Trade-off: this adds download size in exchange for less initial computation. Recorded comparisons checked the rendering against the earlier version, and a fallback handles unusable data.

Keeping navigation state in the URL

Capability panels and selected states follow the URL, allowing direct links and browser navigation to use the same selection.

Trade-off: each selection adds a history entry, so the Back button steps through earlier selections.

Static hosting on Cloudflare

The site uses static files hosted on Cloudflare. Release checks compare the published files with the reviewed version.

Trade-off: the site has no application backend, so résumé requests open the visitor’s email app.

Quality · considerations · credits

Quality and considerations

Recorded checks

  • Launch checks covered published files, HTTPS, security headers, redirects and missing-page responses.
  • The implementation report recorded passing unit tests; a separate reviewer reran the release-specific subset. These are historical results, not a new full-site audit.
  • I checked the site’s controls on a phone. The recorded check did not include device or browser versions.

Known limitations

  • In recorded pre-launch mobile tests, the coded portrait took around 3–4 seconds to become ready, exceeding the project’s 2.5-second target. This measured portrait readiness, not overall page load.
  • Firefox, Safari and screen-reader coverage remains incomplete.

Role and credits

  • I created and delivered Trilok.tech, from visual direction to launch.
  • Trilok supplied his professional content and approved an AI-generated portrait source. The cybersecurity experience presented is his.
  • The dark visual direction and coded portrait draw on mukesh.wiki as a design reference.