diff --git a/README.md b/README.md index ea22a27..b8ecbd0 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,25 @@ # Kurama-Chat ## Overview : + +![Example](./pictures/kurama-chat.png) + This project involves the development of an Internet Relay Chat (IRC) client and server using NodeJS + ExpressJS for the server and ReactJS for the client. The system is designed to handle multiple simultaneous connections, allowing users to join, create, rename, and delete channels. Additionally, it supports real-time messaging within channels, including notifications when users join or leave a channel. ## Features : + - **1.** Multiple Channel Support: Users can join several channels simultaneously. - **2.** Channel Management: Ability to create, rename, and delete channels. - **3.** Real-time Notifications: Notifications for user join/leave events. - **4.** Messaging: Users can speak in channels they've joined, send private messages, and list users in channels. -Persistence + Persistence - **5.** Channels and messages are persistently stored using a chosen method (file, database, etc.). - **6.** User Interaction - **7.** Users must set a nickname to use the application. No authentication system is required, but adding one is a bonus. - **8.** The client and server communicate using a chosen protocol. ## Commands : + - /nick: Set user nickname. - /list: List available channels, with optional search. - /create: Create a new channel. @@ -27,8 +32,8 @@ Persistence This README outlines the core functionalities and commands supported by the IRC client and server project. -# Installation : +# Installation : -Open a terminal at the root of the project and use : +Open a terminal at the root of the project and use : -```docker compose up -d``` +`docker compose up -d` diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c7c9097..bf6994f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,7 +11,7 @@ "@material-ui/core": "^4.12.4", "@splinetool/runtime": "^1.9.4", "@tailwindcss/custom-forms": "^0.2.1", - "@types/node": "^20.14.14", + "@types/node": "20.14.14", "@types/react": "18.2.8", "@types/react-dom": "18.2.4", "@types/socket.io": "^3.0.2", @@ -21,15 +21,15 @@ "clipboard": "^2.0.11", "core-js-pure": "^3.35.0", "emoji-picker-react": "^4.4.9", - "eslint": "^9.0.0", - "eslint-config-next": "^14.1.0", + "eslint": "9.0.0", + "eslint-config-next": "14.1.0", "jsonwebtoken": "^9.0.2", "next": "14.1.1", "polished": "^4.3.1", "postcss": "8.4.31", - "react": "^18.3.1", + "react": "18.3.1", "react-avatar": "^5.0.3", - "react-dom": "^18.3.1", + "react-dom": "18.3.1", "react-icons": "^4.12.0", "react-modal": "^3.16.1", "react-spinners": "^0.13.8", @@ -39,7 +39,7 @@ "styled-components": "^6.1.8", "tailwindcss": "3.3.2", "toastr": "^2.1.4", - "typescript": "^5.5.4", + "typescript": "5.5.4", "uuid": "^9.0.0" }, "devDependencies": { @@ -1299,7 +1299,7 @@ }, "node_modules/bufferutil": { "version": "4.0.8", - "devOptional": true, + "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -3818,7 +3818,7 @@ }, "node_modules/node-gyp-build": { "version": "4.8.0", - "devOptional": true, + "dev": true, "license": "MIT", "bin": { "node-gyp-build": "bin.js", @@ -5434,7 +5434,7 @@ }, "node_modules/utf-8-validate": { "version": "5.0.10", - "devOptional": true, + "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -5900,8 +5900,7 @@ "@material-ui/types": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "requires": {} + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" }, "@next/env": { "version": "14.1.1", @@ -6220,8 +6219,7 @@ "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" }, "ajv": { "version": "6.12.6", @@ -6447,7 +6445,7 @@ }, "bufferutil": { "version": "4.0.8", - "devOptional": true, + "dev": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -7117,8 +7115,7 @@ "eslint-plugin-react-hooks": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", - "requires": {} + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==" }, "resolve": { "version": "2.0.0-next.5", @@ -8067,7 +8064,7 @@ }, "node-gyp-build": { "version": "4.8.0", - "devOptional": true + "dev": true }, "node-releases": { "version": "2.0.14" @@ -8305,8 +8302,7 @@ } }, "react-icons": { - "version": "4.12.0", - "requires": {} + "version": "4.12.0" }, "react-is": { "version": "16.13.1" @@ -8328,8 +8324,7 @@ } }, "react-spinners": { - "version": "0.13.8", - "requires": {} + "version": "0.13.8" }, "react-toastify": { "version": "10.0.4", @@ -8765,8 +8760,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/tailwind-scrollbar/-/tailwind-scrollbar-3.1.0.tgz", "integrity": "sha512-pmrtDIZeHyu2idTejfV59SbaJyvp1VRjYxAjZBH0jnyrPRo6HL1kD5Glz8VPagasqr6oAx6M05+Tuw429Z8jxg==", - "dev": true, - "requires": {} + "dev": true }, "tailwindcss": { "version": "3.3.2", @@ -8896,8 +8890,7 @@ "ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "requires": {} + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==" }, "ts-interface-checker": { "version": "0.1.13" @@ -9006,7 +8999,7 @@ }, "utf-8-validate": { "version": "5.0.10", - "devOptional": true, + "dev": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -9125,8 +9118,7 @@ } }, "ws": { - "version": "8.11.0", - "requires": {} + "version": "8.11.0" }, "xmlhttprequest-ssl": { "version": "2.0.0" diff --git a/pictures/kurama-chat.png b/pictures/kurama-chat.png new file mode 100644 index 0000000..e43b0de Binary files /dev/null and b/pictures/kurama-chat.png differ