{"id":24824333,"url":"https://github.com/rinnothing/grpc-chat","last_synced_at":"2026-05-02T15:32:47.443Z","repository":{"id":267516692,"uuid":"901497665","full_name":"rinnothing/grpc-chat","owner":"rinnothing","description":"A pet project focused on building a LAN chat using grpc for message delivery and zeroconf for device discovery","archived":false,"fork":false,"pushed_at":"2025-02-06T20:13:03.000Z","size":59,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T21:24:03.462Z","etag":null,"topics":["go","golang","grpc","grpc-go","pet-projects","zeroconf"],"latest_commit_sha":null,"homepage":"","language":"Go","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/rinnothing.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-12-10T19:10:38.000Z","updated_at":"2025-01-30T19:52:38.000Z","dependencies_parsed_at":"2024-12-10T20:24:30.708Z","dependency_job_id":"71ec63d1-d1a5-4cad-bdbc-a803acd8432d","html_url":"https://github.com/rinnothing/grpc-chat","commit_stats":null,"previous_names":["rinnothing/grpc-chat"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinnothing%2Fgrpc-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinnothing%2Fgrpc-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinnothing%2Fgrpc-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinnothing%2Fgrpc-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rinnothing","download_url":"https://codeload.github.com/rinnothing/grpc-chat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245556980,"owners_count":20634896,"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","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":["go","golang","grpc","grpc-go","pet-projects","zeroconf"],"created_at":"2025-01-30T20:29:24.754Z","updated_at":"2026-05-02T15:32:47.411Z","avatar_url":"https://github.com/rinnothing.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# grpc-chat\n\nA pet project focused on building a LAN chat using grpc for message delivery and zeroconf for device discovery\n\n### currently in development\n\n# Clean Architecture\n\nRecently at the university I was told about clean architecture and in this project I'm trying to follow what I've\nlearned.\n\n### Below is the description of what every folder does:\n\n- [api/chat](api/chat)  \n  contains proto files that represent the calls server supports\n- [internal/app/chat](internal/app/chat)  \n  contains server files that use given usecases to operate as well as does a simple validation\n- [internal/config](internal/config)  \n  just a config\n- [internal/pkg/convert](internal/pkg/convert)  \n  contains methods for conversions between model and grpc structures I often use in [usecases](internal/pkg/usecases)\n- [internal/pkg/model](internal/pkg/model)\n  contains structures that [usecases](internal/pkg/usecases) manipulate with\n- [internal/pkg/presenter](internal/pkg/presenter)  \n  contains tools to exchange with the world around  \n  (just a template, will be later rewritten to use some TUI framework)\n    - [internal/pkg/presenter/chat](internal/pkg/presenter/chat)  \n      is used for presenting info about incoming messages, new and closed chats\n    - [internal/pkg/presenter/dialogue](internal/pkg/presenter/dialogue)\n      represents a dialogue to ask for will to allow new chatter\n- [internal/pkg/repository](internal/pkg/repository)  \n  keeps repositories to store and retrieve info about users or messages\n    - [internal/pkg/repository/connections](internal/pkg/repository/connections)  \n      is used to manage connections: preventing two connections under one name and so on\n    - [internal/pkg/repository/identify](internal/pkg/repository/identify)  \n      just gives out user's model to identify yourself when sending or answering requests\n    - [internal/pkg/repository/message](internal/pkg/repository/message)  \n      stores messages, returning their ids and returns messages by them  \n      (later will be rewritten using proper database, for now in-memory)\n    - [internal/pkg/repository/user](internal/pkg/repository/user)  \n      stores users, returning their ids, will later implement some black/whitelist function\n      (later will be rewritten using proper database, for now in-memory)\n- [internal/pkg/usecases](internal/pkg/usecases)  \n  contains actual implementations of all business logic\n- [pkg/generated/proto](pkg/generated/proto)  \n  contains gRPC client and server files generated by protoc in [Makefile](Makefile)\n\n### Later I will add following folders:\n\n- [cmd/app](cmd/app)  \n  launches an app by building all repos and injecting them into an app\n- and all the others that are needed to make server like this to handle new clients appearing on zeroconf and probably\n  one to handle the UI ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frinnothing%2Fgrpc-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frinnothing%2Fgrpc-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frinnothing%2Fgrpc-chat/lists"}