{"id":20275923,"url":"https://github.com/xnm1/uplife_backend","last_synced_at":"2026-06-13T21:33:58.928Z","repository":{"id":145418139,"uuid":"387765840","full_name":"XNM1/UpLife_Backend","owner":"XNM1","description":"Highly available and scalable Backend for the UpLife messenger","archived":false,"fork":false,"pushed_at":"2023-03-22T21:21:07.000Z","size":885,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-04T01:33:00.002Z","etag":null,"topics":["architecture","backend","chat","high-availibility","messenger","realtime","rest","rest-api","scalability","service-oriented-architecture","websockets"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XNM1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2021-07-20T11:13:33.000Z","updated_at":"2023-09-05T11:54:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"d93d20ee-5f1b-4e2f-843d-c674faa9d733","html_url":"https://github.com/XNM1/UpLife_Backend","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/XNM1/UpLife_Backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XNM1%2FUpLife_Backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XNM1%2FUpLife_Backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XNM1%2FUpLife_Backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XNM1%2FUpLife_Backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XNM1","download_url":"https://codeload.github.com/XNM1/UpLife_Backend/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XNM1%2FUpLife_Backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34301731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"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":["architecture","backend","chat","high-availibility","messenger","realtime","rest","rest-api","scalability","service-oriented-architecture","websockets"],"created_at":"2024-11-14T13:11:48.107Z","updated_at":"2026-06-13T21:33:58.910Z","avatar_url":"https://github.com/XNM1.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\u003cimg src=\"Logo.png\" alt=\"UpLife Messenger Logo\"/\u003e\u003c/div\u003e\n\u003ch1 align=\"center\"\u003eUpLife Messenger\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\u003ci\u003eThe highly available and scalable messenger for endless communication\u003c/i\u003e\u003c/p\u003e\n\n## About\n\nUpLife Messenger is a powerful and versatile messaging application that provides a seamless communication experience for users. With UpLife Messenger, you can stay connected with your friends, family, and colleagues in real-time.\n\nOne of the unique features of UpLife Messenger is support for checklists in messages, which makes it easy to manage tasks and collaborate with others. You can also add tags to your messages, which helps to organize and search for messages easily.\n\nUpLife Messenger uses real-time notification by WebSocket to ensure that you never miss an important message. The backend is highly scalable and available, so you can rely on it to deliver messages reliably and quickly.\n\nThe app is open source, so you can customize it to suit your needs or contribute to the community. You can also customize your profile with avatars and backgrounds, and the app has a powerful contact system to help you manage your connections.\n\nWith real-time communication, you can enjoy seamless conversations with your contacts, whether you're on the go or at your desk. \n\n## Features\n\n- ⚡Real-time messaging\n- 🔑User registration, authentication and authorization\n- 👥Group chats\n- 📃Message history\n- 💅Avatars and backgrounds\n- ✅Check lists in message\n- 🏷️Message tags\n\n## Requirements\n\n- Docker 18.06.0+\n- Artillery 1.5.0+ (for load testing)\n\n## Installing\n\nTo install UpLife Messenger Backend, clone the repository from GitHub:\n\n```bash\ngit clone https://github.com/XNM1/UpLife_Backend\n```\n\n## Usage\n\nTo start the application with Docker, use the following command:\n\n```bash\ndocker compose up back-end/docker-compose-dev.yml\n```\n\n## Test\n\nTo run load tests with Artillery, use the following command:\n\n```bash\nartillery run load-tests/get_data_test.yml\n```\n\n## Architecture\n\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"diagrams/images/Server_Arch_Diagram.jpg\" alt=\"Architecture Diagram\"/\u003e\u003c/div\u003e\n\u003cp align=\"center\"\u003e\u003ci\u003eBackend Architecture Diagram\u003c/i\u003e\u003c/p\u003e\n\u003cbr\u003e\n\nUpLife Messenger Backend is built using the following technologies:\n\n- Node.js\n- Express\n- Socket.io\n- Passport.js\n- Dgraph\n- Redis\n- Nginx\n- HAProxy\n- Docker\n\u003cbr\u003e\n\nThe architecture of UpLife Messenger utilizes of the following patterns:\n\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"diagrams/images/CQRS_Diagram.jpg\" alt=\"CQRS Diagram\"/\u003e\u003c/div\u003e\n\u003cp align=\"center\"\u003e\u003ci\u003eCQRS Diagram\u003c/i\u003e\u003c/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"diagrams/images/Event_Bus_Diagram.jpg\" alt=\"Event Bus Diagram\"/\u003e\u003c/div\u003e\n\u003cp align=\"center\"\u003e\u003ci\u003eEvent Bus Diagram\u003c/i\u003e\u003c/p\u003e\n\u003cbr\u003e\n\nData scheme diagrams:\n\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"diagrams/images/ER_Diagram.jpg\" alt=\"Entity-Relationship Diagram\"/\u003e\u003c/div\u003e\n\u003cp align=\"center\"\u003e\u003ci\u003eEntity-Relationship Diagram\u003c/i\u003e\u003c/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"diagrams/images/Graph_Diagram.jpg\" alt=\"Graph Representation Diagram\"/\u003e\u003c/div\u003e\n\u003cp align=\"center\"\u003e\u003ci\u003eGraph Representation of Data\u003c/i\u003e\u003c/p\u003e\n\u003cbr\u003e\n\nHere's a sequence diagram that illustrates the interaction between the different components of the system:\n\n\u003cdiv align=\"center\"\u003e\u003cimg src=\"diagrams/images/Sequence_Diagram.jpg\" alt=\"Sequence Diagram\"/\u003e\u003c/div\u003e\n\u003cp align=\"center\"\u003e\u003ci\u003eSequence Diagram\u003c/i\u003e\u003c/p\u003e\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxnm1%2Fuplife_backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxnm1%2Fuplife_backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxnm1%2Fuplife_backend/lists"}