## Please Note: We have moved this documentation over to Notion, please make edits there.

https://www.notion.so/

Please email techsupport@theorchard.com for access if you do not have access through Okta.


# Orchard Docs

The Orchard Docs repo acts as a centralized TOC of Orchard Tech Onboarding, Best Practices, Technical Diagrams, and all things to help guide you around the Orchard code base.

Code heavy documentation will live in github. Ex. boilerplates, styleguides, etc.

Diagram and word heavy documents will live in Google Drive. Ex. Onboarding Presentation, Runbooks, etc.

If you have documentation you would like to add, improve, update or delete, make a PR and notify the \#tech-steering Slack channel!

## Onboarding

General onboarding can be found in the [Engineering &gt; Onboarding](https://drive.google.com/drive/u/1/folders/1_QoAezhsoncjvDFGMto7tcgWn0aVRI9p) shared drive.

Key Documents include:

* [Navigating Tech Life & SDLC Basics](https://docs.google.com/presentation/d/15e8xtiPBYwjrrNfk9avxRILgK1a_IobM9oa-KWv5ehw/edit#slide=id.p)
* [Security Onboarding](https://docs.google.com/presentation/u/1/d/1eoKsv6o3Y1UgwCCkB2a84UtS1EIch-VzF4_VDp7COcY/edit?usp=drive_web&ouid=115220263771652925390)
* [Introduction to The Monorepo](https://drive.google.com/file/d/1Wn_4AmuksrBVy6f9k-CyuS_E7MR6QZ8y/view)

## Tech Process Guidelines

* [On Call Primer](https://docs.google.com/document/d/1MzXnSaa7XNqxCdTIBGnok_FyfuaKfmT-mmQlqvJF77Y)
* [Engineering Interview Process](https://docs.google.com/document/d/1ZXqnjCWv5MFdGfMosOoz1ytapKHmjQ3QP9PKqLV5fYs/edit#)
  * [Software Engineer On-site Interview Format](https://docs.google.com/document/d/1K95ofkbqpqPK6ox5u8A16eE7oarTMg6DKNrkI2tn2IA/edit#heading=h.93mmes683gol)
* [What is Demo & Donuts](https://docs.google.com/presentation/d/1iz2TutWYw-ssFj2hr8hrtjO6sxFR50o5jQBmyHzskV8/edit#slide=id.g469f3814bd_0_13)

## Tech Best Practices

* [Making Database Changes](https://docs.google.com/presentation/d/1vZF2peaqbeN3TcTxTNotuek_p5LtVWkbdfA2I1eObdo)
* [Mergers Training](https://drive.google.com/open?id=1P3uDGm_mwCEY7MCMKbHply2Qy53pKjc-SFNzeN6Iv4M)

## Tech Architecture
* [Orchard Tech Topography](https://whimsical.com/orchard-api-definitions-X5atZBFKg9tnWVbCvCe2Hc) - A visual overview illustrating the general architecture of our applications, APIs, services, microservices, and data storage.
* [Microservices, Lambdas, Frontends, & ETLs](https://docs.google.com/spreadsheets/d/1c-txc_SMJyVT5Z4NN8aQpWz6jbFDdTEAr2-w9_YfEVo) - Running list of services and owners
* [Quickstart/Setup Guides](https://drive.google.com/drive/u/1/folders/1IkPwxvQ7g9Xm7GajqjGfvCMqIMofCH03) - Microservices, Lambdas, Terraform, etc.
* [GRASS - Overview](https://docs.google.com/presentation/d/1TridG1Z-BQCPEI7nzqhm4Fvym6Q079OsMyEcCR7MfgY) - Overview of the public proxy in front of all Orchard APIs
* [GraphQL](graphql/) - How everything related to GraphQL works at The Orchard
* [Jenkins Deep Dive Guide](https://docs.google.com/presentation/d/1KP4jrnvp4Cm63bV2SlA4fOun5jwK9khrn9RazXhkx3g/edit#slide=id.g22d773b2c4_0_0) - How our CI/CD code ships
* [Monolith Deploy Process](https://docs.google.com/presentation/d/17HMNir2ucbVRbDqroEcYOp3omzUeHIMB3JQXnmriCJs/edit#slide=id.g4687cd84e6_3_254)- How our legacy code ships
* [Abacus - Inventory and Links](https://docs.google.com/spreadsheets/d/16x-qfzHrdJkwQ-Xfa16vhh8V1YTHFNgVNL80Gj_qLuM/edit#gid=0) - Royalties & accounting systems
* [Split.io](https://docs.google.com/document/d/1Ozrj9gWn8W5U9L6MEpHGhi7o8L2Au0oyIJVKj6pifkA/edit) - How to create and manage Feature Flags
* [Music Graph](https://docs.google.com/document/d/1LV4EBTw2bJZlpi-6uxYnOv-QAtZDsUNBXzzsTlOOpRg/edit) - Overview of the Orchard Graph (why, what data is there, sample queries and more)
* [Orchard User & Application Taxonomy](https://docs.google.com/presentation/d/1TAHkzbGDYdZa8c8_lfn79KzKFEe4g6_snOZ5t4AEBU4/edit#slide=id.p) -- Overview of Identities, Profiles, Applications, Resources, Roles, Permissions and how to build things with them
* `<Insert Orchard-Cli link>`
* [JavaScript Package Management Setup](javascript/packages.md)

## Boilerplates

The [docs/boilerplates](boilerplates/) directory lists all boilerplates for our main application frameworks.

New applications should be built from an existing boilerplate in order to take advantage of optimized code, patterns, logging, etc.

## Patterns

The [docs/patterns](patterns/) directory Re-usable code & patterns for our microservices, frontend apps, SWF ETLs, lambdas, etc.

These are patterns that have proven useful for applications, but don't live in a common library.

## Team-Oriented Onboarding Docs

[Team Onboarding Docs live on Orchard Shared Drives](https://drive.google.com/drive/u/1/shared-drives) and are maintained by individual teams.

## Styleguides

Style guides for each of the languages we work with can be found in the [General Styleguide](styleguides/) section of this repo.

* [APIs](https://github.com/theorchard/docs/tree/1366e7ea02831c822c4f3cfefb6103b61b89ad80/api.md)
* [CSS](styleguides/css.md)
* GraphQL - coming soon!
* [HTML](styleguides/html.md)
* [Javascript](styleguides/javascript.md)
* [PHP](styleguides/php.md)
* [Python](styleguides/python.md)
* [Ruby](styleguides/ruby.md)
* [Scala](styleguides/scala.md)
* [Repo Naming](https://github.com/theorchard/docs/tree/1366e7ea02831c822c4f3cfefb6103b61b89ad80/stylguides/repo.md)

## Postmortems

Use the [postmortem guide](postmortem.md) if you are looking to review and learn from a production outage, broken build, or general tech process.

## Glossaries

Collection of definitions as they relate to relevant topics. 

* [Accounting](https://docs.google.com/spreadsheets/d/1u2PvNBoNGgWhws6UIbDgLG9OAsH6zpFAuFDMhpP5tAc/edit#gid=0)
* [Distribution](https://github.com/theorchard/distro-wiki/wiki/Acronyms)
* [Orchard Glossary (WIP)](https://docs.google.com/spreadsheets/d/1j5Ca7_eDRJwe0HpyBkFHrDfkY3o2fGnilIy3jehqFWA/edit#gid=1587574731)
* [Platform](https://docs.google.com/presentation/d/1TAHkzbGDYdZa8c8_lfn79KzKFEe4g6_snOZ5t4AEBU4/edit)
