Code Monkey home page Code Monkey logo

hello-world's Introduction

hello-world

A World of Helloz.

Purpose

This repository has a few different purposes.

  • First, it is intended to hold all Hello World type projects I decide to do.
  • Second, and perhaps more importantly, it will be used to demonstrate the ability to implement a fully functional polyglot monorepo.
  • Lastly, and probably the most ambitious goal, we want this repository to demonstrate some best practices with regards to the development and deployment of modern software. Specifically we are focused on reproducibility (infra-as-code and config-as-code), correctness, environment isolation (hermeticity), and developer experience (speed & simplicity).

Business Requirements

The primary business requirements are as follows:

  1. All of the projects must be able to be run. Which means that the repository must be configured to properly support each project's coding language.
  2. Each project should be easily exportable. Which means that the projects should be callable from other projects inside and outside of the repo.
  3. It should be easy, or at least there should be a clear path, to add new "Hello World" projects of various kinds to the repository.

Technical Requirements

We use specific tooling (Nix, Bazel, direnv) and methodologies (trunk-based development, test-driven development, modular design) to help us meet the goals and business requirements stated above.

Get Started

To get started you'll need the following tools installed on your system:

  • Nix: to be used as a package manager to ensure that the environment has all additional tooling required for builds. Either the NixOS linux distro or the standalone Nix package manager can be used.
  • Bazel: to be used as the primary build tool for the repo.

Please visit the Nix + Bazel website to learn more about the specific rational for using these two tools as the foundation for this monorepo.

The following tool is not a hard requirment, but it is strongly recommend:

  • direnv is used as a tool used to improve developer experience. It allows for automatically configuring a development shell upon navigation to directories that include a .envrc file.

hello-world's People

Contributors

kourtni avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.