Skip to content

VirtumartOz/jupiter-layout

Repository files navigation

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

Quick Start with Kubernetes

  • Deploy Juno
kubectl apply -f https://github.com/douyu/juno/releases/download/latest/install.yml --server-side=true
  • 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

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

About

Jupiter Project Layout

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 84.0%
  • Makefile 13.0%
  • Shell 2.5%
  • Dockerfile 0.5%