Mono Repo Overview
The digital mono-repo drives several front-end and backend applications build on Node.js, Next.js, Hapi.js and deployed and hosted on AWS EC2. Applications built by the monorepo share many utilities, configs, UI elements, build processes. The repo is primarily divided by:
Utilities & UI/UX: The
Modules-jsdirectory host utilities and UX, each directory in the./modules-js/is an (internal)NPMmodule[1].Services: The core application, web apps and servers live in the
./services-jsdirectory. These services use many of theinternal node moduleson the./modules-jsdirectory, they are imported into each services as node dependencies.Deprecated/Decommissioned Services:
official header: old header banner scrapper script written in the
Rubyprogramming language.deploy process: Deploy process (scripts, configs, etc.) used to deploy each
servicestoAWSusingTravisandPercyPercy:
deprecatedTravis:
deprecated
(Internal) Node Modules
(Internal) Node Modulesconfig-babel
Config files/setting for babel ...
Babelis aJScompiler that allows the use of newer versions ofJavaScript(ES6+) that also supports older browsers.Allows the use of
syntax transformations, polyfills, JSX, TypeScript, etc.
config-typescript
Configs for TypeScript, import these to use the same settings as other services in the monorepo.
deploy-tools
(
DEPRECATED) Scripts used to deploy the monorepo services toAWS
form-common
Utilities and helpers for HTML forms and validation. Imported by several services, but only
commissions-appis the only one left make use of it.
graphql-typescript
GraphQL typing utilities, provides compatibility with older versions of GraphQL and TypeScript.
hapi-common
Common Hapi helpers for our servers. These are middleware and methods used for routing assets, handling
HTTP Headers, error reporting (throughrollbar), etc.
hapi-next
Helpers for running Next from Hapi. Directs server routes to Next.js routes/app pages.
mssql-common
Common utilities for connecting to SQL Server Databases.
Used in:
registry-certs
commissions-app
mssql-typescript
Wrapper for SQL-TypeScript to handle version dependencies
Used in:
commissions-app
next-client-common
Utilities for Next.js client apps. This is part of the
_app.tsxmain app entry point for the services it is used in. It has helpers forAnalytics, Fetching from GraphQL, Screen Reader, RouterListeners,Used in:
access-boston
permit-finder
registry-certs
percy-common (
NO IN USE)Utilities for running Percy snapshots.
Used in:
react-fleet
access-boston
commissions-app
permit-finder
public-notices
registry-certs
srv-decrypt-env
KMS decryption for our environment variables. Used in all our services.
storybook-common
Common configuration for our projects' Storybooks.
react-fleet
Components for using Fleet in our webapps. This is the
UI/UXcomponents library used in all our apps.
General App Architecture
The web apps, in ./services-js, make use of the some or most of the modules above to some degree. For UX
Services (Web App + Services/Servers)
Services (Web App + Services/Servers)Access-Boston
Registry-Certs
[1] Internal node modules are js that are not hosted by NPM.org, they only require the package.json created by npm init, setup the project entry-point, usually ./src/main.js. The code can be used as a regular npm module by using the project's name on the package.json to use it as dependancy on your projects package.json.
Last updated
Was this helpful?