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-js
directory host utilities and UX, each directory in the./modules-js/
is an (internal
)NPM
module[1].Services: The core application, web apps and servers live in the
./services-js
directory. These services use many of theinternal node modules
on the./modules-js
directory, they are imported into each services as node dependencies.Deprecated/Decommissioned Services:
official header: old header banner scrapper script written in the
Ruby
programming language.deploy process: Deploy process (scripts, configs, etc.) used to deploy each
services
toAWS
usingTravis
andPercy
Percy:
deprecated
Travis:
deprecated
(Internal)
Node Modules
(Internal)
Node Modulesconfig-babel
Config files/setting for babel ...
Babel
is aJS
compiler 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-app
is 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.tsx
main 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/UX
components 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?