Cover Image
Page 01 / 12
DHC
SELECTED WORKS
INTER-
DISCIPLINARY
STUDENT
Dhruv Heith Chheda
Websites, procedural art and games
heith.me
Project 01: heith.me / Design & Development
Page 02 / 12
Chasing
Awwwards

I spend a lot of time looking at Awwwards-recognised portfolios. I wanted to see how close I could get to the work I admire, and find out which parts I could build myself. This became heith.me, the site where I collect my design work, code and games. The landing page opens through overlapping paper panels, with a video reel beneath them. I wanted exploring the site to be part of seeing the work.

Website Preview 1 - Landing
Website Preview 2 - Full Scroll
Drafting the Landing
Page 03 / 12

Designing the landing page took much longer than I expected. I kept swinging between versions that felt bleak and versions that were too janky to use. These studies helped me settle on the overlapping paper panels. Their edges gave me a way to divide the screen, place the large links and control how the video would be revealed.

Process 1
Process 2
Process 3
Process 4
Process 5
Process 6
Rejected Design
Finding the Core Theme

I knew I wanted the landing page to have two very different sides to it. The video reveal was part of the idea from the start. I tried making the paper itself tear open, with the footage sitting underneath.

The final version has paper on top and grainy footage with television scanlines underneath. I wanted the paper to weave over and under itself in an Escher-like loop. Making that overlap work in the browser became its own problem.

Making the
Overlap Work
Page 04 / 12

I wanted the top panel to cover the right, the right to cover the bottom, the bottom to cover the left, and the left to cover the top. Each strip would pass over one neighbour and under the other.

CSS controls these panels’ front-to-back positions with a number called z-index. A single stack cannot make that loop: if A sits above B, B above C and C above D, D cannot also sit above A.

Four visible panels made from five layers The top panel covers the upper right panel, the left covers the top, the bottom covers the left, and a second lower right piece covers the bottom. The right panel is split into two matching pieces at the dashed line. The five layers are shown alongside from front to back. The visible overlap The layers behind it TOP LEFT BOTTOM RIGHT Video Right / lower part60 Bottom50 Left40 Top30 Right / upper part20 Frontz-index Back Dashed line: where the two right pieces meet

I split the right-hand panel into two matching copies. Clipping hides everything outside a chosen part of each copy. The visible upper part sits behind the stack, under the top panel. The visible lower part sits in front of the stack, over the bottom panel. That closes the loop.

Both copies have the same width, torn edge and paper texture. They meet at one cut line, so they read as a single piece. I recalculate that line as the panels move, keeping the join together throughout the opening.

Interaction Details
Page 05 / 12
Bridging the Browser

The opening animation is meant to mess with the browser a little. The tab starts with a transparent favicon. A glass version appears inside the loading screen and moves towards the tab. At the end, the real favicon appears. The timing makes the two feel like the same object.

Root Landing View
DHC Brand Reveal
Controlling the Focus

The introduction and the small “scroll” label need to feel printed on the paper. I keep their inner containers at a fixed size and attach them to the moving panel edges. As a panel shrinks, its text moves off screen with it. The torn edge clips anything that should no longer be visible, so the letters keep their shape instead of wrapping into a smaller space.

My initials, DHC, appear in two places: the introduction and the navigation. The left panel covers the navigation’s copy at first. When the paper retracts, the introduction moves away and the other copy is uncovered. The two copies appear to hand the name from the paper to the navigation.

Interactive Design
Page 06 / 12
The Disco Texts

The large links labelled Design, Devlogs and Projects sit over the video. They lead to this portfolio, my development notes and the other projects. Their colours change with the footage through the CSS effect mix-blend-mode: difference.

This effect compares the red, green and blue values of the letters with the footage behind them and displays the difference. White lettering inverts the footage. Similar input colours produce a dark result, which made some frames look muddy.

One colour channel, on a scale from 0 to 255:

255 - 0
=
255
128 - 120
=
8

I chose a sequence of text colours against particular moments in the footage and timed the changes to video playback. That gave me more control over the result than one fixed colour.

Two coloured outlines sit slightly to either side of each letter. They change colour at the same points in the video, keeping the offset lettering and the footage in step.

Cursor and Scroll

The paper panels move back as you scroll and uncover the footage with its television scanlines. Clicking the video window can carry the opening all the way through.

The cursor trails behind the pointer, stretches with its movement and changes over links and controls. I adapted the blob-shaped cursor from Xenobiota, a website by tol-is. I liked how its soft outline looked against the torn paper.

I also reduced repeated work: the paper texture is reused, scroll changes are grouped into animation frames, and the cursor’s movement loop rests when it settles.

Landing Page

Cursor reference: tol-is / Xenobiota
github.com/tol-is/xenobiota

Color & Disparity
Page 07 / 12

I looked at Wes Anderson’s use of colour: muted tones held close together, with one much louder colour interrupting them.

Reference: symmetrical red palace with a muted mauve-and-gold palette and one saturated red outlier
Wes Anderson colour reference,
found via Tumblr.

In this reference, the yellows, greys and muddy tones sit together, while the red stands out and the purple feels almost alien. I used earthy brown, mauve and green for the paper panels, then let the video introduce the neon colours.

Paper and Video

