Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mustafacagri/react-threejs-easeljs-drawing-app

๐Ÿš€ Create cool graphics with our Tailwind & React โš›๏ธ drawing app! Use Three.js ๐ŸŒ, EaselJS ๐ŸŽจ, Vite โšก, TypeScript ๐Ÿ”ง. Easily draw shapes, move them around, and see them in 3D! Great for developers who want to explore their creativity! โœจ
https://github.com/mustafacagri/react-threejs-easeljs-drawing-app

drawing drawing-app drawing-application easel easeljs easeljs-graphics react react-hooks reactjs three-js threejs typescript vite

Last synced: 7 days ago
JSON representation

๐Ÿš€ Create cool graphics with our Tailwind & React โš›๏ธ drawing app! Use Three.js ๐ŸŒ, EaselJS ๐ŸŽจ, Vite โšก, TypeScript ๐Ÿ”ง. Easily draw shapes, move them around, and see them in 3D! Great for developers who want to explore their creativity! โœจ

Awesome Lists containing this project

README

        

# ๐ŸŒŸ React - ThreeJS - EaselJS Drawing App ๐ŸŽจ

Welcome to the **React-ThreeJS EaselJS Drawing App** โ€“ a powerful tool for creating 2D and 3D visualizations! This app covers you whether you're looking to draw, manipulate shapes, or view objects in a 3D scene. Let's unleash your creativity! ๐ŸŒโœจ This is the perfect boilerplate to kickstart your drawing projects with React, ThreeJS, and EaselJS! ๐Ÿš€

### ๐ŸŽฅ Demo Video

https://github.com/user-attachments/assets/27ea7167-7dec-4ab3-911e-9e0686a1a496

### ๐ŸŒ Live Demo

https://react-threejs-easeljs.web.app/

## ๐ŸŽฏ Key Features

- ๐ŸŽจ **Draw Shapes:** Draw rectangles, circles, lines, and custom paths effortlessly with a click-and-drag interface.
- โœ‹ **Shape Manipulation:** Move, drag, and delete shapes as needed. Shapes adjust in real time for a smooth experience!
- ๐ŸŒ **3D Viewer:** Toggle between 2D and view-only 3D mode to see your drawings come to life in a new dimension.
- ๐ŸŽจ **Random Colors:** Each shape you create is assigned a random stroke and fill color.
- โšก **Real-Time Updates:** Watch your canvas update instantly as you interact with shapes.
- โŒจ๏ธ **Keyboard Support:** Delete selected shapes using the Delete or Backspace keys for quick editing.

## ๐Ÿ› ๏ธ Tech Stack

This project is built using modern technologies:

- **React** โš›๏ธ
- **Three.js** ๐ŸŒ
- **EaselJS** ๐ŸŽจ
- **Vite** โšก
- **Lodash** ๐Ÿ› ๏ธ
- **TypeScript** ๐Ÿ”ง
- **Firebase** ๐Ÿ”ฅ
- **SonarCloud** ๐Ÿงช

### ๐Ÿ“ฆ Dependencies

The project relies on several key libraries:

**React:** A library for building user interfaces.
**Three.js:** A powerful 3D engine for rendering the 3D view mode.
**EaselJS:** A library for drawing and manipulating 2D shapes.
**Vite:** A fast build tool for modern web development.
**Lodash:** A utility library for working with arrays, objects, and more.

### ๐Ÿš€ Getting Started

To start the project locally, fork the repo and follow these steps:

```
1. ๐Ÿด Fork the repository
2. ๐Ÿ“ฅ Clone your forked repository
3. ๐Ÿ› ๏ธ Run `yarn install` to install dependencies
4. ๐Ÿš€ Run `yarn dev` to start the local development server
```

The app will run on http://localhost:5173.

### Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

- Configure the top-level `parserOptions` property like this:

```js
export default tseslint.config({
languageOptions: {
// other options...
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
},
})
```

- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked`
- Optionally add `...tseslint.configs.stylisticTypeChecked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config:

```js
// eslint.config.js
import react from 'eslint-plugin-react'

export default tseslint.config({
// Set the react version
settings: { react: { version: '18.3' } },
plugins: {
// Add the react plugin
react,
},
rules: {
// other rules...
// Enable its recommended rules
...react.configs.recommended.rules,
...react.configs['jsx-runtime'].rules,
},
})
```

### ๐Ÿ‘พ How can I contribute?

- โญ Star the repository
- ๐Ÿ› ๏ธ Submit pull requests, report bugs, or suggest features

### ๐Ÿ“ฌ Get in Touch

Feel free to reach out if you have any questions or need help:

- **GitHub:** https://github.com/mustafacagri
- **Linkedin:** [@MustafaCagri](https://www.linkedin.com/in/mustafacagri/)

Made with โค๏ธ in ๐Ÿ“ Istanbul, using React โš›๏ธ, Three.js ๐ŸŒ, EaselJS ๐ŸŽจ, TypeScript ๐Ÿ”ง, Vite โšก, and Lodash ๐Ÿ› ๏ธ!