CCNQ4 User Database
raw JSON → 4.1.3 verified Sat Apr 25 auth: no javascript
Per-user database access library for the CCNQ4 platform, version 4.1.3. Provides a framework for creating and managing individual user provisioning and voicemail databases in CouchDB, including security setup and replication from a master provisioning database. Part of a broader CCNQ4 ecosystem, intended for use with zappajs. Release cadence is tied to CCNQ4 updates; no breaking changes documented in recent versions. Differentiators: tightly coupled with CCNQ4's architecture, leverages CouchDB features for user isolation.
Common errors
error Cannot find module 'charming-circle' ↓
cause Node.js unable to locate the package in node_modules.
fix
Run 'npm install charming-circle' in your project directory.
error The requested module 'charming-circle' is not a CommonJS module ↓
cause Trying to require an ESM-only package.
fix
Use import syntax or set type: 'module' in package.json.
error Zappa app not provided ↓
cause createUserDatabase requires a valid zappajs app instance as first argument.
fix
Pass the app object from 'zappajs' import.
Warnings
breaking Version 4.x drops CommonJS support; ESM only. ↓
fix Use import syntax instead of require().
deprecated The original user document creation API is deprecated in favor of monitor-based triggers. ↓
fix Upgrade to v4 and use the new monitoring pattern.
gotcha Requires CouchDB admin credentials to create databases. ↓
fix Ensure DB_PASS env var is set with admin password.
Install
npm install charming-circle yarn add charming-circle pnpm add charming-circle Imports
- default wrong
const charmingCircle = require('charming-circle')correctimport charmingCircle from 'charming-circle' - UserDatabase wrong
import UserDatabase from 'charming-circle'correctimport { UserDatabase } from 'charming-circle' - createUserDatabase
import { createUserDatabase } from 'charming-circle'
Quickstart
import { createUserDatabase } from 'charming-circle';
import app from 'zappajs';
const db = createUserDB(app, { user: 'alice', password: process.env.DB_PASS ?? '' });
// Use db to access per-user provisioning or voicemail