sodal-project / cartographer

Cartographer version 1 is a complete rewrite adding the concept of modules.
1 stars 0 forks source link

Cartographer

NOTICE: This is an early stage project and should only be operated in secure, trusted environments

Cartographer is the open-source reference implementation of Sodal's Persona Graph model for agency management. Cartographer demonstrates how persona graphs enable discovery and management of identities and resources (and associated collaboration opportunities and risks) without the need for comprehensive controls or top-down policy enforcement.

Cartographer is a self-contained application that can run locally or on docker-compatible cloud infrastructure. Cartographer uses a Node/Express server. The server stores graph data in a Neo4j database and object data in a MongoDB database.

Table of Contents

Setup

  1. Install Docker for your platform.
  2. Copy the .env.example file to .env

The default configuration uses ports 3000, 7474, 7687, 28000

Start

This terminal command will start the app and database. The first time it runs it will need to download files which may take several minutes.

docker-compose up

The processes will run in a single terminal window (they are color coded). You can view the front end by visiting http://localhost:3000 in your browser window.

Architecture

The open-source "Core" system offers fundamental tools for working with a graph database and includes MongoDB for handling additional data. It supports creating modules that ingest, format, store, and display graph data.

Components

Auth

Generating secret keys for .env

To generate a value for the ACCESS_TOKEN_SECRET and the REFRESH_TOKEN_SECRET in .env

  1. Open a terminal window and type node followed by the enter key to enter the Node REPL
  2. Run this require('crypto').randomBytes(64).toString('hex')
  3. Use the resulting value for ACCESS_TOKEN_SECRET and run again for the REFRESH_TOKEN_SECRET

Dependencies

Client Dependencies

Name Description License
tailwind A utility-first CSS framework MIT
alpine js A framework for composing behavior directly in your markup. MIT
htmx Access to AJAX and web sockets directly in HTML using attributes Zero-Clause BSD

Server Dependencies

Name Description License
dotenv Loads environment variables from .env file BSD-2-Clause
express Fast, unopinionated, minimalist web framework MIT
express-handlebars A Handlebars view engine for Express which doesn't suck. BSD-3-Clause
mongodb The official MongoDB driver for Node.js Apache-2.0
multer Middleware for handling multipart/form-data, used for uploading files MIT
neo4j-driver Official Neo4j driver for JavaScript Apache-2.0
nodemon Simple monitor script for use during development of a Node.js app. MIT
sanitize-filename Sanitize a string to be safe for use as a filename WTFPL, ISC