Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Part II of Dmitry Zhukov’s timeline-portfolio tutorial turns dated projects and commitments into a readable visual map. It focuses on assigning events to lanes, drawing duration-aware connectors, building project cards, and animating layout changes when the screen is resized. The design keeps React responsible for rendering and uses D3 for visualization calculations.

How React and D3 divide the work

The tutorial’s architecture separates the interface from the geometry. React renders the map and its cards from state; D3 supplies calculations for dates, positions, lanes, and paths. This is one documented design, not a benchmark showing that it is best for every portfolio. React describes itself as a library for building web and native user interfaces from components, while D3 provides tools for bespoke data visualization, including scales, shapes, interactions, and layouts: React and D3.

That division is useful when the portfolio needs a custom visual story but should remain part of a component-based interface. The map component can focus on displaying the calculated layout rather than duplicating timeline geometry inside rendering code.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Place overlapping events in lanes

A timeline needs a rule for events whose date ranges overlap. Part II uses a greedy lane-placement approach: for each node, check whether an existing lane leaves enough horizontal time between its previous node and the new node’s start. Put the node in a lane that fits; if none does, create another lane.

This is interval-aware rather than a fixed assignment by event type. The resulting lane count depends on the dates and spacing requirements in the data. The approach is straightforward to implement, but it does not claim to minimize lane count under every possible rule or dataset.

Placement can also take a preferred side into account. The algorithm can try the requested side first; when there is no preference, it starts on the side with fewer lanes. This helps distribute content around a central baseline while respecting a preferred layout where possible.

Turn date ranges into positions

After assigning a lane, the layout maps an event’s date range to its start and end positions along the timeline. Its lane and side determine its vertical offset from the baseline. In the tutorial’s coordinate system, upward movement is negative and downward movement is positive.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keeping date-to-position calculation in the layout engine makes the display easier to reason about: event data describes dates and type, while calculated geometry describes where the map should draw each item.

Use connector shapes to distinguish event types

The visual language separates one-time projects from commitments that span a period. A project can use a straight stem from the timeline to its node. A commitment can use a bridge or continuous arc to communicate its duration, including an ongoing commitment. Part II implements connectors as SVG paths and styles them according to node type.

This distinction helps readers interpret the map without treating every item as the same kind of point. A connector is not merely decoration: its shape signals whether an item is a milestone or a span of time.

Build cards around a shared width

Cards contain the richer information associated with a timeline node. The tutorial uses a shared width constant so card sizing can be kept consistent, and displays formatted dates on the card. It also discusses passing card width through a CSS custom property, which lets styling use a value established by the layout.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keeping a common width value available to both layout and styles is important: if the geometry assumes one card width while CSS renders another, available space and overlap calculations can stop matching the visible result.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Animate resize changes and clean up

A viewport resize can change the timeline’s layout, so Part II transitions between the previous and next positions rather than abruptly replacing them. The animation frame scheduled for layout work must also be cancelled when the engine is destroyed or its component is unmounted. That cleanup prevents pending animation work from outliving the map.

The tutorial, dated September 24, 2026, treats resize behavior as part of layout quality, not an optional finishing touch. React’s homepage showed version 19.3 and D3’s homepage showed version 7.9.0 when the tutorial’s source context was reviewed; these version labels can change, so check the official sites if your implementation depends on a particular release.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.