Find a Location (FAL) - Software-as-a-Service (SaaS)

⚡️ Quickstart

This project was generated with Angular CLI version 12.1.2
  • Clone the repository to your local machine:

git clone

  • Install the dependencies: npm install

  • Run the application: npm start

  • Open the browser to http://localhost:4200/


  • This project is hosted using Azure Static Web Apps. If you would like to run the application locally, using the Static Web App (SWA) configuration, please install the following package:
    • npm install -g @azure/static-web-apps-cli Then run the following command:
    • npm run start:hosting
Running `npm run ng` uses the locally installed Angular CLI that matches the project version. Running `ng` uses your globally installed version of the Angular CLI. To pass parameters and arguments to the `npm run ng` command, insert a double dash `--` before the parameters or arguments. Ex: `npm run ng -- help`.

📖 Next-Steps

This project utilizes both in-house and third-party dependencies.

In-house dependencies are published to the package registry on Azure Devops:

The following core libraries are used in this project:

Design Structure

To keep maintainability we strongly encourage a specific design structure. Below are some references to our practices and principles on keeping a clean, scalable, and maintainable code base:

📚 Further Reading

Development server

Run npm run start for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Run npm run start:all to run the dev server for all example sites at once to do theme usage testing and validation.

Run npm run start:hosting to simulate how the example sites and documentation are hosted in the deployed environment.

Code scaffolding

Run npm run ng -- generate component component-name to generate a new component. You can also use npm run ng -- generate directive|pipe|service|class|guard|interface|enum|module.

Feature modules

Run npm run ng -- g module features/new-feature-name to generate a new feature module. Append the command with --routing to configure for Angular routing.


  • Run npm run ng -- g module features/search-landing --routing to generate a new feature module with routing.

Adding a new Example Site

  1. Create a new configuration.json file
    1. See src/local/dh/configuration.json
    2. Set new values
  2. Add new build and serve config blocks in angular.json
    1. See angular.json --> or Click here
      1. Update the input value on the assets block for glob configuration.json See: example
    2. See angular.json --> projects.fal-spa-ngx.architect.serve.configurations.development-dh
  3. Update the for loop in scripts/build.js to include the new example site key
    1. At the time of writing, it would be at line 43
  4. Add the new example site link to the static site home page static/index.html


Run npm run build to build the project. The build artifacts will be stored in the dist/ directory.

Run npm run build:dist to build the project and all documentation artifacts. The final artifacts will be stored in public/.

Running unit tests

Run npm run test to execute the unit tests.

Run npm run test:ci to execute the unit tests as it will in the CI pipeline.

Running end-to-end tests

Run npm run e2e to execute the end-to-end tests.

Run npm run e2e:ci to execute the end-to-end tests as it will in the CI pipeline.

Creating Documentation

Before you submit your PR you may want to generate the documentation for yourself. It can be very useful in helping you find any hidden bugs, bad routing, etc. To generate documentation run one of the three following commands:

  • To continually generate docs as you code, run:

    • npm run docs:watch
  • To build and serve the documentation on a live server, run:

    • npm run docs:serve
  • To build the static documentation for deployment, simply run:

    • npm run docs:build

The documentation package includes the documentation for this entire project including a dependency graph, all modules, classes, directives, and pipes. It also contains installation instructions under the "Additional Documentation" tab. It is possible to separate the two during deployment.

🎯 Features

The following are the core feature modules of this application: fal-lite home search location

📌 Contributing

We use the git-flow as a branching strategy - keeping two running branches (develop, and master). There are a few cool tools that you can use to help you with this. git-flow-avh is one i personally use. It's a great tool for managing local branches and will not let you create feature branches off of anything except develop. For example, if you forget to change branches between PR's and try to make a new branch, git-flow will create the new branch off of develop unless you explicitly tell it not to.

However you choose to work with git, the basic workflow is as follows:

  • Create a new branch (git checkout -b <branch-name>)
  • Do your work
  • add your work to the branch (git add .)
  • commit your work (git commit -m "message")
  • Allow husky to run the pre-commit hooks.
  • Push your work to the remote (git push origin <branch-name>)
  • Submit a pull request in Azure Devops against the feature branch you just worked on (az devops pull-request create --source <branch-name> --target develop) -- or, you know, you can use the ui too 🤷‍♂️
  • Another developer will review and approve the pull request. If they approve, the code will be merged into develop. If not, then there are probably some small issues that need to be fixed.

Infrastructure as Code

Cloud infrastructure is provisioned through this repository using Terraform.

Pivot to Azure Static Web Apps: As of the week of 10/18, the infrastructure as code (IaC) within the repository was updated to push the Find a Location application into an Azure static web app instance in each environment (as opposed to pushing files into an Azure storage container with a CDN profile entry point). The previous IaC for the storage accounts, CDN profiles, and CDN endpoints was removed.


  • Azure Static Web Apps
  • "Legacy" (pre-Azure static web app)


results matching ""

    No results matching ""