dmitryjima/timeline-based-portfolio-react-d3js

TypeScript

0

68 commits

updated Sep 24, 2026

See the code

See what people are saying

SourceMessageScoreDate

An intermediate tutorial project | Timeline-based portfolio with React, D3.js, and TypeScript (r/reactjs)

Hey fellow React Devs! I want to share my recent two-parts tutorial for intermediate-level developers, where we will explore working with D3.js in React. It's a relevantly lengthy (\~60 pages if it was a `.doc`) weekend-worth project, divided into step-by-step sections, each with a dedicated…

3

Sep 24, 2026

README

Timeline-based portfolio with React and D3.js | Tutorial

This the complete code for the tutorial on how to build a responsive timeline-based portfolio with React, TypeScript, and D3.js.

Each subfolder in the src/lib/ directory represents a different section of the tutorial, the deployed demo is available here.

Feel free to clone/fork/refer to this repository, and build an awesome portfolio that represents you best!

Installing and running

This project is based on npm and vite and was built with Node.js v24.

To install the dependencies, from the root folder run:

npm install

To run the local dev server:

npm run dev

To build a production version:

npm run build

You can also run linting and formatting with npm run lint and npm run format, respectively.

Architecture

The project was scaffolded with the standard Vite project initializer and TypeScript template npm create . --template react-ts, uses Eslint and Prettier for code linting and formatting.

Core libraries

  • D3.js - for calculating the layout positions, easings and interpolations
  • sass-embedded - for using .scss modules; full counterpart of the sass package, but compatible with the recent versions of
  • vite-plugin-sass-dts - a plugin for Vite that generates types for scss modules on the fly
  • classnames - a library for dynamic styles
  • react-use - a toolbox of React hooks; here used for measuring elements' dimensions.

Key modules and structure

Most of the code of interest is located in the src/lib/timeline folder. There is also a time-formatting function in the src/lib/utils

src/App.tsx is the application's entry point, it imports the sample data, implements a placeholder handleOnNodeExpand method, and passes them as props to the TimelineMap component. (In a real-life project, the data would likely come from an AJAX call, or fetched in a server-side handler, e.g. in case of Next.js).

Sections and directories

Acknowledgements

The demo project uses free logos and pictures from Unsplash and UntitledUI in the sample data.

Contributors

dmitryjima

68 commits

dmitryjima/timeline-based-portfolio-react-d3js

TypeScript

0

68 commits

updated Sep 24, 2026

See the code

See what people are saying

SourceMessageScoreDate

An intermediate tutorial project | Timeline-based portfolio with React, D3.js, and TypeScript (r/reactjs)

Hey fellow React Devs! I want to share my recent two-parts tutorial for intermediate-level developers, where we will explore working with D3.js in React. It's a relevantly lengthy (\~60 pages if it was a `.doc`) weekend-worth project, divided into step-by-step sections, each with a dedicated…

3

Sep 24, 2026

README

Timeline-based portfolio with React and D3.js | Tutorial

This the complete code for the tutorial on how to build a responsive timeline-based portfolio with React, TypeScript, and D3.js.

Each subfolder in the src/lib/ directory represents a different section of the tutorial, the deployed demo is available here.

Feel free to clone/fork/refer to this repository, and build an awesome portfolio that represents you best!

Installing and running

This project is based on npm and vite and was built with Node.js v24.

To install the dependencies, from the root folder run:

npm install

To run the local dev server:

npm run dev

To build a production version:

npm run build

You can also run linting and formatting with npm run lint and npm run format, respectively.

Architecture

The project was scaffolded with the standard Vite project initializer and TypeScript template npm create . --template react-ts, uses Eslint and Prettier for code linting and formatting.

Core libraries

  • D3.js - for calculating the layout positions, easings and interpolations
  • sass-embedded - for using .scss modules; full counterpart of the sass package, but compatible with the recent versions of
  • vite-plugin-sass-dts - a plugin for Vite that generates types for scss modules on the fly
  • classnames - a library for dynamic styles
  • react-use - a toolbox of React hooks; here used for measuring elements' dimensions.

Key modules and structure

Most of the code of interest is located in the src/lib/timeline folder. There is also a time-formatting function in the src/lib/utils

src/App.tsx is the application's entry point, it imports the sample data, implements a placeholder handleOnNodeExpand method, and passes them as props to the TimelineMap component. (In a real-life project, the data would likely come from an AJAX call, or fetched in a server-side handler, e.g. in case of Next.js).

Sections and directories

Acknowledgements

The demo project uses free logos and pictures from Unsplash and UntitledUI in the sample data.

Contributors

dmitryjima

68 commits

Languages

TypeScript

91.0%

SCSS

7.3%

CSS

1.0%