{"id":23997475,"url":"https://github.com/mustafanass/urulink","last_synced_at":"2025-08-27T11:18:25.648Z","repository":{"id":259779614,"uuid":"879400760","full_name":"mustafanass/urulink","owner":"mustafanass","description":"urulink  backend chat application designed for private or local chat environments.","archived":false,"fork":false,"pushed_at":"2025-01-16T12:13:30.000Z","size":69,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T14:26:59.846Z","etag":null,"topics":["chat-application","fiber-framework","golang","messaging","rabbitmq","redis","urulink","websocket"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mustafanass.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,"zenodo":null}},"created_at":"2024-10-27T19:56:51.000Z","updated_at":"2025-03-15T23:22:19.000Z","dependencies_parsed_at":"2025-01-16T13:30:39.962Z","dependency_job_id":"9b83a7ca-81e3-463f-96ab-f42b76139894","html_url":"https://github.com/mustafanass/urulink","commit_stats":null,"previous_names":["mustafanass/urulink"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mustafanass/urulink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafanass%2Furulink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafanass%2Furulink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafanass%2Furulink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafanass%2Furulink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mustafanass","download_url":"https://codeload.github.com/mustafanass/urulink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mustafanass%2Furulink/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272325407,"owners_count":24914642,"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-27T02:00:09.397Z","response_time":76,"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":["chat-application","fiber-framework","golang","messaging","rabbitmq","redis","urulink","websocket"],"created_at":"2025-01-07T22:45:31.802Z","updated_at":"2025-08-27T11:18:25.619Z","avatar_url":"https://github.com/mustafanass.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# urulink Chat Application\n\n## Overview\n\nThis is a **backend chat application** designed for private or local chat environments. Built using **Golang** and the **Fiber** framework, this application leverages modern technologies to facilitate real-time communication and efficient data management.\n\n## Features\n\n- **Real-Time Communication**: Utilizes **WebSocket** for instant messaging capabilities.\n- **User Connection Management**: Employs **Redis** for storing and managing user connections.\n- **Message Broker**: Integrates **RabbitMQ** for efficient message handling and queuing.\n- **Object Storage**: Uses **MinIO** for object storage, ensuring that all media and files are securely managed.\n- **Microservice Architecture**: Built using a microservice architecture to promote modularity and scalability.\n\n## Technologies Used\n\n- **Golang**: The primary programming language for backend development.\n- **Fiber**: A fast, minimalist web framework for Golang, used to create the server.\n- **WebSocket**: For real-time, bidirectional communication between clients and the server.\n- **Redis**: A powerful in-memory data store used for managing user sessions and connections.\n- **RabbitMQ**: A robust message broker that enables reliable communication between microservices.\n- **MinIO**: A high-performance object storage solution compatible with Amazon S3 APIs.\n- **JWT (JSON Web Tokens)**: Used for secure authentication and authorization of users in the application.\n\n## Getting Started\n\nTo set up the chat application on your local machine, follow these steps:\n\n### Prerequisites\n\n- Install [Go](https://golang.org/dl/) (version 1.16 or higher)\n- Install [Docker](https://www.docker.com/get-started)\n- Install [Fiber](https://docs.gofiber.io)\n- Install [RabbitMQ](https://www.rabbitmq.com/download.html)\n- Install [Redis](https://redis.io/download)\n- Install [MinIO](https://min.io/download)\n\n### Installation\n\n- Clone all microservices and use the Dockerfile inside each one to build the service.\n- Make sure to fill all required environment variables in `.env` files before building the Docker image.\n\n\n## How to Use It\n\nOnce all microservices are up and running, follow these steps to start using the chat application:\n\n### 1. Register an Account\nFirst, you need to register an account using the Auth service:\n- Endpoint: ```POST http://\u003cyour-auth-service-ip\u003e:8081/register```\n- Payload: Include necessary registration details (e.g., username, password).\n\nThis will create a new user account for you in the system.\n\n### 2. Log In\nOnce your account is created, log in to obtain an access token for authentication:\n- Endpoint: ```POST http://\u003cyour-auth-service-ip\u003e:8081/login```\n- Payload: Provide your registered username and password.\n- Response: After a successful login, you’ll receive an accessToken in the response.\n\nThis accessToken is required to establish an authenticated WebSocket connection.\n\n### 3. Connect to WebSocket\nTo connect to WebSocket for real-time messaging:\n\n- Add the accessToken: Include the accessToken you received from the Auth service in the header of your WebSocket connection request.\n- WebSocket Endpoint: ```ws://\u003cyour-message-service-ip\u003e:8083?receiver_id=\u003ctarget-client-id\u003e```\n- Replace ```\u003ctarget-client-id\u003e``` with the ID of the client you want to communicate with.\n\nThis will establish a WebSocket connection, enabling real-time messaging between you and the specified client\n\n## Note\n\n**Please note that this application is a work in progress, and not all features are complete. There are many additional features planned for future development. If you have any features in mind that you would like to implement, feel free to fork the repository and create a pull request with your contributions!**\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for more information.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a Pull Request\n\n## Author\n\nBuild and Developed by Mustafa Naseer\n\nThis project is intended for development and testing purposes. For production use, please ensure proper configuration of external services and security measures.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafanass%2Furulink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmustafanass%2Furulink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmustafanass%2Furulink/lists"}