{"id":18144848,"url":"https://github.com/arthur5120/real-time-chat-app","last_synced_at":"2026-04-14T10:31:52.549Z","repository":{"id":258035048,"uuid":"857545501","full_name":"arthur5120/real-time-chat-app","owner":"arthur5120","description":"Real-time chat app with auth, room management, user status tracking, and notifications.","archived":false,"fork":false,"pushed_at":"2024-12-16T19:42:57.000Z","size":37666,"stargazers_count":0,"open_issues_count":11,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-29T06:48:35.256Z","etag":null,"topics":["axios","chat","crud","express","fullstack","mysql","node-js","prisma","react","real-time","socket-io","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arthur5120.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-14T23:43:52.000Z","updated_at":"2024-11-09T23:56:15.000Z","dependencies_parsed_at":"2024-10-26T06:42:04.073Z","dependency_job_id":null,"html_url":"https://github.com/arthur5120/real-time-chat-app","commit_stats":null,"previous_names":["arthur5120/real-time-chat-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arthur5120/real-time-chat-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arthur5120%2Freal-time-chat-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arthur5120%2Freal-time-chat-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arthur5120%2Freal-time-chat-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arthur5120%2Freal-time-chat-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arthur5120","download_url":"https://codeload.github.com/arthur5120/real-time-chat-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arthur5120%2Freal-time-chat-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31793212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axios","chat","crud","express","fullstack","mysql","node-js","prisma","react","real-time","socket-io","tailwindcss","typescript"],"created_at":"2024-11-01T20:06:27.746Z","updated_at":"2026-04-14T10:31:52.522Z","avatar_url":"https://github.com/arthur5120.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ☑️ About the Application\n\n## 1. Description\n\nA real time chat application with authentication/authorization features, message operations such as editing and deleting, room management, like creating and removing rooms, user status and activity tracking, whether the user is offline, inactive or typing and a notification system with toast messages.\n\n## 2. Technologies\n\n- Typescript\n- React\n- Socket.io\n- Prisma\n- MySQL\n- JsonWebToken\n- bcrypt\n- uuid\n- Tailwind CSS\n- React Toast Messages\n- Axios\n\n## 3. Functionalities\n\n| Authentication |\n| :---        |\n- Hashed Password \n- Encrypted Token\n- Http-only Cookie\n- Session Expiration Handling\n- Duplicate Session Protection\n- Account Creation\n- Input Validation\n- Login/Logout\n\n| Authorization |\n| :---        |\n- Designated Roles\n- Protected Routes\n- Server-side Authorization\n\n| Chat Functions |\n| :---        |\n- Messaging Features\n- Room Management\n- User Status Tracking\n- Activity Tracking \n- Spam Control\n- Notifications \u0026 Alerts\n\n| Operations Log |\n| :---        |\n- Sorting Methods\n- Keyword Search\n\n| UI \u0026 Navigation |\n| :---        |\n- Responsive Design\n- Reusable Components\n- Navigation Bar / Menu\n- Error Pages\n- Multiple Views\n- Placeholders\n- Tooltips and Help Text\n- Keyboard Shortcuts\n\n| Other Functionalities |\n| :---        |\n- Idempotency\n- CSRF Protection\n\n## 3. About Specific Features\n\n| User Status \u0026 Chat Rooms |\n| :---        |\n\n- Clicking on a message opens a menu that allows you to edit, delete, or view it if you are not the sender.\n- The left panel indicates the current users present in a chat room and whether they are currently typing.\n- The user's activity status in a chat room is tracked through events, displaying who is offline, online, or inactive.\n- It's only possible to view the status of users who are currently in the chat room.\n- The app tracks consecutive messages sent by a user and manages cooldown periods to prevent spamming.\n- Logged-out users can only see messages and are unable to send, edit or delete them.\n- The application provides feedback to the user if it encounters errors.\n\n| UI \u0026 Navigation |\n| :---        |\n\n- It is possible to alternate between the log view and the chat view by clicking the log button.\n- Clicking the button with the eye icon toggles the display of notifications.\n- The chat window will automatically scroll down to the latest messages.\n- The button to copy the room name indicates when text has been copied to the clipboard.\n\n| Log View |\n| :---        |\n\n- Keeping record of activities or events within the application, the log consists of what was done, who did it, when it was done, and where.\n- Using cookies, it retains up to ten messages and upon reaching the limit, the oldest ones are deleted with each new entry.\n- The log messages can be filtered chronologically or alphabetically by room name or user name, and each filter can be optionally displayed in reverse order.\n- Upon switching to the log view, it is possible to search for a specific string within the log messages.\n\n# ☑️ How to Run it\n\nThe following tutorial provides a brief guide on installing dependencies and running the app. \n\n## 1. Getting the Application Files\n\n| Direct Download |\n| :---        |\n\nTo acquire the app files by downloading them directly, click the green \"Code\" button in the top-right corner, then click \"Download ZIP\". Then, extract the downloaded ZIP file to a directory of your preference.\n \n| Git Destkop |\n| :---        |\n\nAlternatively, you can clone the repository using GitHub Desktop. To do this, click \"File\" \u003e \"Clone Repository\". Then paste the repository URL, choose a local folder, and click \"Clone\".\n\n| Git Bash |\n| :---        |\n\nIf you are using Git Bash, you can also clone the repository by navigating to the folder you chose and running the following command, followed by the repository **URL** (Replace **REPOSITORY-URL** with the actual **URL** of the repository) 🔽\n\n~~~~\ngit clone REPOSITORY-URL\n~~~~\n\n## 2. Backend Folder\n\nCreate the **.env** file with the following content, filling the blanks 🔽\n\n~~~\nPORT=\"3000\"\nDATABASE_URL=\"\"\nSECRET_KEY=\"\"\nSECRET_SALT=10\n~~~\n\nNow on the terminal run the following to initialize the server 🔽\n\n~~~\nnpm install\nnpx prisma generate\nnpm start\n~~~\n\n## 3. Frontend Folder\n\nThen navigate to the frontend folder and run the command bellow 🔽\n\n~~~\nnpm run dev\n~~~\n\n## 4. Socket Folder\n\nFinally for the real-time feature, go to the socket folder and run this one 🔽\n\n~~~\nnodemon server\n~~~\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farthur5120%2Freal-time-chat-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farthur5120%2Freal-time-chat-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farthur5120%2Freal-time-chat-app/lists"}