{"id":22882943,"url":"https://github.com/iamsuudi/messaging-app","last_synced_at":"2026-04-08T12:33:28.312Z","repository":{"id":252779511,"uuid":"830239158","full_name":"iamsuudi/messaging-app","owner":"iamsuudi","description":"Real-time chat application powered by express, react and socket-io","archived":false,"fork":false,"pushed_at":"2024-08-13T16:31:55.000Z","size":8702,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T12:25:36.815Z","etag":null,"topics":["express","mongodb","mongoose","nodejs","react","shadcn-ui","socket-io","tailwindcss","typescript","vite"],"latest_commit_sha":null,"homepage":"https://dalochat.onrender.com","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/iamsuudi.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}},"created_at":"2024-07-17T22:02:33.000Z","updated_at":"2025-05-26T17:50:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"090b9f62-9c15-4a83-8f32-474a7dcc7e87","html_url":"https://github.com/iamsuudi/messaging-app","commit_stats":null,"previous_names":["iamsuudi/messaging-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iamsuudi/messaging-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsuudi%2Fmessaging-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsuudi%2Fmessaging-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsuudi%2Fmessaging-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsuudi%2Fmessaging-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamsuudi","download_url":"https://codeload.github.com/iamsuudi/messaging-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamsuudi%2Fmessaging-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31556233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["express","mongodb","mongoose","nodejs","react","shadcn-ui","socket-io","tailwindcss","typescript","vite"],"created_at":"2024-12-13T18:30:41.089Z","updated_at":"2026-04-08T12:33:28.289Z","avatar_url":"https://github.com/iamsuudi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Logo](./client/public/logo.png \"DaloChat\")\n\n# DaloChat\n\nWebsite: https://dalochat.onrender.com/\n\nIt's completely free, just login with a google account or signup with your email-password and try it out!\n\n---\n\n## Tech Stack\n\n-   **Front End:** React | TypeScript | TailwindCSS\n-   **Back End:** Express | Node | MongoDB\n-   **Other Libraries:** Shadcn UI | Zustand | TanStack\n\n---\n\n## Goal\n\nMy goal was to create an application where users can chat in groups or individual in real-time\n\n---\n\n## Key Features\n\n-   Real-time update.\n\n-   End-to-end individual chat.\n\n-   Creating and managing groups.\n\n-   Profile update that supports image uploading.\n\n-   Deleting the messages we sent.\n\n-   Adding contacts using their usernames and Deleting chats.\n\n-   User authentication using Auth2.\n\n-   Interactive UI that is in sync with the database.\n\n---\n\n## What I learned\n\nIt was my first time moving bundled client code to the backend and serve html from the server. It is very fast compared to hosting react code separately.\n\nI also learned that managing and scaling react-app gets more difficult as the app gets more complex. I have been using react-router for client side SPA routing and zustand for client state management.\n\nI used tanstack's react-query for server state managements which updates UI better than react's default useEffect. But it has a problem related to updating data in the background.\n\nI used Socket.io for real-time connections, which is much better than Web Browser's websocket and all the datas are saved to mongodb atlas.\n\n---\n\n## Project Images\n\n**Landing Page**\n\nThis is the landing page for my web application. I added some cool scroll animaions.\n\n![Landing Page](./client/public/readme/landing.png \"Landing Page\")\n\n---\n\n**Chat**\n\nThis is the individual chat section. As soon as you select a user the conversation will be shared between you in real time.\n\n![Chat](./client/public/readme/chats.png \"Chat\")\n\n---\n\nProfile Page\n\n![Language Select](./client/public/readme/profile.png \"Language Select\")\n\n## Setup\n\nInstallation:\n\n```bash\ngit clone git@github.com:iamsuudi/messaging-app.gi\n```\n\n---\n\nInstall Dependencies:\n\n```bash\npnpm install\n```\n\n---\n\nSet Up Environment Variables:\n\n Create .env file at the root folder in the /api and add your own values to them\n\n```js\nPORT=3001\nSECRET=*****\nMONGODB_URI=mongodb://localhost:27017/messaging-app\nMONGODB_PROD_URI=********\nSALT=********\nCLOUDINARY_NAME=********\nCLOUDINARY_API_KEY=******\nCLOUDINARY_API_SECRET=******\nGOOGLE_CLIENT_ID=******\nGOOGLE_CLIENT_SECRET=******\n```\n\n---\n\nRunning Client Dev Server:\n\n```bash\ncd client\npnpm dev\n```\n\n---\n\nRunning Api Dev Server:\n\n```bash\ncd api\npnpm dev\n```\n\n---\n\nRunning Prod Server:\n\nIf you have made changes in the client code, re-build it and move the dist folder to the api as follows:\n\n```bash\ncd client\npnpm build\nmv -f dist/ ../api/\n```\n\nThen go to api directory and build it\n\n```bash\ncd api\npnpm build\npnpm start\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamsuudi%2Fmessaging-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamsuudi%2Fmessaging-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamsuudi%2Fmessaging-app/lists"}