{"id":34131506,"url":"https://github.com/d3ta-go/app-restapi-composite","last_synced_at":"2026-03-10T09:02:42.284Z","repository":{"id":56230377,"uuid":"311189696","full_name":"d3ta-go/app-restapi-composite","owner":"d3ta-go","description":"Interface/Presentation App.: RestAPI Composite Application Interface","archived":false,"fork":false,"pushed_at":"2021-04-14T03:57:37.000Z","size":3777,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-17T11:51:28.682Z","etag":null,"topics":["ddd","ddd-architecture","ddd-modular","interface-layer","rest-api"],"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/d3ta-go.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}},"created_at":"2020-11-09T01:11:52.000Z","updated_at":"2020-11-26T09:41:26.000Z","dependencies_parsed_at":"2022-08-15T15:01:10.376Z","dependency_job_id":null,"html_url":"https://github.com/d3ta-go/app-restapi-composite","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":"d3ta-go/project-template","purl":"pkg:github/d3ta-go/app-restapi-composite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ta-go%2Fapp-restapi-composite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ta-go%2Fapp-restapi-composite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ta-go%2Fapp-restapi-composite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ta-go%2Fapp-restapi-composite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/d3ta-go","download_url":"https://codeload.github.com/d3ta-go/app-restapi-composite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/d3ta-go%2Fapp-restapi-composite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30328272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ddd","ddd-architecture","ddd-modular","interface-layer","rest-api"],"created_at":"2025-12-15T00:52:41.451Z","updated_at":"2026-03-10T09:02:42.265Z","avatar_url":"https://github.com/d3ta-go.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# app-restapi-composite ( [![Go Report Card](https://goreportcard.com/badge/github.com/d3ta-go/app-restapi-composite)](https://goreportcard.com/report/github.com/d3ta-go/app-restapi-composite) )\n\nInterface/Presentation Layer: RESTAPI Composite Application Interface\n\nA part of `Simple Implementation of Modular DDD Technical Architecture Patterns in Go`.\n\n## Diagram v 0.2.2-Modular\n\n![DDD-Technical-Architecture-Patterns-Golang-0.2.2: Modular](docs/img/DDD-Technical-Architecture-Patterns-Golang-0.2.2-Modular.png)\n\n## Components\n\nA. Interface Layer (Composite Interface)\n\n1. REST API - using Echo Framework [ [d3ta-go/app-restapi-composite](https://github.com/d3ta-go/app-restapi-composite) ]\n\nB. DDD Modules:\n\n1. Geolocation - using DDD Layered Architecture Pattern (CRUD-GORM) [ [d3ta-go/ddd-mod-geolocation](https://github.com/d3ta-go/ddd-mod-geolocation) ]\n2. Authentication - using DDD Layered Architecture (Contract, GORM) [ [d3ta-go/ddd-mod-account](https://github.com/d3ta-go/ddd-mod-account) ]\n3. Email - using DDD Layered Architecture (Contract, GORM, SMTP) [ [d3ta-go/ddd-mod-email](https://github.com/d3ta-go/ddd-mod-email) ]\n4. Covid19 - using DDD Layered Architecture (Contract, Adapters -\u003e Connectors) [ [d3ta-go/ddd-mod-covid19](https://github.com/d3ta-go/ddd-mod-covid19) ]\n\nC. Common System Libraries [ [d3ta-go/system](https://github.com/d3ta-go/system) ]:\n\n1. Configuration - using yaml\n2. Identity \u0026 Securities - using JWT, Casbin (RBAC)\n3. Initializer\n4. Email Sender - using SMTP\n5. Handler\n6. Migrations\n7. Utils\n\nD. Databases\n\n1. MySQL (tested)\n2. PostgreSQL (untested)\n3. SQLServer (untested)\n4. SQLite3 (untested)\n\nE. Providers (Connectors) [ [d3ta-go/connector-\\*](https://github.com/d3ta-go/connector-covid19) ]:\n\n1. data.covid19.go.id (Official Covid19 Website - Indonesia)\n2. covid19.who.it (Official Covid19 Website - WHO)\n\nF. Persistent Caches\n\n1. Session/Token/JWT Cache (Redis, File, DB, etc) [tested: Redis]\n2. Indexer/Search Cache (ElasticSearch)\n\nG. Messaging [to-do]\n\nH. Logs [to-do]\n\n### Development\n\n1. Clone\n\n```shell\n$ git clone https://github.com/d3ta-go/app-restapi-composite.git\n```\n\n2. Setup\n\n```\na. copy `conf/config-sample.yaml` to `conf/config.yaml`\nb. copy `conf/data/test-data-sample.yaml` to `conf/data/test-data.yaml`\nc. setup your dependencies/requirements (e.g: database, redis, elasticsearch, smtp, etc.)\n```\n\n3. Runing on Development Stage\n\n```shell\n$ cd app-restapi-composite\n$ go run main.go db migrate\n$ go run main.go server restapi\n```\n\n4. Build\n\n```shell\n$ cd app-restapi-composite\n$ go build\n$ ./app-restapi-composite db migrate\n$ ./app-restapi-composite server restapi\n```\n\n5. Distribution (binary)\n\nBinary distribution (OS/arch):\n\n- darwin/amd64\n- linux/amd64\n- linux/386\n- windows/amd64\n- windows/386\n\n```shell\n$ cd app-restapi-composite\n$ sh build.dist.sh\n$ platform: [choose from OS/arch list, for example: darwin/amd64]\n$ cd dist/[OS-arch]/\n$ ./app-restapi db migrate\n$ ./app-restapi server restapi\n```\n\n**RESTAPI (console):**\n\n![Composite REST API](docs/img/composite-sample-app-rest-api.png)\n\n**Swagger UI (openapis docs):**\n\nURL: http://localhost:2020/openapis/docs/index.html\n\n![Openapis: Composite REST AIP](docs/img/composite-sample-openapis-docs.png)\n\n**Related Domain/Repositories:**\n\n1. DDD Module: Account (Generic Subdomain) - [d3ta-go/ddd-mod-account](https://github.com/d3ta-go/ddd-mod-account)\n2. DDD Module: Email (Generic Subdomain) - [d3ta-go/ddd-mod-email](https://github.com/d3ta-go/ddd-mod-email)\n3. DDD Module: GeoLocation (Supporting Subdomain) - [d3ta-go/ddd-mod-geolocation](https://github.com/d3ta-go/ddd-mod-geolocation)\n4. DDD Module: Covid19 (Core Subdomain) - [d3ta-go/ddd-mod-covid19](https://github.com/d3ta-go/ddd-mod-covid19)\n5. Common System Libraries - [d3ta-go/system](https://github.com/d3ta-go/system)\n\n**Online Demo:\\***\n\n\u003e Due the limitation of our server spec (for ELK: Elasticsearch/Kibana). We cannot provide the online demo for this repo. Very sorry for the inconvenience.\n\nAvailable Online Demo:\n\n1. Account REST API Microservice - [d3ta-go/ms-account-restapi](https://github.com/d3ta-go/ms-account-restapi)\n2. Email REST API Microservice - [d3ta-go/ms-email-restapi](https://github.com/d3ta-go/ms-email-restapi)\n3. Covid19 REST API Microservice - [d3ta-go/ms-covid19-restapi](https://github.com/d3ta-go/ms-covid19-restapi)\n\n4. Email GraphQL API Microservice - [d3ta-go/ms-email-graphql-api](https://github.com/d3ta-go/ms-email-graphql-api)\n\n**References:**\n\n1. [Book] Domain-Driven Design: Tackling Complexity in the Heart of Software 1st Edition (Eric Evans, 2004)\n\n2. [Book] Patterns, Principles, and Practices of Domain-Driven Design (Scott Millett \u0026 Nick Tune, 2015)\n\n**Team \u0026 Maintainer:**\n\n1. Muhammad Hari (https://www.linkedin.com/in/muharihar/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3ta-go%2Fapp-restapi-composite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fd3ta-go%2Fapp-restapi-composite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fd3ta-go%2Fapp-restapi-composite/lists"}