Each paper panel has its own colour, and those colours carry through to the destination pages. Keeping them muted leaves room for the reel’s bright, shifting colours. The large areas of paper hold the composition together while the footage keeps changing.

↳ Website Colors
#7A6656
#4A3752
#3C4A3E
#0D1117
Color & Disparity detail
Color & Disparity detail
Opening the Repository

The right-hand panel uses #0D1117, the dark background colour on GitHub. Clicking “site src”, the source-code link, sends the top, left and bottom panels off screen. Their text goes with them, which makes it look as though the whole paper layout is being pushed away.

Before those panels finish leaving, the right panel expands across the screen. It reveals a full-size screenshot of the repository, so GitHub appears to slide in on the paper. Once the picture fills the screen, the browser opens the real repository. The matching background colour disguises that handover.

Color & Disparity detail
Color & Disparity detail
Typography System
Website and Document
Page 08 / 12
On the Website

The main site uses Big Shoulders Display for the huge headings and gateway links. I liked how narrow and tall it was, especially at that scale. The labels occupy the paper panels and become part of their shape.

IBM Plex Sans handles the smaller text and controls because it is easy to read at normal UI sizes.

In This Document

This document uses a quieter set of typefaces. Manrope carries the main text, while JetBrains Mono marks the measurements, labels and technical notes. The fixed page size lets me place images and writing together and keep that arrangement when the portfolio is printed.

The pages begin by alternating between white and black. The two tracks gradually meet at vermilion red, #C1272D. I blended them in OKLCH, a colour system based on lightness, colour strength and hue. The paired dots in the headers show the tracks getting closer while the projects keep their own imagery.

GATEWAY
Big Shoulders Display / website headings
Easy to read at normal UI sizes.
IBM Plex Sans / website text / controls
Main body type for the portfolio.
Manrope / portfolio body copy
FIG. 08 / 210×297MM / SCALE 1:1
JetBrains Mono / page labels / technical notes
Page Colours
White / Black#C1272D
This Alien Doesn't Exist
Project 02: Generative Rules & Speculative Biology
Page 09 / 12
Vanilla JavaScript HTML Canvas drawing Seeded number generation Procedural Generation thisaliendoesnotexist.app Source: github.com/aamosm/This-Alien-Does-Not-Exist

The number you enter into this creature generator is its seed. I use a number generator called Mulberry32 to turn that starting value into a repeatable sequence. The sequence determines the alien, so entering the same seed brings it back. I wanted to see how much variety I could get from rules I could control.

The Pipeline

I had to decide which traits could vary on their own and which needed to stay connected. The rules choose the anatomy, colours, textures and other traits, and link those choices to the creature’s classification. That gives the variation some structure: a creature should look as though its parts belong together.

Canvas Construction

I draw the creature on an HTML canvas, a drawing surface in the browser. Generated limbs and other appendages establish its outline; gradients and textures describe its surface. I can adjust the drawing rules and compare the results using the same seed.

The observations still need work. I want them to say something believable about the creature being shown. Making the anatomy and its description agree is the next problem I want to solve.

Alien Generator Interface
Projects Page Listing
VoyagerOS
Project 03: Browser Operating System & Worldbuilding
Page 10 / 12
The Point

VoyagerOS started as a silly idea: a website that behaves like the computer on a ship that has been travelling for far too long.

I built the boring stuff too: boot screens, windows, files, a terminal, processes, an archive and a whole fake filesystem. It is basically a tiny computer for a spacecraft that does not exist.

The Story

Mission files, logs and strange little bits of data reveal the story of Voyager-9, the fictional mission behind the computer. I put that story inside the things a visitor would normally open or read on a computer. I wanted people to find it by poking around, with each file adding a little more.

The Alien Registry is the computer’s creature archive. It connects this project to my alien generator. Discoveries are stored as .alr files, the archive’s own file type, so each creature becomes a record from the mission.

HTML / CSS / JS · Canvas ·
Browser storage
VoyagerOS desktop interface
VoyagerOS / main desktop
VoyagerOS login
Login / authentication
VoyagerOS Alien Registry
Alien Registry / field archive
VoyagerOS archive viewer
VoyagerOS windows
Seven Minute Shadow
Project 04: Designing with Constraints
Page 11 / 12
The Idea

Seven Minute Shadow is a tiny collection of fast, weird little games. Every few seconds the rules change, so the real challenge is figuring out what you are supposed to do before the game decides you have had enough.

I wanted it to feel deliberately scrappy and playful. Short rounds, quick reactions, pixel art, chunky 3D bits and increasingly questionable ideas. The different art styles are part of that feeling, but each round still needs to make its action readable quickly.

Making It

I built the game in the Godot engine and wrote its logic in GDScript, Godot’s programming language. I use Aseprite for the pixel art and animation, and Blender for the 3D pieces. Short rounds let me try an idea on a small scale and see whether it is worth taking further. It is still a demo.

GODOT / GDSCRIPT · ASEPRITE · BLENDER
Seven Minute Shadow
SEVEN MINUTE SHADOW / GAMEPLAY
Seven Minute Shadow detail
MICROGAME / ONE OF MANY
Seven Minute Shadow world
ART / PIXELS + 3D
Contact
Page 12 / 12
Dhruv Heith Chheda