Skip to content

By providing a Microsoft Teams experience, Teams for Justice addresses the need to facilitate hearings online with tooling that reflects the principles of case procedure.

License

microsoft/teams4justice

Repository files navigation

Teams for Justice

Beginning with Australian courts and tribunals, Teams for Justice addresses the need to facilitate hearings online with tooling that reflects the principles of case procedure. The COVID-19 pandemic has been a catalyst for this need. By providing a Microsoft Teams experience that accommodates the general needs of courts and tribunals in an online setting, we will materially improve what is currently considered a sub-optimal experience of managing and moderating online hearings.

Our goal is enabling the moderator to �bring back order to the courts.�

Table of Contents

Soluton Architecture

An overview of the architecture for the solution and its component parts cane be found here

Development Overview

This project has been configured to work best with VS Code. There are two ways to open this project:

  1. As a folder - simply open VS code from the root of the repository.
  2. As a workspace - After opening as a folder, click on the dialog in the bottom right to open the workspace, or go to File -> Open Workspace and select the workspace.code-workspace file.

Azure Functions

Running and debugging Azure Functions locally works best when running as a workspace; the workspace gives access to most of the same code files, organized as projects. If a file is not present in the workspace, feel free to either it to the workspace, or open as a folder for full access.

Extension Management

Azure Functions that wish to interop with different Azure Services require bindings for those services. We are using an explicit approach to manage these extensions to minimize the build times as well as to ensure we stay locked into the versions of these bindings we know work well through testing.

If you are just working with existing code, there is nothing to do as we have a build step that will synchronize your local project with the already configured extensions (i.e. runs func extensions sync) whenever you call yarn build. If a new binding is necessary, the developer should either add this binding explicitly by referencing it in the function.json file and calling func extensions install which will crawl the function.json files in the project, discover all bindings used and update the extensions.csproj or manually install the extension using func extensions install -p <extension-package-name> [-v <version>].

For more on registering extensions, please refer to this Azure Functions CLI documentation.

Development Container

Prerequisites:

This project supports the use of development containers. Dev containers are a great way to package all development requirements into a docker image and running VS code from the context of that docker image. Dev containers can also be used with Github Codespaces for a hosted development environment.

To use the dev container, follow the Quick Start instructions in the VS code documentation. VS Code will restart itself and open in the context of the docker container with your local repo mounted directly into the container so you will not lose any work if the container stops.

Building

Pre-requisites:

All project source code is located in the src folder. This project utilizes yarn workspaces to support all the projects as separate packages in a monorepo. To install dependencies and build and test all the projects, run the following from the src folder:

yarn install        # installs all dependencies
yarn build          # builds all projects
yarn test           # run all unit tests

Using yarn workspaces means all dependencies are co-located in a single node_modules folder in the src folder. To run any script present in a package.json for one of the projects within the workspace, you can use the following command:

yarn <project name> <command>

Or to run against all projects:

yarn workspaces run <command>

See src/package.json for examples of this usage.

Deploying to Azure

To deploy Teams for Justice (T4J) solution to Azure, you'd need to follow the steps and provided instructions in the various documents spread across this Wiki folder. To help you with navigating throught a myriad of documents for how to deploy Teams for Justice into a new Azure and Teams environment, this section provides you with an list of documents and helpful guidelines that you can follow along in the process of deploying all Teams for Justice Azure and Teams components.

Here is the list of operations we suggest you to perform in the order they are outlined:

  1. Create a new or sign in as a global administrator into a targeted Microsoft Azure subscription
  2. Create a new or sign in as a Teams administrator into a targeted Microsoft Teams tenant
  3. Obtain M365 licenses (E3 or E5) as you'd need them later when provisioning Teams for Justice application
  4. Fork the teams4justice solution in GitHub to your own GitHub account
  5. Create Azure AD App Registrations for all T4J microservices (see more Application Security)
  6. Configure Microsoft Teams tenant with the PowerShell scripts (see more Setting Up Teams Tenant)
  7. Deploy baseline Azure infrastructure using Terraform scripts (see more Set up Terraform Infrastructure)
  8. Follow the remaining steps in Setting up a new environment)

MEGA Linting

Prerequisites:

This project uses a variety of linters to ensure code quality and style. Most of the linters are integrated into the VS Code dev container or are recommended extensions. This project also uses the mega-linter to run linting for all PRs automatically via GitHub Actions.

This tool is automatically installed in the dev container; to install it on your local machine, run npm install -g mega-linter-runner. To run the mega-linter locally, run mega-linter-runner in the root of the repository. Configuration for the mega-linter can be found in .mega-linter.yml.

Azure Storage Emulation

Several of the projects in this repo, such as the Azure Functions, are reliant on Azure Storage features to run. [Azurite] solves this problem well for local development. Azurite can either be installed as a global tool using its npm package or as a container which you can spin up using Docker Desktop. Documentation for how to work with each specific approach is provided at each of the respective links.

Then, in the project(s) that depends on Azure Storage, just make sure you set any Azure Storage connection strings setting (e.g. AzureWebJobsStorage) in your configuration files (e.g. environment vars or appsettings) to the value: UseDevelopmentStorage=true. This tells the SDK to specifically look for the emulator running on a specific set of default ports.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

About

By providing a Microsoft Teams experience, Teams for Justice addresses the need to facilitate hearings online with tooling that reflects the principles of case procedure.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published