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.�
An overview of the architecture for the solution and its component parts cane be found here
This project has been configured to work best with VS Code. There are two ways to open this project:
- As a folder - simply open VS code from the root of the repository.
- 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 theworkspace.code-workspace
file.
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.
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.
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.
Pre-requisites:
- Node 14
- Yarn (run
npm install -g yarn
) - Azure Functions Core Tools v3
- Can be installed with
npm i -g azure-functions-core-tools@3 --unsafe-perm true
- Can be installed with
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.
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:
- Create a new or sign in as a global administrator into a targeted Microsoft Azure subscription
- Create a new or sign in as a Teams administrator into a targeted Microsoft Teams tenant
- Obtain M365 licenses (E3 or E5) as you'd need them later when provisioning Teams for Justice application
- Fork the
teams4justice
solution in GitHub to your own GitHub account - Create Azure AD App Registrations for all T4J microservices (see more Application Security)
- Configure Microsoft Teams tenant with the PowerShell scripts (see more Setting Up Teams Tenant)
- Deploy baseline Azure infrastructure using Terraform scripts (see more Set up Terraform Infrastructure)
- Follow the remaining steps in Setting up a new environment)
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
.
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.
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.
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.