Adamas — modular call-center assistant (dual-homed with GitHub)
  • JavaScript 62.9%
  • SCSS 20.7%
  • HTML 16.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Greigh 29bd616f23
Some checks failed
CI / test (22) (push) Failing after 44s
fix: dismiss welcome overlay so e2e can click Settings
Seed hasSeenWelcome before load, force-dismiss the wizard if it still
appears, and stub /api/* on the static e2e server with 401 JSON.

Co-authored-by: Daniel Hipskind <me@danielhipskind.com>
2026-09-19 00:34:34 +00:00
.github/workflows feat: Add account management and settings search, refactor module imports, update build configurations, and code cleanup 2026-01-04 19:45:58 -05:00
locales feat: enhance modal actions and add export options styling 2025-11-27 20:25:02 -05:00
public fix: bust stale SW/CDN caches so Facet UI deploys show up 2026-09-18 16:55:29 +00:00
src fix: show welcome wizard on load and restore homepage scroll 2026-09-18 17:30:23 +00:00
test fix: dismiss welcome overlay so e2e can click Settings 2026-09-19 00:34:34 +00:00
.babelrc feat: Enhance Floating Window Manager with improved cloning and controls 2025-08-24 21:10:31 -04:00
.DS_Store feat: Enhance Floating Window Manager with improved cloning and controls 2025-08-24 21:10:31 -04:00
.gitignore feat: Rename project to Adamas, add PWA features, implement settings, update build configurations, and add Welcome wizard. 2025-12-13 18:42:11 -05:00
build.js fix: force-kill legacy SW and ship Facet via new sw.facet.js 2026-09-18 17:11:07 +00:00
clean-build.js feat: Add account management and settings search, refactor module imports, update build configurations, and code cleanup 2026-01-04 19:45:58 -05:00
eslint.config.js feat: Add account management and settings search, refactor module imports, update build configurations, and code cleanup 2026-01-04 19:45:58 -05:00
jest.config.js feat: Add account management and settings search, refactor module imports, update build configurations, and code cleanup 2026-01-04 19:45:58 -05:00
LICENSE Add alert sound files and download script for Call Center Helper 2025-06-25 09:29:09 -04:00
nodemon.json feat: Rename project to Adamas, add PWA features, implement settings, update build configurations, and add Welcome wizard. 2025-12-13 18:42:11 -05:00
package-lock.json feat: Add account management and settings search, refactor module imports, update build configurations, and code cleanup 2026-01-04 19:45:58 -05:00
package.json chore: set git author to Greigh for local/agent commits 2026-09-19 00:28:10 +00:00
README.md docs: explain that live /adamas/ deploys via danielhipskind.com 2026-09-18 17:15:19 +00:00
server.js fix: force-kill legacy SW and ship Facet via new sw.facet.js 2026-09-18 17:11:07 +00:00
webpack.config.js fix: force-kill legacy SW and ship Facet via new sw.facet.js 2026-09-18 17:11:07 +00:00

Adamas [BETA]

Current Status: 🚧 Public Beta

Adamas is a modular call-center assistant for agents. It combines number formatting, call flows, notes, hold timers, call logging, CRM hooks, analytics, and related productivity tools in one browser app — with optional cloud sync when signed in.

Deployed under the /adamas/ path (legacy /callcenterhelper/ redirects are still supported by the server).

Stack

Layer Technology
Frontend Vanilla JavaScript (ES modules), HTML, modular SCSS
Bundler Webpack 5 (webpack-dev-server for local UI, Babel for transpile)
Backend Node.js + Express 5 (server.js)
Realtime Socket.IO (server + client)
Data MongoDB via Mongoose (falls back to an in-memory mock DB when Mongo is unavailable)
Auth JWT in httpOnly session cookies (adamas_session) + bcryptjs
Charts Chart.js
Integrations Twilio, Nodemailer, OpenAI, CRM providers (Salesforce, HubSpot, Zendesk, Dynamics, Five9, Finesse)
Security Helmet CSP (nonce-based, no unsafe-inline/unsafe-eval on scripts), CORS w/ credentials, express-rate-limit (API routes), express-validator, Socket.IO handshake auth
Logging Winston
Testing Jest (jsdom unit tests), Playwright (e2e + smoke)
Tooling ESLint, Prettier, TypeScript (types/check), Sass, Concurrently, Nodemon

This is not a React/Vite app. The UI is multi-page HTML wired by src/js/main.js and feature modules under src/js/modules/.

Features

  • Number / Pattern Formatter — customizable patterns, paste, format, copy, history; works in floating pop-outs
  • Call Flow Builder — add, bulk-add, reorder, and track steps
  • Notes — session notes with local persistence (and API sync when authenticated)
  • Hold Timer — stopwatch/countdown, alerts, history, optional multi-timer
  • Call Logging — start/end calls, verification fields, sensitive data, templates, history
  • Scripts, Tasks, QA, Performance Metrics — agent workflow helpers
  • CRM Integration — pluggable providers (Salesforce, HubSpot, Zendesk, Dynamics, Five9, Finesse)
  • Analytics & Reporting — Chart.js dashboards and advanced reporting controls
  • Collaboration / Multichannel / Workflows / AI Insights — lazy-loaded advanced modules
  • Settings & Themes — light/dark themes, section visibility, welcome wizard, layout preferences
  • Quick Actions Toolbar — shortcuts for common agent actions
  • PWA bits — service worker, manifest, offline-oriented assets
  • Auth & Account — register/login, profile/password, optional cloud settings sync

Project Structure

Adamas/
├── server.js              # Express API, static hosting, Socket.IO
├── build.js               # Post-webpack production copy/rewrite helpers
├── clean-build.js         # Clears dist/
├── webpack.config.js      # Bundler + webpack-dev-server
├── package.json
├── src/
│   ├── index.html         # Main app shell
│   ├── settings.html      # Standalone settings page
│   ├── contact.html / privacy.html / terms.html / login.html
│   ├── js/
│   │   ├── main.js        # App bootstrap & navigation
│   │   ├── contact.js
│   │   ├── modules/       # Feature modules (formatter, timer, CRM, …)
│   │   └── utils/         # Toast, modal, config, error boundary, …
│   ├── styles/            # Modular SCSS (sections/, components/, …)
│   └── public/            # Static assets (audio, manifest, sw helpers)
├── public/                # Extra public assets (e.g. service worker)
├── dist/                  # Production build output (generated)
├── test/                  # Jest unit tests
│   └── e2e/               # Playwright e2e + smoke harness
└── README.md

Prerequisites

  • Node.js v18 or higher (v22 tested)
  • npm (comes with Node.js)
  • Optional: MongoDB, SMTP (EMAIL_USER / related env), Twilio, OpenAI, and other integration credentials via .env

Installation

# GitHub
git clone https://github.com/Greigh/Adamas.git
# Or Greigh Studios Forgejo (dual-homed)
# git clone git@git.greighstudios.com:greighstudios/Adamas.git
cd Adamas
npm install

Attach the studio forge remote on an existing clone:

git remote add gitea git@git.greighstudios.com:greighstudios/Adamas.git

Development

Full local stack (API on :8080 + webpack UI on :3000 with API proxy):

npm run dev:local

Or separately:

npm run server:dev   # Express on http://localhost:8080
npm run dev          # Webpack dev server on http://localhost:3000
  • Webpack proxies /api, /adamas/api, and /socket.io to the Express server.
  • Production-style serving: build first, then npm start and open http://localhost:8080/adamas/.

Building

npm run build

This cleans dist/, runs a production Webpack build (publicPath: /adamas/), then build.js copies predictable asset names (main.js, main.css, …) and rewrites static HTML links.

npm start            # serve dist/ + API on PORT (default 8080)

Testing

npm test             # Jest unit tests
npm run test:e2e     # Production build + Playwright floating-formatter e2e
npm run test:smoke   # Playwright smoke suite against a running server
                     # e.g. node test/e2e/smoke-test.js http://127.0.0.1:8080/adamas/

Lint / format:

npm run lint
npm run format

Usage

  1. Open the app and complete the welcome wizard (role + theme).
  2. Enable the sections you need under Settings (many advanced tools are off by default).
  3. Use the Number Formatter, Hold Timer, and Call Logging tools from the main view.
  4. Float sections with the ⧉ control for side-by-side agent workflows.
  5. Sign in to sync notes/settings through the API when a database is configured.

Settings and most agent data persist in localStorage; authenticated users can also sync via /api/*.

Environment

Common variables (see server.js / .env):

Variable Purpose
PORT HTTP port (default 8080)
MONGODB_URI / DB config Mongo connection (mock DB used if unavailable)
JWT_SECRET Auth token signing
EMAIL_USER (and SMTP-related) Contact form / mail
Twilio / OpenAI / CRM vars Optional integrations

License

License: CC BY-NC-ND 4.0

This software and its documentation are the exclusive property of Daniel Hipskind (Greigh). Unauthorized reproduction or distribution of this work is prohibited.

Production deploy

Adamas is not deployed from this repo alone. Live /adamas/ is built and uploaded by danielhipskind.com/deploy.sh:

  1. Syncs this checkout into danielhipskind.com/Call Center Help/client when ADAMS_SRC is set or a sibling ../Adamas directory exists
  2. Runs npm run build there
  3. Rsyncs dist/ → /var/www/danielhipskind.com/adamas/
  4. Restarts the parent PM2 app (danielhipskind), which serves /adamas as static files
# From your Mac (portfolio monorepo):
cd /path/to/danielhipskind.com
export ADAMS_SRC=/path/to/Greigh/Adamas   # optional if ../Adamas exists
./deploy.sh

Or from this repo when nested: npm run deploy → ../../deploy.sh.