{"id":22272983,"url":"https://github.com/burakkontas/discordclone","last_synced_at":"2026-04-09T23:55:48.426Z","repository":{"id":223959468,"uuid":"761969571","full_name":"BurakKontas/DiscordClone","owner":"BurakKontas","description":"This project aims to create a backend system for a Discord-like application using microservices architecture. The architecture follows a star topology, where a central service acts as a mediator for communication between other services.","archived":false,"fork":false,"pushed_at":"2024-03-10T20:23:36.000Z","size":225,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T16:32:37.303Z","etag":null,"topics":["asp-net-core","aspnetcore-aspire","entity-framework-core","grpc","grpc-client","grpc-server","microservices","microservices-architecture","mongodb","postgresql","rest-api","restapi","star-topology"],"latest_commit_sha":null,"homepage":"","language":"C#","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/BurakKontas.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":"2024-02-22T20:38:35.000Z","updated_at":"2024-05-19T11:42:51.000Z","dependencies_parsed_at":"2025-01-30T14:47:47.956Z","dependency_job_id":null,"html_url":"https://github.com/BurakKontas/DiscordClone","commit_stats":null,"previous_names":["burakkontas/discordclone"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BurakKontas/DiscordClone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurakKontas%2FDiscordClone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurakKontas%2FDiscordClone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurakKontas%2FDiscordClone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurakKontas%2FDiscordClone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BurakKontas","download_url":"https://codeload.github.com/BurakKontas/DiscordClone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurakKontas%2FDiscordClone/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268171959,"owners_count":24207437,"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-01T02:00:08.611Z","response_time":67,"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":["asp-net-core","aspnetcore-aspire","entity-framework-core","grpc","grpc-client","grpc-server","microservices","microservices-architecture","mongodb","postgresql","rest-api","restapi","star-topology"],"created_at":"2024-12-03T13:09:09.307Z","updated_at":"2026-04-09T23:55:48.374Z","avatar_url":"https://github.com/BurakKontas.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Discord Clone Backend\n\nThis project aims to create a backend system for a Discord-like application using microservices architecture. The architecture follows a star topology, where a central service acts as a mediator for communication between other services.\n\n## Architecture Overview\n\n### Components\n\n- **CenterService**: The central service responsible for routing requests and orchestrating communication between other services.\n- **MessageService**: A service handling message-related functionalities. Utilizes Elasticsearch as the database.\n- **AuthService**: A service responsible for user authentication and authorization.\n- **EmailService**: A service responsible for sending emails to various users.\n\n### Communication\n\nCommunication between services is facilitated via gRPC, while the CenterService also exposes REST endpoints for external communication. The CenterService acts as a mediator, receiving requests via REST, then forwarding them to the appropriate services using gRPC. It also aggregates responses from different services and returns them to the client.\n\n## Installation\n\n### Prerequisites\n\n- .NET Core SDK (Min. Version 8)\n- Docker (optional, for running Elasticsearch)\n- Visual Studio (Min. Version 17.9)\n- .NET Aspire\n\n### Steps\n\n1. Clone this repository.\n2. Navigate to `Discord.AppHost` and run `dotnet build` to build the projects.\n3. Start `Discord.AppHost` service using `dotnet run` or by running the Docker containers (if configured).\n\n## Usage\n\n### REST Endpoints\n\n#### CenterService\n\n- **Messages**:\n  - `POST /message/addmessage`: Add a new message.\n  - `GET /message/getmessages`: Get all messages.\n  - `GET /message/getmessage`: Get a specific message by ID.\n  - `PUT /message/updatemessage`: Update a message.\n  - `DELETE /message/deletemessage`: Delete a message.\n  - `GET /message/getmessagesbychannel`: Get messages by channel.\n  - `GET /message/getmessagesbyuser`: Get messages by user.\n  - `GET /message/getmessagesbydate`: Get messages by date.\n\n- **Authentication**:\n  - `POST /auth/validatetoken`: Validates a token.\n  - `POST /auth/banuser`: Bans a user.\n  - `POST /auth/unbanuser`: Unbans a user.\n  - `POST /auth/register`: Registers a new user.\n  - `POST /auth/login`: Logs in a user.\n  - `POST /auth/forgotpassword`: Initiates the process for resetting a password.\n  - `POST /auth/refreshtoken`: Refreshes a token.\n  - `POST /auth/extracttoken`: Extracts a token.\n\n- **Email**:\n  - `POST /email/sendaccountverificationemail`: Sends account verification email.\n  - `POST /email/sendresetpasswordemail`: Sends password reset email.\n  - `POST /email/sendcustomemail`: Sends custom email with body and subject to one or multiple mail address.\n\n### gRPC Communication\n\nInternal communication between services is done via gRPC. Each service defines its own protocol buffers (protobuf) messages and RPC methods for communication.\n\nCheck proto files in Protos folder of each microservices domain layer for gRPC service details.\n\n## Contributing\n\nContributions are welcome! If you'd like to contribute to this project, please fork the repository, make your changes, and submit a pull request.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburakkontas%2Fdiscordclone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fburakkontas%2Fdiscordclone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburakkontas%2Fdiscordclone/lists"}