Skip to content

Latest commit

 

History

History
70 lines (53 loc) · 4.58 KB

README.md

File metadata and controls

70 lines (53 loc) · 4.58 KB

StartupOS

Gitter CircleCI

Examples for Google's Open Source stack and deployment to the cloud.

The main technologies in the stack are:

Hands-on experience

Try cloning the repo in Google Cloud Shell and look at the tutorials:

$ ls tutorials/
$ teachme <tutorial_name.md>

Open in Cloud Shell

Supported languages

Protos, gRPC and Bazel are polyglot. The examples in this repo are mostly in Java and Typescript, but there's support for many other languages:

  • gRPC and Protocol Buffers are supported by Google in C++, Java (and Android Java), Python, Go, C#, Objective-C, PHP, Dart, Ruby and JavaScript (incl. Node.js).
  • Bazel is supported by Google in Java (incl. Android builds), Objective-C (incl. iOS builds), C++, Go, Dart, Rust, Sass and Scala.
  • The community has added support for many others languages. See this list for Protocol Buffers and gRPC, and this one for Bazel.

Top examples

  • Lots of Protocol Buffer examples.
  • gRPC-Web: a js client library running in the browser, connected to a gRPC server through an HTTP proxy. Both server and client use gRPC auto-generated stubs to handle communication.
  • gRPC microservices example.
  • Docker example: building containers using Bazel (no dockerfile needed!).
  • Kubernetes: a config file showing how to run a container built with Bazel on k8s.
  • CI example: Using CircleCI to run CI (continuous integration) and test all Bazel targets.
  • Firebase: Java client for storing Protocol Buffers here.
  • Dagger: Java Dependency Injection framework ("Next gen Guice"), see examples here.
  • Flogger: Java logger with fluent API, see examples here.
  • Android app: An Android app built with Bazel and integrated to Firebase.

Tools

There are several useful tools in the tools section.

How to use StartupOS

You can treat StartupOS as a "developer image" with a pre-built setup and associated tools.

You can either:

Installation

Install Bazel. That's it!

Build & Test

  • Build everything: ./build.sh
  • Run all tests: ./test.sh

About monorepos

A monorepo is a software development approach where all code is stored in a single repository. StartupOS doesn't require you to work with a monorepo, but some things, such as sharing a proto file across front-end and backend, are easier to do in a monorepo.

Some good reads about the monorepo approach:

Contributing

You're welcome to contribute and in doing so, learn these technologies. You can have a look at the issues list, or at the project milestones.