{"id":24037202,"url":"https://github.com/weiawesome/gimy_clone_api","last_synced_at":"2026-06-20T04:31:28.890Z","repository":{"id":231846387,"uuid":"782848742","full_name":"weiawesome/gimy_clone_api","owner":"weiawesome","description":"The stream-media server made by micro-service.","archived":false,"fork":false,"pushed_at":"2024-05-27T08:13:01.000Z","size":1756,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-10T16:03:12.424Z","etag":null,"topics":["event-driven","ffmepg","gin-gonic","grpc-go","http-live-str","kafka","micro-service","stream-media","watermill"],"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/weiawesome.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-04-06T07:57:09.000Z","updated_at":"2025-07-28T11:14:14.000Z","dependencies_parsed_at":"2025-01-21T03:01:53.584Z","dependency_job_id":"8f9da886-6f1b-4312-949f-e6a276da8db3","html_url":"https://github.com/weiawesome/gimy_clone_api","commit_stats":null,"previous_names":["weiawesome/gimy_clone_api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/weiawesome/gimy_clone_api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weiawesome%2Fgimy_clone_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weiawesome%2Fgimy_clone_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weiawesome%2Fgimy_clone_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weiawesome%2Fgimy_clone_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/weiawesome","download_url":"https://codeload.github.com/weiawesome/gimy_clone_api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weiawesome%2Fgimy_clone_api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34557551,"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-20T02:00:06.407Z","response_time":98,"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":["event-driven","ffmepg","gin-gonic","grpc-go","http-live-str","kafka","micro-service","stream-media","watermill"],"created_at":"2025-01-08T19:39:15.905Z","updated_at":"2026-06-20T04:31:28.858Z","avatar_url":"https://github.com/weiawesome.png","language":"Go","funding_links":[],"categories":["Why This Project","Introduction"],"sub_categories":[],"readme":"# Gimy Clone API\n## Introduction\nThis is a backend to support a [stream-media website project](https://github.com/weiawesome/gimy_clone_website).\n\nIt divided into several service to handle with frontend request\n\n1. Upload advertisement and film resource\n2. Get the advertisement and film inserted with advertisement\n3. Get the list of films by different filter\n4. ...\n\n## How To Start\n### Deploy with docker-compose \n```shell\ncd deployment/docker-compose\ndocker-compose up -d\n```\n#### Then service will deploy in http://127.0.0.1\n## Skill Tree\n| Subject                    |                      |                            |\n|----------------------------|----------------------|----------------------------|\n| Design Mode                | Layered Architecture | Micro Service Architecture |\n| Transportation of Protocol | HTTP                 | gRPC                       |\n| Event Driven               | Kafka                | Watermill                  |\n| Storage                    | Mongodb              | MinIO                      |\n| Search Engine              | Elasticsearch        |                            |\n| Video Processing           | ffmpeg               |                            |\n| Deployment                 | docker-compose       | kubernetes                 |\n\n## System Architecture\n![system_architecture.png](assets/system_architecture.png)\n## Project Architecture\n### Micro Service Architecture\n```\n├── api_affair\n│\n├── api_media\n│\n├── api_upload\n│\n├── api_upload_worker\n│\n├── api_ad_service\n│\n├── api_film_service\n│\n├── assets\n│\n├── deployment\n│\n├── http_request_test\n```\n```\nNote:\n    Except deployment, http_request_test and assets, each directory represent with a service.\n\nassets              -\u003e    The directory to store the images.    \ndeployment          -\u003e    The scirpts to deploy the applications.\nhttp_request_test   -\u003e    The http file to test the api.\n    \napi_affair          -\u003e    The http server to handle with normal affair.\napi_media           -\u003e    The http server to get the media.\napi_upload          -\u003e    The http server to upload resource and create film.\napi_upload_worker   -\u003e    The http server to transform the media type and store it.\n\napi_film_service    -\u003e    The gRPC server to handle all data about film.\napi_ad_service      -\u003e    The gRPC server to handle all data about ad.\n```\n### Layered Architecture ( In Each Service )\n```\n├── api\n│\n├── service\n│\n├── repository\n```\n```\nNote:\n    In every service directory, most of them has api, service and repository.\n    It totally represent the layered arichitecture presnetation, business and data-access layer.\n    \nIn api directory\n    1. Define all the interface for the service \n    2. Setting the model of request and response\n\nIn service directory\n    1. Gain the data from representation layer\n    2. Try to get data from data-access layer\n    3. Finally it will do some calculate and return the value to representation layer \n\nIn repository directory\n    1. Gain the query from business layer\n    2. Try to connect the database and make some CRUD operation then return the value  \n```\n## The Function For Each Service \n### [Service - Affair](./api_affair)\n1. Get the films by different query\n2. Get the advertisements by different query\n### [Service - Media](./api_media)\n1. Get the playlist in specific film's episode\n2. Get the media including image, video and GIF.\n### [Service - Upload](./api_upload)\n1. Create a film and upload its information\n2. Upload an advertisement\n### [Service - Upload Worker](./api_upload_worker)\n1. As a consumer get the mission from api-upload\n2. Convert a file into HLS format and upload to database\n### [Service - Ad](./api_ad_service)\n1. Manipulate all the information about advertisement \n### [Service - Film](./api_film_service)\n1. Manipulate all the information about film","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweiawesome%2Fgimy_clone_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweiawesome%2Fgimy_clone_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweiawesome%2Fgimy_clone_api/lists"}