Home

Awesome

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 these Google Cloud Shell tutorials:

Multi-language code formatting tool built with Bazel:

Open in Cloud Shell

Field & enum renaming API backwards compatibility 1: how old data can still be read by new release, even after renaming:

Open in Cloud Shell

Field & enum renaming API backwards compatibility 2: how old releases can talk to new releases without breaking:

TBD

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:

Top examples

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

About monorepos

A monorepo is a software development approach where all code is stored in a single repository. Some things are easier to do in a monorepo, such as sharing a proto file across front-end and backend, some things are harder, such as per-repo control over collaborators, email notifications, commit history etc. We're working on an approach where multiple repos can act as a single monorepo, while still being separate repos, using multi-repo tooling such as multi-repo code review.

Some good reads about the monorepo approach:

Platforms

While Bazel supports Linux, Mac and Windows, this repo supports Linux and Mac. If you're on Windows 10, you can use Windows Subsystem for Linux (WSL). It gives you a Linux environment, without the overhead of a virtual machine.

Installing Windows Subsystem for Linux:

Please follow the guide. Note: You may have to do a Windows upgrade. If you need it, it will ask for it at the beginning of the installation.

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.