{"id":30297125,"url":"https://github.com/isaacalves7/chat","last_synced_at":"2026-04-15T10:35:10.010Z","repository":{"id":48011836,"uuid":"467523182","full_name":"IsaacAlves7/chat","owner":"IsaacAlves7","description":"💬 It's a repository of Chat from scratch.","archived":false,"fork":false,"pushed_at":"2025-08-07T14:53:19.000Z","size":222253,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-07T16:32:53.848Z","etag":null,"topics":["ajax","chat","chat-application","chat-room","clone","jwt","mern-stack","messenger","meta","microservices","monolith","odm","redux","rest-api","sass","socket-io","tailwindcss","typescript","webrtc"],"latest_commit_sha":null,"homepage":"","language":"SCSS","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/IsaacAlves7.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}},"created_at":"2022-03-08T13:28:20.000Z","updated_at":"2025-08-07T03:00:26.000Z","dependencies_parsed_at":"2025-08-07T16:46:21.772Z","dependency_job_id":null,"html_url":"https://github.com/IsaacAlves7/chat","commit_stats":null,"previous_names":["isaacalves7/facebook-messenger-clone","isaacalves7/chat"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/IsaacAlves7/chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IsaacAlves7","download_url":"https://codeload.github.com/IsaacAlves7/chat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fchat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270803535,"owners_count":24648689,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ajax","chat","chat-application","chat-room","clone","jwt","mern-stack","messenger","meta","microservices","monolith","odm","redux","rest-api","sass","socket-io","tailwindcss","typescript","webrtc"],"created_at":"2025-08-17T03:42:43.863Z","updated_at":"2026-04-15T10:35:09.995Z","avatar_url":"https://github.com/IsaacAlves7.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nhttps://youtu.be/59pumSluRj4\nhttps://youtu.be/Q-y8ASwOYgQ\nhttps://youtu.be/aLCu3vWot2E\nhttps://youtu.be/oYMtCGfYMB8\nhttps://youtu.be/cnxrhXORmnE\nhttps://youtu.be/CkRGJC0ytdU\nhttps://youtu.be/vl5CJIhy5oU\nhttps://youtu.be/SYP54qp4aMM\nhttps://youtu.be/NHCOPoqqFPc\nhttps://youtu.be/8e_4KIj4jBs\n\n\nhttps://youtu.be/43wwRPwQhvM\n--\u003e\n\n# 💬 Chat Application\n\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/b/be/Facebook_Messenger_logo_2020.svg\" height=\"77\" align=\"right\"\u003e\n\nEssa aplicação de \u003ca href=\"https://medium.com/@m.romaniiuk/system-design-chat-application-1d6fbf21b372\"\u003echat\u003c/a\u003e foi feita com MERN stack (MongoDB, Express, React.js e Node.js) e algumas bibliotecas e APIs JavaScript para a construção de funcionalidades importantes no projeto.\n\nAPIs:\n- REST API\n- Cloudinary\n\nFront-end stylesheet:\n- Bootstrap\n- Material-UI\n- Chakra-UI\n- Node-Sass\n- Styled-components\n- CSS\n\nBibliotecas:\n- Socket.io (SocketIO)\n- WebRTC\n- Pusher\n- SocketIO\n- Twilio\n\nConnections, Auth, HTTP-clients e middlewares: Como projetamos um aplicativo de bate-papo como WhatsApp, Facebook Messenger ou Discord? O diagrama abaixo mostra um design para um aplicativo de bate-papo 1 para 1 simplificado.\n\n\u003cimg height=\"477\" align=\"right\" src=\"https://github.com/user-attachments/assets/cfd169a6-d9c9-40a0-93de-11d220baab85\" /\u003e\n\n- Axios\n- CORS\n- Body-parser\n- cookie-parser\n- express.static\n- Proxy\n- JWT\n- errorhandler\n- method-override\n- React\n- Redux\n- Socket.io\n- MongoDB\n- Node.js\n- Express\n- Node-Sass\n- JWT\n- WebRTC\n\nFluxo de login do usuário:\n\n1. Passo 1: Alice faz login no aplicativo de bate-papo e estabelece uma conexão de soquete da web com o lado do servidor.\n2. Passos 2-4: O serviço de presença recebe a notificação de Alice, atualiza sua presença e notifica os amigos de Alice sobre sua presença.\n\nFluxo de mensagens:\n\n- Passos 1-2: Alice envia uma mensagem de bate-papo para Bob. A mensagem de chat é roteada para o Serviço de Chat A.\n\n- Etapas 3 a 4: A mensagem de chat é enviada para o serviço de sequenciamento, que gera uma ID exclusiva e é mantida no repositório de mensagens.\n\n- Passo 5: A mensagem de chat é enviada para a fila de sincronização de mensagens para sincronizar com o serviço de chat do Bob.\n\n- Passo 6: Antes de encaminhar a mensagem, o serviço de sincronização de mensagens verifica a presença de Bob:\na) Se Bob estiver online, a mensagem de bate-papo será enviada para o serviço de bate-papo B.\nb) Se Bob estiver offline, a mensagem será enviada para o servidor de push e enviada para o dispositivo de Bob.\n\n- Etapas 7 a 8: Se Bob estiver online, a mensagem de bate-papo será enviada para Bob por meio do soquete da Web\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaacalves7%2Fchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisaacalves7%2Fchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaacalves7%2Fchat/lists"}