All Projects → google → Startup Os

google / Startup Os

Licence: apache-2.0
Working examples of Google's Open Source stack and deployment to the cloud.

Programming Languages

java
68154 projects - #9 most used programming language
cpp
1120 projects

Projects that are alternatives of or similar to Startup Os

Rules protobuf
Bazel rules for building protocol buffers and gRPC services (java, c++, go, ...)
Stars: ✭ 206 (-63.48%)
Mutual labels:  grpc, bazel, protocol-buffers
Firestore Import Export
An application that can help you to backup and restore from Cloud Firestore | Firebase
Stars: ✭ 392 (-30.5%)
Mutual labels:  firebase, firestore
Redux Firestore
Redux bindings for Firestore
Stars: ✭ 530 (-6.03%)
Mutual labels:  firebase, firestore
Messenger Ios Chat Swift Firestore
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift
Stars: ✭ 405 (-28.19%)
Mutual labels:  firebase, firestore
Firestore Apollo Graphql
An example of a GraphQL setup with a Firebase Firestore backend. Uses Apollo Engine/Server 2.0 and deployed to Google App Engine.
Stars: ✭ 371 (-34.22%)
Mutual labels:  firebase, firestore
Firebucket
Glimpse into Firebase, with a simple TODO list app built around Dagger, RxJava 2, Clean architecture and of course, Firebase.
Stars: ✭ 376 (-33.33%)
Mutual labels:  firebase, dagger
Kroto Plus
gRPC Kotlin Coroutines, Protobuf DSL, Scripting for Protoc
Stars: ✭ 400 (-29.08%)
Mutual labels:  grpc, protocol-buffers
Flutter programs
Experiments with Mobile
Stars: ✭ 308 (-45.39%)
Mutual labels:  firebase, firestore
Geofirestore Js
Location-based querying and filtering using Firebase Firestore.
Stars: ✭ 436 (-22.7%)
Mutual labels:  firebase, firestore
Prototool
Your Swiss Army Knife for Protocol Buffers
Stars: ✭ 4,932 (+774.47%)
Mutual labels:  grpc, protocol-buffers
Awesome Firebase
🔥 List of Firebase talks, tools, examples & articles! Translations in 🇬🇧 🇷🇺 Contributions welcome!
Stars: ✭ 448 (-20.57%)
Mutual labels:  firebase, firestore
Squzy
Squzy - is a high-performance open-source monitoring, incident and alert system written in Golang with Bazel and love.
Stars: ✭ 359 (-36.35%)
Mutual labels:  grpc, bazel
Firestoregoogleappsscript
A Google Apps Script library for accessing Google Cloud Firestore.
Stars: ✭ 352 (-37.59%)
Mutual labels:  firebase, firestore
Firebase Instagram
📸 Instagram clone with Firebase Cloud Firestore, Expo, and React Native 😁😍
Stars: ✭ 389 (-31.03%)
Mutual labels:  firebase, firestore
Sapphiredb
SapphireDb Server, a self-hosted, easy to use realtime database for Asp.Net Core and EF Core
Stars: ✭ 326 (-42.2%)
Mutual labels:  firebase, firestore
Geofirex
🌐 📍 Geolocation Queries with Firestore & RxJS
Stars: ✭ 396 (-29.79%)
Mutual labels:  firebase, firestore
Protobuf
[Looking for new ownership] Protocol Buffers for Go with Gadgets
Stars: ✭ 4,998 (+786.17%)
Mutual labels:  grpc, protocol-buffers
Firesql
Query Firestore using SQL syntax
Stars: ✭ 304 (-46.1%)
Mutual labels:  firebase, firestore
Firestore Backup Restore
NPM package for backup and restore Firebase Firestore
Stars: ✭ 307 (-45.57%)
Mutual labels:  firebase, firestore
Awesome Grpc
A curated list of useful resources for gRPC
Stars: ✭ 4,932 (+774.47%)
Mutual labels:  grpc, protocol-buffers

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:

  • 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. 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].