jupiter-layout icon indicating copy to clipboard operation
jupiter-layout copied to clipboard

Jupiter Project Layout

Jupiter Project Layout

GoTest codecov Go Report Card license

Concepts

  • Support HTTP/gRPC with Protobuf
  • Single Repo and Multiple Applications
  • High Cohesion and Low Coupling
  • Dependency Injection
  • Auto Code Generation
  • Unit Test with Mock
  • E2E Test with Docker
  • Define errors in Proto
  • Define validate rules in Proto
  • Auto generate Swagger API Documentation
  • Builtin Swagger UI

Quick Start with Kubernetes

  • Deploy Juno
kubectl apply -f https://github.com/douyu/juno/releases/download/latest/install.yml
  • Wait for ready
kubectl wait --for=condition=available --timeout=600s deployment/juno-admin -n default
  • Deploy Jupiter-Layout
kubectl apply -f https://github.com/douyu/jupiter-layout/releases/download/latest/install.yml
  • Wait for ready
kubectl wait --for=condition=available --timeout=600s deployment/exampleserver -n default
  • Expose Jupiter-Layout Deployment
kubectl port-forward deployments/exampleserver 9527:9527 9528:9528 9529:9529 -n default

Test

  • HTTP
curl "http://localhost:9527/v1/helloworld.Greeter/SayHello/bob"
{"error":0,"msg":"","data":{"name":"hello bob","ageNumber":0,"sex":0,"metadata":null}}
  • GRPC
buf curl --schema api --protocol grpc --http2-prior-knowledge --data '{"name":"bob"}' http://localhost:9528/helloworld.v1.GreeterService/SayHello
{"data":{"name":"hello bob"}}

DEVELOPER Guide

  • DEVELOPER.md

Bugs and Feedback

For bug report, questions and discussions please submit an issue.

Contributing

Contributions are always welcomed!

You can start with the issues labeled with good first issue.

Contact