Skip to content

d3ta-go/app-restapi-composite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

app-restapi-composite ( Go Report Card )

Interface/Presentation Layer: RESTAPI Composite Application Interface

A part of Simple Implementation of Modular DDD Technical Architecture Patterns in Go.

Diagram v 0.2.2-Modular

DDD-Technical-Architecture-Patterns-Golang-0.2.2: Modular

Components

A. Interface Layer (Composite Interface)

  1. REST API - using Echo Framework [ d3ta-go/app-restapi-composite ]

B. DDD Modules:

  1. Geolocation - using DDD Layered Architecture Pattern (CRUD-GORM) [ d3ta-go/ddd-mod-geolocation ]
  2. Authentication - using DDD Layered Architecture (Contract, GORM) [ d3ta-go/ddd-mod-account ]
  3. Email - using DDD Layered Architecture (Contract, GORM, SMTP) [ d3ta-go/ddd-mod-email ]
  4. Covid19 - using DDD Layered Architecture (Contract, Adapters -> Connectors) [ d3ta-go/ddd-mod-covid19 ]

C. Common System Libraries [ d3ta-go/system ]:

  1. Configuration - using yaml
  2. Identity & Securities - using JWT, Casbin (RBAC)
  3. Initializer
  4. Email Sender - using SMTP
  5. Handler
  6. Migrations
  7. Utils

D. Databases

  1. MySQL (tested)
  2. PostgreSQL (untested)
  3. SQLServer (untested)
  4. SQLite3 (untested)

E. Providers (Connectors) [ d3ta-go/connector-* ]:

  1. data.covid19.go.id (Official Covid19 Website - Indonesia)
  2. covid19.who.it (Official Covid19 Website - WHO)

F. Persistent Caches

  1. Session/Token/JWT Cache (Redis, File, DB, etc) [tested: Redis]
  2. Indexer/Search Cache (ElasticSearch)

G. Messaging [to-do]

H. Logs [to-do]

Development

  1. Clone
$ git clone https://github.com/d3ta-go/app-restapi-composite.git
  1. Setup
a. copy `conf/config-sample.yaml` to `conf/config.yaml`
b. copy `conf/data/test-data-sample.yaml` to `conf/data/test-data.yaml`
c. setup your dependencies/requirements (e.g: database, redis, elasticsearch, smtp, etc.)
  1. Runing on Development Stage
$ cd app-restapi-composite
$ go run main.go db migrate
$ go run main.go server restapi
  1. Build
$ cd app-restapi-composite
$ go build
$ ./app-restapi-composite db migrate
$ ./app-restapi-composite server restapi
  1. Distribution (binary)

Binary distribution (OS/arch):

  • darwin/amd64
  • linux/amd64
  • linux/386
  • windows/amd64
  • windows/386
$ cd app-restapi-composite
$ sh build.dist.sh
$ platform: [choose from OS/arch list, for example: darwin/amd64]
$ cd dist/[OS-arch]/
$ ./app-restapi db migrate
$ ./app-restapi server restapi

RESTAPI (console):

Composite REST API

Swagger UI (openapis docs):

URL: http://localhost:2020/openapis/docs/index.html

Openapis: Composite REST AIP

Related Domain/Repositories:

  1. DDD Module: Account (Generic Subdomain) - d3ta-go/ddd-mod-account
  2. DDD Module: Email (Generic Subdomain) - d3ta-go/ddd-mod-email
  3. DDD Module: GeoLocation (Supporting Subdomain) - d3ta-go/ddd-mod-geolocation
  4. DDD Module: Covid19 (Core Subdomain) - d3ta-go/ddd-mod-covid19
  5. Common System Libraries - d3ta-go/system

Online Demo:*

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.

Available Online Demo:

  1. Account REST API Microservice - d3ta-go/ms-account-restapi

  2. Email REST API Microservice - d3ta-go/ms-email-restapi

  3. Covid19 REST API Microservice - d3ta-go/ms-covid19-restapi

  4. Email GraphQL API Microservice - d3ta-go/ms-email-graphql-api

References:

  1. [Book] Domain-Driven Design: Tackling Complexity in the Heart of Software 1st Edition (Eric Evans, 2004)

  2. [Book] Patterns, Principles, and Practices of Domain-Driven Design (Scott Millett & Nick Tune, 2015)

Team & Maintainer:

  1. Muhammad Hari (https://www.linkedin.com/in/muharihar/)