Skip to content

Decision Making Tool is a single-page application (SPA) designed to help make weighted random decisions. Built with vanilla TypeScript and Canvas API, this tool allows users to create custom option lists with different weights and visualize the selection process with smooth animations.

Notifications You must be signed in to change notification settings

cherkasovaa/decision-making-tool

Repository files navigation

Decision Making Tool 🎡

en ru

Static Badge Static Badge

Decision Making Tool is a single-page application (SPA) for making random decisions based on the weight (priority) of each option. The application is perfect for anyone who needs to make a weighted random choice.

Table of Contents

Description

The application allows you to create a list of options, each of which can be assigned a weight — the greater the weight, the higher the probability that this option will be selected. After creating the list, the user can proceed to the decision visualization: a wheel of fortune appears on the screen, where each sector corresponds to an option from the list, and its width corresponds to the option's weight. The wheel spins with animation and sound effects, and the selected option is displayed on the screen.

Demo

Link to demo version

Key Features

  • Edit option list: add, delete, clear, edit titles and weights.
  • Save and load lists: export/import lists in JSON format.
  • Decision visualization: wheel of fortune with animation and sound.
  • Adjustable wheel spin duration.
  • Sound control: ability to enable/disable sound.

Technology stack

Core

  • TypeScript
  • Canvas API
  • Web Storage API
  • File API
  • Web Animations API
  • Web Audio API

Development tools

  • CSS Modules (SCSS)
  • Webpack
  • ESLint
  • Prettier
  • StyleLint
  • Husky
  • lint-staged
  • commitlint

Installation and Setup

Clone the repository

git clone https://github.com/cherkasovaa/decision-making-tool.git
cd decision-making-tool

Install dependencies

npm install

Run in development mode

npm run dev

Build for production

npm run build

Application Screenshots

Decision screen Wheel screen

License

This project was created for educational purposes as part of RSSchool in March 2025. Use of the code is subject to agreement with the author.

Contact

Github Telegram

About

Decision Making Tool is a single-page application (SPA) designed to help make weighted random decisions. Built with vanilla TypeScript and Canvas API, this tool allows users to create custom option lists with different weights and visualize the selection process with smooth animations.

Topics

Resources

Stars

Watchers

Forks