GeoHazardWatch

Page Actions


Configuration Properties Reference

This page documents all configuration properties available in config/app-default-config.json. These are the base defaults for every ngdpbase installation. Override any property in config/app-custom-config.json (not tracked in git) or an environment-specific config file.

See Server Management for how configuration files are loaded and how to apply overrides.

Configuration Loading Order

  1. config/app-default-config.json — base defaults (documented here)
  2. config/app-{NODE_ENV}-config.json — environment overrides
  3. config/app-custom-config.json — local machine overrides (gitignored)

Later files override earlier ones. Only set what differs from defaults.


Application Core

KeyDefaultDescription
ngdpbase.application-name"ngdpbase"Display name for the application
ngdpbase.favicon-path"/favicon.svg"Path to the favicon served to browsers
ngdpbase.application.category"Digital Platform"Application category label
ngdpbase.version_(current version)_Application version string
ngdpbase.github.repo"jwilleke/ngdpbase"GitHub repository identifier
ngdpbase.base-url"http://localhost:3000"Canonical base URL — used in links, RSS, Schema.org output
ngdpbase.encoding"UTF-8"Default character encoding
ngdpbase.front-page"Welcome"Title of the page shown at the root URL
ngdpbase.server.port3000HTTP port the server listens on
ngdpbase.server.host"localhost"Network host/interface to bind


Session

KeyDefaultDescription
ngdpbase.session.secret_(default string)_Secret used to sign session cookies — **change in production**
ngdpbase.session.max-age86400000Session lifetime in milliseconds (default: 24 h)
ngdpbase.session.securefalseSet true to require HTTPS for session cookies
ngdpbase.session.http-onlytruePrevent client-side JavaScript from reading the session cookie
ngdpbase.session.storagedir${FAST_STORAGE}/sessionsDirectory for server-side session files — use fast storage (SSD)
ngdpbase.session.store"users/sessions.json"Legacy session store path (superseded by storagedir)


KeyDefaultDescription
ngdpbase.translator-reader.match-english-pluralstrueAllow page links to match plural/singular page name variants
ngdpbase.translator-reader.camel-case-linkstrueAutomatically link CamelCase words as page names
ngdpbase.translator-reader.allow-htmlfalseAllow raw HTML in markup
ngdpbase.translator-reader.plain-uristrueAutomatically hyperlink bare URLs in content


Application Organization (Install Identity)

These settings describe the organization that owns this install. They are written by the install wizard and read by OrganizationManager (issue #617). Install completion itself is tracked via $FAST_STORAGE/.install-complete — not via config.

KeyDefaultDescription
ngdpbase.application.organization.storagedir"${FAST_STORAGE}/organizations"Directory holding one JSON file per Organization record
ngdpbase.application.organization.file""Filename (under storagedir) of the install's anchor org, e.g. acme-corporation.json
ngdpbase.application.organization.url""Canonical URL of the org — becomes JSON-LD @id. Defaults to ngdpbase.base-url if blank
ngdpbase.application.organization.name""Short organization name used in page headers and metadata
ngdpbase.application.organization.legal-name""Legal organization name for Schema.org output
ngdpbase.application.organization.description""Short description of the organization
ngdpbase.application.organization.founding-date""ISO 8601 date the organization was founded
ngdpbase.application.organization.contact-email""Public contact email address
ngdpbase.application.organization.address-locality""City
ngdpbase.application.organization.address-region""State or region
ngdpbase.application.organization.address-country""Two-letter ISO country code
ngdpbase.application.organization.provider"fileorganizationprovider"Active OrganizationProvider class (lowercased)
ngdpbase.application.persons.storagedir"${FAST_STORAGE}/persons"Directory holding one JSON file per Person record
ngdpbase.application.persons.provider"filepersonprovider"Active PersonProvider class (lowercased)


Parser

KeyDefaultDescription
jspwiki.parser.useExtractionPipelinetrueUse the extraction pipeline for parsing (Phase 6, Issue #120)
ngdpbase.markdown.footnotes.enabledtrueEnable Markdown footnote syntax


Page Storage

KeyDefaultDescription
ngdpbase.page.enabledtrueEnable the page subsystem
ngdpbase.page.provider"filesystemprovider"Active page provider class name
ngdpbase.page.provider.default"filesystemprovider"Fallback provider if the active one fails
ngdpbase.page.provider.filesystem.storagedir${SLOW_STORAGE}/pagesDirectory where user page files are stored
ngdpbase.page.provider.filesystem.requiredpagesdir"./required-pages"Directory containing bundled system/documentation pages
ngdpbase.page.provider.versioning.indexfile${FAST_STORAGE}/page-index.jsonPath to the page index file used for fast lookups — use fast storage
ngdpbase.page.provider.filesystem.encoding"utf-8"File encoding for page files
ngdpbase.page.provider.filesystem.autosavetrueAutomatically save the page index after each write
ngdpbase.directories.pages${SLOW_STORAGE}/pagesLegacy alias for filesystem.storagedir
ngdpbase.directories.required-pages"./required-pages"Legacy alias for filesystem.requiredpagesdir


Attachment Storage

KeyDefaultDescription
ngdpbase.attachment.enabledtrueEnable file attachments
ngdpbase.attachment.provider"basicattachmentprovider"Active attachment provider
ngdpbase.attachment.provider.default"basicattachmentprovider"Fallback provider
ngdpbase.attachment.maxsize10485760Maximum upload size in bytes (default: 10 MB)
ngdpbase.attachment.allowedtypes"image/*,text/*,application/pdf"Comma-separated MIME type patterns allowed for upload
ngdpbase.attachment.forcedownloadfalseForce browser download rather than inline display
ngdpbase.attachment.metadatafile${SLOW_STORAGE}/attachments/attachment-metadata.jsonPath to the attachment metadata index
ngdpbase.attachment.provider.basic.storagedir${SLOW_STORAGE}/attachmentsDirectory for stored attachment files
ngdpbase.attachment.provider.basic.hashcontenttrueHash file content for deduplication
ngdpbase.attachment.provider.basic.hashmethod"sha256"Hashing algorithm: "sha256" or "md5"

Enhanced Attachments

KeyDefaultDescription
ngdpbase.attachment.enhanced.enabledtrueEnable thumbnail generation and enhanced metadata
ngdpbase.attachment.enhanced.thumbnailstrueGenerate image thumbnails on upload
ngdpbase.attachment.enhanced.thumbnailsizes"150x150,300x300"Comma-separated WxH thumbnail sizes
ngdpbase.attachment.enhanced.metadatatrueExtract and store file metadata (EXIF, etc.)
ngdpbase.attachment.enhanced.showmetadatatrueShow metadata in the attachment UI
ngdpbase.attachment.enhanced.showfilesizetrueShow file size in attachment listings
ngdpbase.attachment.enhanced.showmodifiedtrueShow last-modified date in attachment listings
ngdpbase.attachment.enhanced.iconpath"/icons/filetypes"URL path for file-type icons
ngdpbase.attachment.enhanced.cachemetadatatrueCache extracted metadata in memory
ngdpbase.attachment.enhanced.generatethumbnailstrueGenerate thumbnails at upload time


Shared Settings

KeyDefaultDescription
ngdpbase.search.enabledtrueEnable search
ngdpbase.search.provider"lunrsearchprovider"Active search provider
ngdpbase.search.provider.default"lunrsearchprovider"Fallback provider
ngdpbase.search.maxresults50Maximum results returned per query
ngdpbase.search.autocomplete.enabledtrueEnable autocomplete suggestions
ngdpbase.search.autocomplete.minlength2Minimum characters before autocomplete activates
ngdpbase.search.suggestions.enabledtrueEnable query suggestions
ngdpbase.search.suggestions.maxitems10Maximum suggestion items to show

LunrSearchProvider

KeyDefaultDescription
ngdpbase.search.provider.lunr.indexdir${FAST_STORAGE}/search-indexDirectory for Lunr index files — use fast storage
ngdpbase.search.provider.lunr.stemmingtrueEnable word stemming (e.g. "running" matches "run")
ngdpbase.search.provider.lunr.boost.title10Search score boost for title matches
ngdpbase.search.provider.lunr.boost.systemcategory8Boost for system-category matches
ngdpbase.search.provider.lunr.boost.userkeywords6Boost for user-keyword matches
ngdpbase.search.provider.lunr.boost.tags5Boost for tag matches
ngdpbase.search.provider.lunr.boost.keywords4Boost for keyword matches
ngdpbase.search.provider.lunr.maxresults50Maximum results from the Lunr index
ngdpbase.search.provider.lunr.snippetlength200Character length of result snippets

ElasticsearchSearchProvider

Activate with "ngdpbase.search.provider": "elasticsearchsearchprovider". Lunr remains the default.

KeyDefaultDescription
ngdpbase.search.provider.elasticsearch.url"http://localhost:9200"Elasticsearch endpoint URL
ngdpbase.search.provider.elasticsearch.indexname"ngdpbase-pages"Index name in Elasticsearch (distinct from sist2 addon index)
ngdpbase.search.provider.elasticsearch.connecttimeout5000Connection timeout in milliseconds
ngdpbase.search.provider.elasticsearch.requesttimeout30000Request timeout in milliseconds


Cache

Shared Settings

KeyDefaultDescription
ngdpbase.cache.enabledtrueEnable caching
ngdpbase.cache.provider"nodecacheprovider"Active cache provider
ngdpbase.cache.provider.default"nodecacheprovider"Fallback provider
ngdpbase.cache.defaultttl300Default cache entry TTL in seconds
ngdpbase.cache.maxkeys1000Maximum number of keys in cache
ngdpbase.cache.checkperiod120Interval in seconds for expiry checks

NodeCacheProvider

KeyDefaultDescription
ngdpbase.cache.provider.nodecache.stdttl300Default TTL in seconds
ngdpbase.cache.provider.nodecache.checkperiod120Expiry check interval in seconds
ngdpbase.cache.provider.nodecache.maxkeys1000Maximum keys
ngdpbase.cache.provider.nodecache.useclonestrueReturn cloned objects (prevents mutation of cached values)

RedisCacheProvider (Future)

KeyDefaultDescription
ngdpbase.cache.provider.redis.url"redis://localhost:6379"Redis connection URL
ngdpbase.cache.provider.redis.keyprefix"ngdpbase:"Prefix for all cache keys
ngdpbase.cache.provider.redis.enableclusterfalseEnable Redis cluster mode
ngdpbase.cache.provider.redis.connecttimeout5000Connection timeout in milliseconds


Audit Trail

Shared Settings

KeyDefaultDescription
ngdpbase.audit.enabledtrueEnable audit logging
ngdpbase.audit.provider"fileauditprovider"Active audit provider
ngdpbase.audit.provider.default"fileauditprovider"Fallback provider
ngdpbase.audit.loglevel"info"Minimum level to record: "debug", "info", "warn", "error"
ngdpbase.audit.maxqueuesize1000Maximum events queued before flush
ngdpbase.audit.flushinterval30000Flush interval in milliseconds
ngdpbase.audit.retentiondays90Days to retain audit records

FileAuditProvider

KeyDefaultDescription
ngdpbase.audit.provider.file.logdirectory${FAST_STORAGE}/logsDirectory for audit log files
ngdpbase.audit.provider.file.auditfilename"audit.log"Active audit log filename
ngdpbase.audit.provider.file.archivefilename"audit-archive.log"Archive log filename
ngdpbase.audit.provider.file.maxfilesize"10MB"Maximum size before rotation
ngdpbase.audit.provider.file.maxfiles10Number of rotated files to keep


Markup / Parser

KeyDefaultDescription
ngdpbase.markup.enabledtrueEnable the markup subsystem
ngdpbase.markup.use-advanced-parsertrueUse the advanced extraction-pipeline parser
ngdpbase.markup.fallback-to-legacytrueFall back to legacy parser on advanced parser failure
ngdpbase.markup.integration.rendering-managertrueIntegrate with RenderingManager
ngdpbase.markup.log-parsing-methodtrueLog which parsing method (advanced vs legacy) is used
ngdpbase.markup.cachingtrueEnable markup result caching
ngdpbase.markup.cache-ttl300Default markup cache TTL in seconds

Markup Cache Sub-Sections

Each sub-section (parse-results, handler-results, patterns, variables) shares the same keys:

KeyDescription
*.enabledEnable this cache layer
*.ttlTTL in seconds
*.max-sizeMaximum number of cached entries

KeyDefaultDescription
ngdpbase.markup.cache.enable-warmuptruePre-warm cache on startup
ngdpbase.markup.cache.metrics-enabledtrueExpose cache hit/miss metrics

Handler Registry

KeyDefaultDescription
ngdpbase.markup.handler-registry.max-handlers100Maximum registered markup handlers
ngdpbase.markup.handler-registry.allow-duplicate-prioritiestrueAllow handlers with the same priority value
ngdpbase.markup.handler-registry.enable-dependency-resolutiontrueResolve handler ordering by declared dependencies
ngdpbase.markup.handler-registry.enable-conflict-detectiontrueWarn on handler conflicts
ngdpbase.markup.handler-registry.default-timeout5000Handler execution timeout in milliseconds

Markup Handlers

Each built-in handler has enabled (boolean) and priority (integer, higher runs first) keys.

HandlerDefault PriorityPurpose
plugin90Plugin tags [{PluginName ...}]
wikitag95Page link tags [[PageName]]
form85HTML form generation
interwiki80Inter-wiki links
attachment75Attachment display
style70WikiStyle CSS classes
search65Inline search results
rss60RSS feed inclusion

Additional attachment-handler flags:

KeyDefaultDescription
ngdpbase.markup.handlers.attachment.enhancedtrueEnable enhanced attachment display
ngdpbase.markup.handlers.attachment.thumbnailstrueShow thumbnails for image attachments
ngdpbase.markup.handlers.attachment.metadatatrueDisplay file metadata alongside attachments


Filters

Filter Pipeline

KeyDefaultDescription
ngdpbase.markup.filters.enabledtrueEnable the filter pipeline
ngdpbase.markup.filters.pipeline.max-filters50Maximum filters in the pipeline
ngdpbase.markup.filters.pipeline.timeout10000Pipeline execution timeout in milliseconds
ngdpbase.markup.filters.pipeline.enable-profilingtrueRecord per-filter timing
ngdpbase.markup.filters.pipeline.fail-on-errorfalseAbort the pipeline if any filter throws

Spam Filter

KeyDefaultDescription
ngdpbase.markup.filters.spam.enabledfalseEnable spam detection
ngdpbase.markup.filters.spam.priority100Filter priority (runs first when enabled)
ngdpbase.markup.filters.spam.max-links10Maximum links allowed per page save
ngdpbase.markup.filters.spam.max-images5Maximum images allowed per page save
ngdpbase.markup.filters.spam.blacklist-words_(list)_Comma-separated words that trigger spam rejection
ngdpbase.markup.filters.spam.whitelist-domains_(list)_Comma-separated domains exempt from link limits
ngdpbase.markup.filters.spam.cache-blacklisttrueCache the blacklist in memory

Security Filter

KeyDefaultDescription
ngdpbase.markup.filters.security.enabledfalseEnable HTML security sanitization
ngdpbase.markup.filters.security.priority110Filter priority
ngdpbase.markup.filters.security.prevent-xsstrueStrip XSS vectors
ngdpbase.markup.filters.security.prevent-csrftrueStrip CSRF vectors
ngdpbase.markup.filters.security.sanitize-htmltrueSanitize HTML to allowed tags/attributes
ngdpbase.markup.filters.security.allowed-tags_(list)_Comma-separated HTML tags permitted in content
ngdpbase.markup.filters.security.allowed-attributes_(list)_Comma-separated attributes permitted on allowed tags
ngdpbase.markup.filters.security.strip-dangerous-contenttrueRemove scripts, event handlers, and dangerous URLs

Validation Filter

KeyDefaultDescription
ngdpbase.markup.filters.validation.enabledtrueEnable content validation
ngdpbase.markup.filters.validation.priority90Filter priority
ngdpbase.markup.filters.validation.validate-markuptrueValidate markup syntax
ngdpbase.markup.filters.validation.validate-linkstrueCheck internal links exist
ngdpbase.markup.filters.validation.validate-imagestrueValidate image references
ngdpbase.markup.filters.validation.max-content-length1048576Maximum page content size in bytes (default: 1 MB)
ngdpbase.markup.filters.validation.report-errorstrueReturn validation errors to the editor

Custom Filters

KeyDefaultDescription
ngdpbase.markup.filters.custom.enabledfalseLoad custom filter plugins
ngdpbase.markup.filters.custom.search-paths"./filters,./src/filters"Comma-separated directories to scan for custom filters
ngdpbase.markup.filters.custom.auto-loadtrueAuto-discover and register found filters
ngdpbase.markup.filters.custom.cache-resultstrueCache filter results


InterWiki

KeyDefaultDescription
ngdpbase.interwiki.enabledtrueEnable inter-wiki links
ngdpbase.interwiki.options.openInNewWindowtrueOpen inter-wiki links in a new browser tab
ngdpbase.interwiki.options.addIconIndicatortrueShow an external-link icon next to inter-wiki links
ngdpbase.interwiki.options.caseSensitivefalseTreat site names as case-insensitive
ngdpbase.interwiki.options.showTooltipstrueShow tooltips on hover
ngdpbase.interwiki.options.cacheTTL3600Cache TTL in seconds for inter-wiki link resolution
ngdpbase.interwiki.options.maxCacheEntries1000Maximum cached inter-wiki entries
ngdpbase.interwiki.sites_(object)_Map of site keys to { url, description, icon, enabled, openInNewWindow }%s in the URL is replaced by the link target

Default built-in sites: Wikipedia, JSPWiki, MeatBall, C2 (disabled), GVP, GVP-COUNTRY.


Managers

KeyDefaultDescription
ngdpbase.managers.page-manager.enabledtrueEnable PageManager
ngdpbase.managers.plugin-manager.enabledtrueEnable PluginManager
ngdpbase.managers.plugin-manager.search-paths["./dist/plugins"]Array of directories scanned for plugin modules
ngdpbase.managers.rendering-manager.enabledtrueEnable RenderingManager
ngdpbase.managers.search-manager.enabledtrueEnable SearchManager
ngdpbase.managers.template-manager.enabledtrueEnable TemplateManager
ngdpbase.managers.cache-manager.enabledtrueEnable CacheManager
ngdpbase.managers.addons-manager.enabledtrueEnable AddonsManager
ngdpbase.managers.addons-manager.addons-path"./addons"Directory scanned for add-on packages
ngdpbase.addons{}Add-on configuration object — individual add-ons keyed under ngdpbase.addons.<name>


Features

KeyDefaultDescription
ngdpbase.features.export.htmltrueEnable HTML page export
ngdpbase.features.export.pdffalseEnable PDF page export
ngdpbase.features.export.odtfalseEnable ODT (LibreOffice) page export
ngdpbase.features.llm.enabledfalseEnable LLM integration
ngdpbase.features.llm.endpoint"http://localhost:11434"LLM API endpoint (Ollama-compatible)
ngdpbase.features.llm.model"llama2"LLM model name to use
ngdpbase.features.images.enabledtrueEnable image uploads
ngdpbase.features.images.max-size"5MB"Maximum image file size
ngdpbase.features.images.allowed-types_(list)_Comma-separated MIME types for image uploads
ngdpbase.features.images.upload-dir"./public/images"Directory for uploaded images
ngdpbase.features.images.default-alt"Uploaded image"Default alt text for images without an explicit alt attribute
ngdpbase.features.images.default-class"wiki-image"Default CSS class on rendered <img> tags
ngdpbase.features.maintenance.enabledfalseEnable maintenance mode (in-memory only, resets on restart)
ngdpbase.features.maintenance.message_(default message)_Message shown to non-admin users during maintenance
ngdpbase.features.maintenance.allow-adminstrueAllow admins to access the platform during maintenance mode
ngdpbase.features.maintenance.estimated-durationnullOptional ISO 8601 duration shown to users


Logging

KeyDefaultDescription
ngdpbase.logging.level"info"Minimum log level: "debug", "info", "warn", "error"
ngdpbase.logging.dir${FAST_STORAGE}/logsDirectory for application log files
ngdpbase.logging.max-size"1MB"Maximum size of a log file before rotation
ngdpbase.logging.max-files5Number of rotated log files to keep
ngdpbase.logging.debug.enabledfalseEnable verbose debug logging
ngdpbase.logging.debug.sessionfalseLog session lifecycle events
ngdpbase.logging.debug.loginfalseLog login/logout events at debug level


Notifications

KeyDefaultDescription
ngdpbase.notifications.dir${FAST_STORAGE}/notificationsDirectory for notification files
ngdpbase.notifications.file"notifications.json"Notification store filename
ngdpbase.notifications.auto-save-interval300000Auto-save interval in milliseconds (default: 5 min)


Access Control

KeyDefaultDescription
ngdpbase.access-control.context-aware.enabledtrueEnable context-aware access control (time/schedule-based)
ngdpbase.access-control.context-aware.time-zone"UTC"Timezone used for schedule evaluation
ngdpbase.access-control.business-hours.enabledfalseRestrict access to business hours only
ngdpbase.access-control.business-hours.start"09:00"Business hours start time (HH:MM)
ngdpbase.access-control.business-hours.end"17:00"Business hours end time (HH:MM)
ngdpbase.access-control.business-hours.days"monday,...,friday"Comma-separated allowed days
ngdpbase.access-control.custom-schedules.enabledfalseLoad access schedules from an external file
ngdpbase.access-control.custom-schedules.schedules"./config/schedules.json"Path to custom schedules file
ngdpbase.access-control.holidays.enabledfalseBlock access on configured holidays
ngdpbase.access-control.holidays.calendar"./config/holidays.json"Path to holidays calendar file


Roles

Roles are defined under ngdpbase.roles.definitions.<role-name> with the following fields:

FieldDescription
nameRole identifier (lowercase)
displaynameHuman-readable label
descriptionRole description
issystemtrue for built-in roles — should not be deleted
iconFontAwesome icon name
colorHex color for the UI
permissionsArray of permission strings granted to this role

Built-in roles: admin, editor, contributor, reader, anonymous

Permission strings: page:read, page:edit, page:create, page:delete, page:rename, attachment:read, attachment:upload, attachment:delete, search:all, export:pages, admin:system, admin:users, admin:roles, admin:config


Access Policies

KeyDefaultDescription
ngdpbase.access.policies.enabledtrueEnable policy-based access control
ngdpbase.access.policies.default-policy"deny"Default effect when no policy matches: "allow" or "deny"
ngdpbase.access.policies_(array)_Ordered list of policy objects

Each policy object has:

FieldDescription
idUnique policy identifier
nameHuman-readable name
descriptionPolicy purpose
priorityHigher number is evaluated first
effect"allow" or "deny"
subjectsArray of { type, value }type is "role"
resourcesArray of { type, pattern/value }type is "page" or "category"
actionsArray of permission strings (use "*" for all)


System Categories

Defined under ngdpbase.system-category.<name>. Each entry controls storage routing and visibility.

FieldDescription
labelCategory identifier
descriptionHuman-readable description
defaulttrue if this is the default category for new pages
storageLocationWhere pages in this category are stored: "regular" (user pages dir), "required" (required-pages dir), "github" (docs dir)
enabledWhether this category is active

Built-in categories: general (default, regular storage), system (required storage), documentation (required storage), developer (github storage)


User Keywords

Defined under ngdpbase.user-keywords.<name>. Each entry is a keyword users can tag pages with.

FieldDescription
labelKeyword identifier
descriptionHuman-readable description
categoryGrouping: "general", "access", "status", "subject"
enabledWhether this keyword is available
restrictEditingIf true, only the creator and admins can edit pages with this keyword
storageLocationOptional storage override for pages with this keyword
allowedRolesOptional array of roles that can apply this keyword

Built-in keywords: default, private, draft, review, published, and domain subjects (medicine, geology, meteorology, oceanography, psychology, sociology, anthropology, economics, political-science)


Defaults and Miscellaneous

KeyDefaultDescription
ngdpbase.default.system-category"general"Default system-category for new pages
ngdpbase.maximum.user-keywords5Maximum number of user-keywords a page can have
ngdpbase.default.template.dateformat"dd-MMM-yyyy HH:mm"Date format used in templates
ngdpbase.default.timezone"UTC"Default timezone for display
ngdpbase.diff-provider"TraditionalDiffProvider"Provider class used for page diffs
ngdpbase.workflow.saveWikiPagefalseRequire workflow approval for page saves
ngdpbase.workflow.approver"Admin"Role or user required to approve workflow saves
ngdpbase.userdatabase"JSONUserDatabase"User database backend class
ngdpbase.groupdatabase"JSONGroupDatabase"Group database backend class
ngdpbase.authorizer"DefaultAuthorizer"Authorization strategy class
ngdpbase.login-module.class"CookieAuthenticationLoginModule"Login module class
ngdpbase.breadcrumbs.maxpages10Maximum pages shown in the breadcrumb trail
ngdpbase.referenceStyle"relative"Link reference style: "relative" or "absolute"


RSS

KeyDefaultDescription
ngdpbase.rss.generatetrueEnable RSS feed generation
ngdpbase.rss.file-name"rss.xml"Output filename for the RSS feed
ngdpbase.rss.interval3600Feed refresh interval in seconds
ngdpbase.rss.channel-title"ngdpbase RSS Feed"RSS channel title
ngdpbase.rss.channel-description_(default)_RSS channel description


Theme

KeyDefaultDescription
ngdpbase.theme.active"default"Active theme folder name under themes/
ngdpbase.theme.defaults.mode"light"Default UI mode for new users: "light" or "dark"


WikiStyle

KeyDefaultDescription
ngdpbase.style.custom-classes.enabledtrueAllow custom CSS classes in WikiStyle markup
ngdpbase.style.bootstrap.integrationtrueApply Bootstrap CSS class names via WikiStyle
ngdpbase.style.security.allow-inline-cssfalseAllow style="..." attributes in page content
ngdpbase.style.security.allowed-properties_(list)_Comma-separated CSS properties allowed when inline CSS is enabled
ngdpbase.style.predefined.text_(list)_Predefined text color classes
ngdpbase.style.predefined.background_(list)_Predefined background color classes
ngdpbase.style.predefined.layout_(list)_Predefined layout utility classes


Location

KeyDefaultDescription
ngdpbase.location.default-provider"osm"Default map provider for the LocationPlugin: "osm" (OpenStreetMap)


Telemetry (OpenTelemetry)

KeyDefaultDescription
ngdpbase.telemetry.enabledfalseEnable OpenTelemetry metrics
ngdpbase.telemetry.service-name""Service name reported to the collector
ngdpbase.telemetry.metrics.port9464Port for the Prometheus scrape endpoint
ngdpbase.telemetry.metrics.host"0.0.0.0"Host for the metrics endpoint
ngdpbase.telemetry.metrics.path"/metrics"URL path for the metrics endpoint
ngdpbase.telemetry.metrics.interval15000Metrics collection interval in milliseconds
ngdpbase.telemetry.otlp.enabledfalseEnable OTLP HTTP push export
ngdpbase.telemetry.otlp.endpoint""OTLP collector endpoint URL
ngdpbase.telemetry.otlp.headers{}HTTP headers sent with OTLP requests (e.g. auth tokens)
ngdpbase.telemetry.otlp.interval30000Push interval in milliseconds
ngdpbase.telemetry.otlp.timeout30000Request timeout in milliseconds


Backup

KeyDefaultDescription
ngdpbase.backup.directory${SLOW_STORAGE}/backupsDirectory where backup archives are stored
ngdpbase.backup.max-backups10Maximum number of backup archives to retain
ngdpbase.backup.compresstrueCompress backup archives
ngdpbase.backup.auto-backupfalseEnable automatic scheduled backups
ngdpbase.backup.auto-backup-interval86400000Auto-backup interval in milliseconds (default: 24 h)
ngdpbase.backup.auto-backup-time"02:00"Preferred time of day for auto-backup (HH:MM, local time)
ngdpbase.backup.auto-backup-days"daily"Backup frequency: "daily", "weekly", or "monthly"


Media Manager

KeyDefaultDescription
ngdpbase.media.enabledfalseEnable MediaManager (external photo/video library scanning)
ngdpbase.media.folders[]Array of absolute paths to external media directories to scan
ngdpbase.media.maxdepth5Maximum directory recursion depth when scanning
ngdpbase.media.scaninterval3600000Re-scan interval in milliseconds (default: 1 h)
ngdpbase.media.readonlytruePrevent write operations to media source directories
ngdpbase.media.thumbnail.sizes"300x300,150x150"Comma-separated WxH thumbnail sizes to generate
ngdpbase.media.metadata.priority["EXIF","IPTC","XMP"]Ordered list of metadata sources to prefer
ngdpbase.media.ignoredirs[".dtrash",".ts"]Directory names to skip during scanning
ngdpbase.media.extensions_(list)_File extensions recognized as media (images and video)


Storage Location Permissions

KeyDefaultDescription
ngdpbase.storageLocation.enabledtrueEnable storage-location-based access rules
ngdpbase.storageLocation.aclBasedStoragetrueEnforce ACL checks on storage locations
ngdpbase.storageLocation.roleBasedStorage.admin"required"Storage location accessible to the admin role
ngdpbase.storageLocation.roleBasedStorage.editor"regular"Storage location accessible to the editor role
ngdpbase.storageLocation.roleBasedStorage.user"regular"Storage location accessible to the user role
ngdpbase.storageLocation.categoryBasedStorage.System"required"Storage location for pages in the System category
ngdpbase.storageLocation.categoryBasedStorage.Admin"required"Storage location for pages in the Admin category
ngdpbase.storageLocation.categoryBasedStorage.Security"required"Storage location for pages in the Security category
ngdpbase.storageLocation.categoryBasedStorage.General"regular"Storage location for pages in the General category
ngdpbase.storageLocation.categoryBasedStorage.Documentation"regular"Storage location for pages in the Documentation category


Holidays

KeyDefaultDescription
ngdpbase.holidays.enabledtrueEnable holiday-based access restrictions
ngdpbase.holidays.dates_(object)_Map of YYYY-MM-DD dates to { name, message, enabled } — one-time specific dates
ngdpbase.holidays.recurring_(object)_Map of *-MM-DD patterns to { name, message, enabled } — repeats every year


Schedules

KeyDefaultDescription
ngdpbase.schedules.enabledtrueEnable named access schedules
ngdpbase.schedules_(object)_Map of schedule names to schedule definitions

Each schedule definition has:

FieldDescription
nameHuman-readable schedule name
descriptionPurpose description
timeZoneIANA timezone string for rule evaluation
rulesArray of { days, startTime, endTime, type }type is "allow" or "deny"
exceptionsArray of date-specific overrides
enabledWhether this schedule is active

Special schedule keys: role_admin applies to the admin role; category_System applies to system category pages; default is the fallback for users without a specific assignment.



All Properties (Live Index)

The curated sections above explain the important settings and their trade-offs. This appendix is the complete, never-stale list of every property in config/app-default-config.json — rendered live from the running configuration by [{ConfigAccessor}], so new keys appear automatically the moment they are added (no hand-maintenance, no drift). Currently 432 properties across 55 groups. Use your browser's find (Ctrl/Cmd-F) within a group, or jump via the headings.

Maintenance note: do not hand-list keys here. Each group below is a [{ConfigAccessor key='<prefix>.*'}] wildcard — it stays correct on its own. See Using ConfigAccessorPlugin and docs/proper-documentation-pages.md.

jspwiki.*

Configuration Values (1 matches) — jspwiki.*
Key Value
jspwiki.parser.useExtractionPipeline true

log4j.*

Configuration Values (4 matches) — log4j.*
Key Value
log4j.appender.console org.apache.log4j.ConsoleAppender
log4j.appender.console.layout org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern %d [%t] %p %c %x - %m%n
log4j.rootCategory INFO,console

ngdpbase.access.*

Configuration Values (3 matches) — ngdpbase.access.*
Key Value
ngdpbase.access.policies [ { "id": "admin-full-access", "name": "Administrator Full Access", "description": "Full system access for administrators - all page and admin permissions", "priority": 100, "effect": "allow", "subjects": [ { "type": "role", "value": "admin" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page", "search-user", "user-read", "user-edit", "user-create", "user-delete", "admin-roles", "admin-system" ] }, { "id": "user-admin-permissions", "name": "User Administrator Permissions", "description": "Can manage users — create, edit, deactivate, delete", "priority": 95, "effect": "allow", "subjects": [ { "type": "role", "value": "user-admin" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "user-read", "user-edit", "user-create", "user-delete", "search-user" ] }, { "id": "editor-permissions", "name": "Editor Permissions", "description": "Can create, edit, delete, and rename pages plus manage assets", "priority": 80, "effect": "allow", "subjects": [ { "type": "role", "value": "editor" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page" ] }, { "id": "contributor-permissions", "name": "Contributor Permissions", "description": "Can create and edit pages, upload assets (no delete/rename)", "priority": 70, "effect": "allow", "subjects": [ { "type": "role", "value": "contributor" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-export", "asset-read", "asset-upload", "search-page" ] }, { "id": "reader-permissions", "name": "Reader Permissions", "description": "Read-only access - can view pages and assets, search, and export", "priority": 60, "effect": "allow", "subjects": [ { "type": "role", "value": "reader" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-export", "asset-read", "search-page" ] }, { "id": "member-permissions", "name": "Member Permissions", "description": "Community member read-only access", "priority": 55, "effect": "allow", "subjects": [ { "type": "role", "value": "member" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "asset-read", "search-page" ] }, { "id": "anonymous-read-only", "name": "Anonymous Read Access", "description": "Anonymous users can only read pages", "priority": 50, "effect": "allow", "subjects": [ { "type": "role", "value": "anonymous" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read" ] }, { "id": "deny-anonymous-system-pages", "name": "Deny Anonymous System Pages", "description": "Block anonymous access to system and admin category pages", "priority": 90, "effect": "deny", "subjects": [ { "type": "role", "value": "anonymous" } ], "resources": [ { "type": "category", "value": "system" }, { "type": "category", "value": "admin" } ], "actions": [ "*" ] }, { "id": "default-view-for-all", "name": "Default View Access for All", "description": "Fallback - all authenticated users can at minimum view pages", "priority": 1, "effect": "allow", "subjects": [ { "type": "role", "value": "All" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read" ] } ]
ngdpbase.access.policies.default-policy deny
ngdpbase.access.policies.enabled true

ngdpbase.access-control.*

Configuration Values (10 matches) — ngdpbase.access-control.*
Key Value
ngdpbase.access-control.business-hours.days monday,tuesday,wednesday,thursday,friday
ngdpbase.access-control.business-hours.enabled false
ngdpbase.access-control.business-hours.end 17:00
ngdpbase.access-control.business-hours.start 09:00
ngdpbase.access-control.context-aware.enabled true
ngdpbase.access-control.context-aware.time-zone UTC
ngdpbase.access-control.custom-schedules.enabled false
ngdpbase.access-control.custom-schedules.schedules ./config/schedules.json
ngdpbase.access-control.holidays.calendar ./config/holidays.json
ngdpbase.access-control.holidays.enabled false

ngdpbase.addons.*

Configuration Values (7 matches) — ngdpbase.addons.*
Key Value
ngdpbase.addons.forms.dataPath ${FAST_STORAGE}/forms
ngdpbase.addons.forms.enabled false
ngdpbase.addons.forms.notifyRole admin
ngdpbase.addons.geohazardwatch.dataPath
ngdpbase.addons.geohazardwatch.enabled true
ngdpbase.addons.geohazardwatch.eqIntervalMs 1200000
ngdpbase.addons.geohazardwatch.hansIntervalMs 600000

ngdpbase.application.*

Configuration Values (20 matches) — ngdpbase.application.*
Key Value
ngdpbase.application.base-url https://geohazardwatch.com
ngdpbase.application.category Digital Platform
ngdpbase.application.contact.enabled true
ngdpbase.application.contact.footer.enabled true
ngdpbase.application.contact.page
ngdpbase.application.contact.persist.enabled true
ngdpbase.application.contact.persist.path
ngdpbase.application.contact.recipient [email protected]
ngdpbase.application.organization.file geohazardwatch.json
ngdpbase.application.organization.provider fileorganizationprovider
ngdpbase.application.organization.provider.default fileorganizationprovider
ngdpbase.application.organization.storagedir ${FAST_STORAGE}/organizations
ngdpbase.application.persons.provider filepersonprovider
ngdpbase.application.persons.provider.default filepersonprovider
ngdpbase.application.persons.storagedir ${FAST_STORAGE}/persons
ngdpbase.application.registration false
ngdpbase.application.registration.redirect-page request-access
ngdpbase.application.roles.provider fileroleprovider
ngdpbase.application.roles.provider.default fileroleprovider
ngdpbase.application.roles.storagedir ${FAST_STORAGE}/roles

ngdpbase.approver.*

Configuration Values (1 matches) — ngdpbase.approver.*
Key Value
ngdpbase.approver.workflow.save-wiki-page Admin

ngdpbase.attachment.*

Configuration Values (20 matches) — ngdpbase.attachment.*
Key Value
ngdpbase.attachment.allowedtypes image/*,text/*,application/pdf
ngdpbase.attachment.enabled true
ngdpbase.attachment.enhanced.cachemetadata true
ngdpbase.attachment.enhanced.enabled true
ngdpbase.attachment.enhanced.generatethumbnails true
ngdpbase.attachment.enhanced.iconpath /icons/filetypes
ngdpbase.attachment.enhanced.metadata true
ngdpbase.attachment.enhanced.showfilesize true
ngdpbase.attachment.enhanced.showmetadata true
ngdpbase.attachment.enhanced.showmodified true
ngdpbase.attachment.enhanced.thumbnails true
ngdpbase.attachment.enhanced.thumbnailsizes 150x150,300x300
ngdpbase.attachment.forcedownload false
ngdpbase.attachment.maxsize 10485760
ngdpbase.attachment.metadatafile ${SLOW_STORAGE}/attachments/attachment-metadata.json
ngdpbase.attachment.provider basicattachmentprovider
ngdpbase.attachment.provider.basic.hashcontent true
ngdpbase.attachment.provider.basic.hashmethod sha256
ngdpbase.attachment.provider.basic.storagedir ${SLOW_STORAGE}/attachments
ngdpbase.attachment.provider.default basicattachmentprovider

ngdpbase.audit.*

Configuration Values (20 matches) — ngdpbase.audit.*
Key Value
ngdpbase.audit.enabled true
ngdpbase.audit.flushinterval 30000
ngdpbase.audit.loglevel info
ngdpbase.audit.maxqueuesize 1000
ngdpbase.audit.provider fileauditprovider
ngdpbase.audit.provider.cloud.loggroup /ngdpbase/audit
ngdpbase.audit.provider.cloud.logstream audit-events
ngdpbase.audit.provider.cloud.region us-east-1
ngdpbase.audit.provider.cloud.service cloudwatch
ngdpbase.audit.provider.database.connectionstring
ngdpbase.audit.provider.database.maxconnections 10
ngdpbase.audit.provider.database.tablename audit_logs
ngdpbase.audit.provider.database.type postgresql
ngdpbase.audit.provider.default fileauditprovider
ngdpbase.audit.provider.file.archivefilename audit-archive.log
ngdpbase.audit.provider.file.auditfilename audit.log
ngdpbase.audit.provider.file.logdirectory ${FAST_STORAGE}/logs
ngdpbase.audit.provider.file.maxfiles 10
ngdpbase.audit.provider.file.maxfilesize 10MB
ngdpbase.audit.retentiondays 90

ngdpbase.auth.*

Configuration Values (18 matches) — ngdpbase.auth.*
Key Value
ngdpbase.auth.cloudflare-access.application-aud
ngdpbase.auth.cloudflare-access.default-role occupant
ngdpbase.auth.cloudflare-access.enabled false
ngdpbase.auth.cloudflare-access.group-map {}
ngdpbase.auth.cloudflare-access.team-domain
ngdpbase.auth.google-oidc.auto-provision true
ngdpbase.auth.google-oidc.callback-url
ngdpbase.auth.google-oidc.client-id
ngdpbase.auth.google-oidc.client-secret
ngdpbase.auth.google-oidc.default-roles [ "occupant" ]
ngdpbase.auth.google-oidc.deny-redirect /login?error=Access+denied
ngdpbase.auth.google-oidc.enabled false
ngdpbase.auth.google-oidc.hd
ngdpbase.auth.magic-link.enabled false
ngdpbase.auth.magic-link.ttl-minutes 15
ngdpbase.auth.password.enabled true
ngdpbase.auth.required-factors [ "password" ]
ngdpbase.auth.user.default-external false

ngdpbase.backup.*

Configuration Values (8 matches) — ngdpbase.backup.*
Key Value
ngdpbase.backup.auto-backup false
ngdpbase.backup.auto-backup-days daily
ngdpbase.backup.auto-backup-interval 86400000
ngdpbase.backup.auto-backup-time 02:00
ngdpbase.backup.compress true
ngdpbase.backup.directory ${SLOW_STORAGE}/backups
ngdpbase.backup.max-backups 10
ngdpbase.backup.provider filebackupprovider

ngdpbase.breadcrumbs.*

Configuration Values (1 matches) — ngdpbase.breadcrumbs.*
Key Value
ngdpbase.breadcrumbs.maxpages 10

ngdpbase.cache.*

Configuration Values (14 matches) — ngdpbase.cache.*
Key Value
ngdpbase.cache.checkperiod 120
ngdpbase.cache.defaultttl 300
ngdpbase.cache.enabled true
ngdpbase.cache.maxkeys 1000
ngdpbase.cache.provider nodecacheprovider
ngdpbase.cache.provider.default nodecacheprovider
ngdpbase.cache.provider.nodecache.checkperiod 120
ngdpbase.cache.provider.nodecache.maxkeys 1000
ngdpbase.cache.provider.nodecache.stdttl 300
ngdpbase.cache.provider.nodecache.useclones true
ngdpbase.cache.provider.redis.connecttimeout 5000
ngdpbase.cache.provider.redis.enablecluster false
ngdpbase.cache.provider.redis.keyprefix ngdpbase:
ngdpbase.cache.provider.redis.url redis://localhost:6379

ngdpbase.catalog.*

Configuration Values (3 matches) — ngdpbase.catalog.*
Key Value
ngdpbase.catalog.ai.enabled false
ngdpbase.catalog.ai.provider null
ngdpbase.catalog.ai.threshold 0.7

ngdpbase.comments.*

Configuration Values (2 matches) — ngdpbase.comments.*
Key Value
ngdpbase.comments.allow true
ngdpbase.comments.storagedir ${SLOW_STORAGE}/comments

ngdpbase.default.*

Configuration Values (3 matches) — ngdpbase.default.*
Key Value
ngdpbase.default.system-category general
ngdpbase.default.template.dateformat dd-MMM-yyyy HH:mm
ngdpbase.default.timezone UTC

ngdpbase.directories.*

Configuration Values (8 matches) — ngdpbase.directories.*
Key Value
ngdpbase.directories.data ${FAST_STORAGE}
ngdpbase.directories.pages ${SLOW_STORAGE}/pages
ngdpbase.directories.required-pages ./required-pages
ngdpbase.directories.resources ./resources
ngdpbase.directories.schemas ${FAST_STORAGE}/schemas
ngdpbase.directories.templates ./templates
ngdpbase.directories.users ${FAST_STORAGE}/users
ngdpbase.directories.work ./

ngdpbase.features.*

Configuration Values (16 matches) — ngdpbase.features.*
Key Value
ngdpbase.features.export.html true
ngdpbase.features.export.odt false
ngdpbase.features.export.pdf false
ngdpbase.features.images.allowed-types image/jpeg,image/png,image/gif,image/webp
ngdpbase.features.images.default-alt Uploaded image
ngdpbase.features.images.default-class wiki-image
ngdpbase.features.images.enabled true
ngdpbase.features.images.max-size 5MB
ngdpbase.features.images.upload-dir ./public/images
ngdpbase.features.llm.enabled false
ngdpbase.features.llm.endpoint http://localhost:11434
ngdpbase.features.llm.model llama2
ngdpbase.features.maintenance.allow-admins true
ngdpbase.features.maintenance.enabled false
ngdpbase.features.maintenance.estimated-duration null
ngdpbase.features.maintenance.message System is currently under maintenance. Please try again later.

ngdpbase.footnotes.*

Configuration Values (2 matches) — ngdpbase.footnotes.*
Key Value
ngdpbase.footnotes.enabled true
ngdpbase.footnotes.storagedir ${SLOW_STORAGE}/footnotes

ngdpbase.github.*

Configuration Values (1 matches) — ngdpbase.github.*
Key Value
ngdpbase.github.repo jwilleke/ngdpbase

ngdpbase.holidays.*

Configuration Values (3 matches) — ngdpbase.holidays.*
Key Value
ngdpbase.holidays.dates { "2025-01-01": { "name": "New Year's Day", "message": "Access restricted on New Year's Day", "enabled": true }, "2025-07-04": { "name": "Independence Day", "message": "Access restricted on Independence Day", "enabled": true }, "2025-12-25": { "name": "Christmas Day", "message": "Access restricted on Christmas Day", "enabled": true }, "2025-12-26": { "name": "Boxing Day", "message": "Access restricted on Boxing Day", "enabled": true } }
ngdpbase.holidays.enabled true
ngdpbase.holidays.recurring { "*-01-01": { "name": "New Year's Day", "message": "Access restricted on New Year's Day", "enabled": true }, "*-12-25": { "name": "Christmas Day", "message": "Access restricted on Christmas Day", "enabled": true } }

ngdpbase.interwiki.*

Configuration Values (3 matches) — ngdpbase.interwiki.*
Key Value
ngdpbase.interwiki.enabled true
ngdpbase.interwiki.options { "openInNewWindow": true, "addIconIndicator": true, "caseSensitive": false, "showTooltips": true, "cacheTTL": 3600, "maxCacheEntries": 1000 }
ngdpbase.interwiki.sites { "Wikipedia": { "url": "https://en.wikipedia.org/wiki/%s", "description": "Wikipedia, the free encyclopedia", "icon": "wikipedia.png", "enabled": true, "openInNewWindow": true }, "JSPWiki": { "url": "https://jspwiki-wiki.apache.org/Wiki.jsp?page=%s", "description": "Apache JSPWiki Documentation", "icon": "jspwiki.png", "enabled": true, "openInNewWindow": true }, "MeatBall": { "url": "http://www.usemod.com/cgi-bin/mb.pl?%s", "description": "MeatBall Wiki", "icon": "meatball.png", "enabled": true, "openInNewWindow": true }, "C2": { "url": "http://wiki.c2.com/?%s", "description": "C2 Wiki (Portland Pattern Repository)", "icon": "c2.png", "enabled": false, "openInNewWindow": true }, "GVP": { "url": "https://volcano.si.edu/volcano.cfm?vn=%s", "description": "GVP (Global Volcanism Program)", "icon": "gvp-icon.jpg", "enabled": true, "openInNewWindow": true }, "GVP-COUNTRY": { "url": "https://volcano.si.edu/volcanolist_countries.cfm?country=%s", "description": "GVP (Global Volcanism Program) — Volcanoes by Country", "icon": "gvp-icon.jpg", "enabled": true, "openInNewWindow": true } }

ngdpbase.location.*

Configuration Values (1 matches) — ngdpbase.location.*
Key Value
ngdpbase.location.default-provider osm

ngdpbase.logging.*

Configuration Values (8 matches) — ngdpbase.logging.*
Key Value
ngdpbase.logging.debug.enabled false
ngdpbase.logging.debug.login false
ngdpbase.logging.debug.session false
ngdpbase.logging.dir ${FAST_STORAGE}/logs
ngdpbase.logging.level info
ngdpbase.logging.max-files 5
ngdpbase.logging.max-size 1MB
ngdpbase.logging.provider fileloggingprovider

ngdpbase.login-module.*

Configuration Values (1 matches) — ngdpbase.login-module.*
Key Value
ngdpbase.login-module.class CookieAuthenticationLoginModule

ngdpbase.lucene-search-provider.*

Configuration Values (1 matches) — ngdpbase.lucene-search-provider.*
Key Value
ngdpbase.lucene-search-provider.lucene-directory ./lucene

ngdpbase.mail.*

Configuration Values (13 matches) — ngdpbase.mail.*
Key Value
ngdpbase.mail.enabled true
ngdpbase.mail.from GeoHazardWatch Contact <[email protected]>
ngdpbase.mail.honeypot.enabled true
ngdpbase.mail.provider smtp
ngdpbase.mail.provider.smtp.from
ngdpbase.mail.provider.smtp.host smtp.gmail.com
ngdpbase.mail.provider.smtp.pass nqyiswddgaicffnq
ngdpbase.mail.provider.smtp.port 587
ngdpbase.mail.provider.smtp.secure false
ngdpbase.mail.provider.smtp.user [email protected]
ngdpbase.mail.rate-limit.enabled true
ngdpbase.mail.rate-limit.max-submissions 5
ngdpbase.mail.rate-limit.window-minutes 15

ngdpbase.managers.*

Configuration Values (9 matches) — ngdpbase.managers.*
Key Value
ngdpbase.managers.addons-manager.addons-path [ "/app/addons", "/opt/geohazardwatch/addons" ]
ngdpbase.managers.addons-manager.enabled true
ngdpbase.managers.cache-manager.enabled true
ngdpbase.managers.page-manager.enabled true
ngdpbase.managers.plugin-manager.enabled true
ngdpbase.managers.plugin-manager.search-paths [ "./dist/src/plugins" ]
ngdpbase.managers.rendering-manager.enabled true
ngdpbase.managers.search-manager.enabled true
ngdpbase.managers.template-manager.enabled true

ngdpbase.markdown.*

Configuration Values (2 matches) — ngdpbase.markdown.*
Key Value
ngdpbase.markdown.footnotes.enabled true
ngdpbase.markdown.ncm.image.ad-deny-list [ "doubleclick.net", "googlesyndication.com", "google-analytics.com", "facebook.com/tr", "scorecardresearch.com" ]

ngdpbase.markup.*

Configuration Values (77 matches) — ngdpbase.markup.*
Key Value
ngdpbase.markup.cache-ttl 300
ngdpbase.markup.cache.enable-warmup true
ngdpbase.markup.cache.handler-results.enabled true
ngdpbase.markup.cache.handler-results.max-size 2000
ngdpbase.markup.cache.handler-results.ttl 600
ngdpbase.markup.cache.metrics-enabled true
ngdpbase.markup.cache.parse-results.enabled true
ngdpbase.markup.cache.parse-results.max-size 1000
ngdpbase.markup.cache.parse-results.ttl 300
ngdpbase.markup.cache.patterns.enabled true
ngdpbase.markup.cache.patterns.max-size 100
ngdpbase.markup.cache.patterns.ttl 3600
ngdpbase.markup.cache.variables.enabled true
ngdpbase.markup.cache.variables.max-size 500
ngdpbase.markup.cache.variables.ttl 900
ngdpbase.markup.caching true
ngdpbase.markup.enabled true
ngdpbase.markup.fallback-to-legacy true
ngdpbase.markup.fenced-code-tags [ "text", "plain", "none", "javascript", "js", "typescript", "ts", "jsx", "tsx", "html", "xml", "svg", "css", "scss", "sass", "less", "json", "yaml", "yml", "toml", "bash", "sh", "shell", "zsh", "python", "py", "java", "kotlin", "c", "cpp", "csharp", "cs", "go", "rust", "ruby", "php", "sql", "markdown", "md", "diff", "patch", "mermaid" ]
ngdpbase.markup.filters.custom.auto-load true
ngdpbase.markup.filters.custom.cache-results true
ngdpbase.markup.filters.custom.enabled false
ngdpbase.markup.filters.custom.search-paths ./filters,./src/filters
ngdpbase.markup.filters.enabled true
ngdpbase.markup.filters.pipeline.enable-profiling true
ngdpbase.markup.filters.pipeline.fail-on-error false
ngdpbase.markup.filters.pipeline.max-filters 50
ngdpbase.markup.filters.pipeline.timeout 10000
ngdpbase.markup.filters.security.allowed-attributes class,id,href,src,alt,title
ngdpbase.markup.filters.security.allowed-tags p,div,span,strong,em,ul,ol,li,h1,h2,h3,h4,h5,h6,a,img
ngdpbase.markup.filters.security.enabled false
ngdpbase.markup.filters.security.prevent-csrf true
ngdpbase.markup.filters.security.prevent-xss true
ngdpbase.markup.filters.security.priority 110
ngdpbase.markup.filters.security.sanitize-html true
ngdpbase.markup.filters.security.strip-dangerous-content true
ngdpbase.markup.filters.spam.blacklist-words spam,casino,pharmacy,viagra
ngdpbase.markup.filters.spam.cache-blacklist true
ngdpbase.markup.filters.spam.enabled false
ngdpbase.markup.filters.spam.max-images 5
ngdpbase.markup.filters.spam.max-links 10
ngdpbase.markup.filters.spam.priority 100
ngdpbase.markup.filters.spam.whitelist-domains wikipedia.org,github.com,stackoverflow.com
ngdpbase.markup.filters.validation.enabled true
ngdpbase.markup.filters.validation.max-content-length 1048576
ngdpbase.markup.filters.validation.priority 90
ngdpbase.markup.filters.validation.report-errors true
ngdpbase.markup.filters.validation.validate-images true
ngdpbase.markup.filters.validation.validate-links true
ngdpbase.markup.filters.validation.validate-markup true
ngdpbase.markup.handler-registry.allow-duplicate-priorities true
ngdpbase.markup.handler-registry.default-timeout 5000
ngdpbase.markup.handler-registry.enable-conflict-detection true
ngdpbase.markup.handler-registry.enable-dependency-resolution true
ngdpbase.markup.handler-registry.max-handlers 100
ngdpbase.markup.handlers.attachment.enabled true
ngdpbase.markup.handlers.attachment.enhanced true
ngdpbase.markup.handlers.attachment.metadata true
ngdpbase.markup.handlers.attachment.priority 75
ngdpbase.markup.handlers.attachment.thumbnails true
ngdpbase.markup.handlers.form.enabled true
ngdpbase.markup.handlers.form.priority 85
ngdpbase.markup.handlers.interwiki.enabled true
ngdpbase.markup.handlers.interwiki.priority 80
ngdpbase.markup.handlers.plugin.enabled true
ngdpbase.markup.handlers.plugin.priority 90
ngdpbase.markup.handlers.rss.enabled true
ngdpbase.markup.handlers.rss.priority 60
ngdpbase.markup.handlers.search.enabled true
ngdpbase.markup.handlers.search.priority 65
ngdpbase.markup.handlers.style.enabled true
ngdpbase.markup.handlers.style.priority 70
ngdpbase.markup.handlers.wikitag.enabled true
ngdpbase.markup.handlers.wikitag.priority 95
ngdpbase.markup.integration.rendering-manager true
ngdpbase.markup.log-parsing-method true
ngdpbase.markup.use-advanced-parser true

ngdpbase.maximum.*

Configuration Values (1 matches) — ngdpbase.maximum.*
Key Value
ngdpbase.maximum.user-keywords 5

ngdpbase.media.*

Configuration Values (9 matches) — ngdpbase.media.*
Key Value
ngdpbase.media.enabled false
ngdpbase.media.extensions [ "jpg", "jpeg", "png", "gif", "heic", "heif", "tiff", "tif", "webp", "raw", "orf", "cr2", "nef", "arw", "dng", "bmp", "mp4", "mov", "avi", "mkv", "m4v", "wmv", "3gp" ]
ngdpbase.media.folders []
ngdpbase.media.ignoredirs [ ".dtrash", ".ts" ]
ngdpbase.media.maxdepth 5
ngdpbase.media.metadata.priority [ "EXIF", "IPTC", "XMP" ]
ngdpbase.media.readonly true
ngdpbase.media.scaninterval 3600000
ngdpbase.media.thumbnail.sizes 300x300,150x150

ngdpbase.notifications.*

Configuration Values (6 matches) — ngdpbase.notifications.*
Key Value
ngdpbase.notifications.auto-save-interval 300000
ngdpbase.notifications.dir ${FAST_STORAGE}/notifications
ngdpbase.notifications.escalation.enabled false
ngdpbase.notifications.escalation.levels [ "error" ]
ngdpbase.notifications.escalation.recipient-role admin
ngdpbase.notifications.file notifications.json

ngdpbase.page.*

Configuration Values (10 matches) — ngdpbase.page.*
Key Value
ngdpbase.page.enabled true
ngdpbase.page.nofooter [ "LeftMenu", "Footer", "Template:PageTabs" ]
ngdpbase.page.notabs [ "LeftMenu", "Footer", "Template:PageTabs" ]
ngdpbase.page.provider versioningfileprovider
ngdpbase.page.provider.default filesystemprovider
ngdpbase.page.provider.filesystem.autosave true
ngdpbase.page.provider.filesystem.encoding utf-8
ngdpbase.page.provider.filesystem.requiredpagesdir ./required-pages
ngdpbase.page.provider.filesystem.storagedir ${SLOW_STORAGE}/pages
ngdpbase.page.provider.versioning.indexfile ${FAST_STORAGE}/page-index.json

ngdpbase.permissions.*

Configuration Values (1 matches) — ngdpbase.permissions.*
Key Value
ngdpbase.permissions.definitions { "page-read": { "description": "View pages", "icon": "eye", "color": "#6c757d" }, "page-edit": { "description": "Edit pages", "icon": "edit", "color": "#007bff" }, "page-create": { "description": "Create new pages", "icon": "plus", "color": "#28a745" }, "page-delete": { "description": "Delete pages", "icon": "trash", "color": "#dc3545" }, "page-rename": { "description": "Rename pages", "icon": "i-cursor", "color": "#fd7e14" }, "page-export": { "description": "Export pages", "icon": "file-export", "color": "#6c757d" }, "asset-read": { "description": "View assets (attachments)", "icon": "paperclip", "color": "#6c757d" }, "asset-upload": { "description": "Upload assets", "icon": "upload", "color": "#28a745" }, "asset-delete": { "description": "Delete assets", "icon": "trash", "color": "#dc3545" }, "search-page": { "description": "Search pages", "icon": "search", "color": "#6c757d" }, "search-user": { "description": "Search users", "icon": "search", "color": "#6c757d" }, "user-read": { "description": "View user list and profiles", "icon": "users", "color": "#6c757d" }, "user-edit": { "description": "Edit user accounts", "icon": "user-edit", "color": "#007bff" }, "user-create": { "description": "Create user accounts", "icon": "user-plus", "color": "#28a745" }, "user-delete": { "description": "Delete user accounts", "icon": "user-minus", "color": "#dc3545" }, "admin-system": { "description": "System administration", "icon": "cog", "color": "#dc3545" }, "admin-roles": { "description": "Role management", "icon": "shield-alt", "color": "#dc3545" } }

ngdpbase.plugin.*

Configuration Values (3 matches) — ngdpbase.plugin.*
Key Value
ngdpbase.plugin.searchresult.maxItems 50
ngdpbase.plugin.searchresult.showScore true
ngdpbase.plugin.versioning.use true

ngdpbase.plugins.*

Configuration Values (2 matches) — ngdpbase.plugins.*
Key Value
ngdpbase.plugins.enabled true
ngdpbase.plugins.searchPath ./plugins

ngdpbase.roles.*

Configuration Values (1 matches) — ngdpbase.roles.*
Key Value
ngdpbase.roles.definitions { "admin": { "name": "admin", "displayname": "Administrator", "description": "Full system access to all features", "issystem": true, "icon": "shield-alt", "color": "#dc3545", "permissions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page", "search-user", "user-read", "user-edit", "user-create", "user-delete", "admin-system", "admin-roles" ] }, "user-admin": { "name": "user-admin", "displayname": "User Administrator", "description": "Can manage users — create, edit, deactivate, delete", "issystem": true, "icon": "user-cog", "color": "#6610f2", "permissions": [ "user-read", "user-edit", "user-create", "user-delete", "search-user" ] }, "editor": { "name": "editor", "displayname": "Editor", "description": "Can create, edit, delete, and rename pages", "issystem": true, "icon": "edit", "color": "#007bff", "permissions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page" ] }, "contributor": { "name": "contributor", "displayname": "Contributor", "description": "Can create and edit pages", "issystem": true, "icon": "user-edit", "color": "#28a745", "permissions": [ "page-read", "page-edit", "page-create", "page-export", "asset-read", "asset-upload", "search-page" ] }, "reader": { "name": "reader", "displayname": "Reader", "description": "Read-only access to content", "issystem": true, "icon": "book-reader", "color": "#6c757d", "permissions": [ "page-read", "page-export", "asset-read", "search-page" ] }, "member": { "name": "member", "displayname": "Member", "description": "Community member — same read access as reader, placeholder for community-specific permissions", "issystem": true, "icon": "id-card", "color": "#20c997", "permissions": [ "page-read", "asset-read", "search-page" ] }, "anonymous": { "name": "anonymous", "displayname": "Anonymous", "description": "Public access without authentication", "issystem": true, "icon": "user-secret", "color": "#adb5bd", "permissions": [ "page-read", "asset-read" ] } }

ngdpbase.rss.*

Configuration Values (5 matches) — ngdpbase.rss.*
Key Value
ngdpbase.rss.channel-description RSS feed for ngdpbase updates
ngdpbase.rss.channel-title ngdpbase RSS Feed
ngdpbase.rss.file-name rss.xml
ngdpbase.rss.generate true
ngdpbase.rss.interval 3600

ngdpbase.schedules.*

Configuration Values (1 matches) — ngdpbase.schedules.*
Key Value
ngdpbase.schedules.enabled true

ngdpbase.search.*

Configuration Values (27 matches) — ngdpbase.search.*
Key Value
ngdpbase.search.autocomplete.enabled true
ngdpbase.search.autocomplete.minlength 2
ngdpbase.search.enabled true
ngdpbase.search.maxresults 50
ngdpbase.search.plugin.allowAdvanced true
ngdpbase.search.plugin.cacheResults true
ngdpbase.search.plugin.cacheTTL 300
ngdpbase.search.plugin.maxResults 50
ngdpbase.search.plugin.showScore true
ngdpbase.search.provider lunrsearchprovider
ngdpbase.search.provider.default lunrsearchprovider
ngdpbase.search.provider.elasticsearch.autotagging.enabled false
ngdpbase.search.provider.elasticsearch.connecttimeout 5000
ngdpbase.search.provider.elasticsearch.indexname ngdpbase-pages
ngdpbase.search.provider.elasticsearch.requesttimeout 30000
ngdpbase.search.provider.elasticsearch.url http://localhost:9200
ngdpbase.search.provider.lunr.boost.keywords 4
ngdpbase.search.provider.lunr.boost.systemcategory 8
ngdpbase.search.provider.lunr.boost.tags 5
ngdpbase.search.provider.lunr.boost.title 10
ngdpbase.search.provider.lunr.boost.userkeywords 6
ngdpbase.search.provider.lunr.indexdir ${FAST_STORAGE}/search-index
ngdpbase.search.provider.lunr.maxresults 50
ngdpbase.search.provider.lunr.snippetlength 200
ngdpbase.search.provider.lunr.stemming true
ngdpbase.search.suggestions.enabled true
ngdpbase.search.suggestions.maxitems 10

ngdpbase.server.*

Configuration Values (2 matches) — ngdpbase.server.*
Key Value
ngdpbase.server.host 0.0.0.0
ngdpbase.server.port 3000

ngdpbase.session.*

Configuration Values (7 matches) — ngdpbase.session.*
Key Value
ngdpbase.session.http-only true
ngdpbase.session.max-age 86400000
ngdpbase.session.sameSite lax
ngdpbase.session.secret ngdpbase-session-secret-change-in-production
ngdpbase.session.secure true
ngdpbase.session.storagedir ${FAST_STORAGE}/sessions
ngdpbase.session.store users/sessions.json

ngdpbase.specialpage.*

Configuration Values (7 matches) — ngdpbase.specialpage.*
Key Value
ngdpbase.specialpage.diff Diff.jsp
ngdpbase.specialpage.findpage FindPage.jsp
ngdpbase.specialpage.login Login.jsp
ngdpbase.specialpage.search Search.jsp
ngdpbase.specialpage.upload Upload.jsp
ngdpbase.specialpage.userpreferences UserPreferences.jsp
ngdpbase.specialpage.workflow Workflow.jsp

ngdpbase.storageLocation.*

Configuration Values (10 matches) — ngdpbase.storageLocation.*
Key Value
ngdpbase.storageLocation.aclBasedStorage true
ngdpbase.storageLocation.categoryBasedStorage.Admin required
ngdpbase.storageLocation.categoryBasedStorage.Documentation regular
ngdpbase.storageLocation.categoryBasedStorage.General regular
ngdpbase.storageLocation.categoryBasedStorage.Security required
ngdpbase.storageLocation.categoryBasedStorage.System required
ngdpbase.storageLocation.enabled true
ngdpbase.storageLocation.roleBasedStorage.admin required
ngdpbase.storageLocation.roleBasedStorage.editor regular
ngdpbase.storageLocation.roleBasedStorage.user regular

ngdpbase.style.*

Configuration Values (7 matches) — ngdpbase.style.*
Key Value
ngdpbase.style.bootstrap.integration true
ngdpbase.style.custom-classes.enabled true
ngdpbase.style.predefined.background bg-primary,bg-secondary,bg-light,bg-dark
ngdpbase.style.predefined.layout text-center,text-left,text-right,float-left,float-right
ngdpbase.style.predefined.text text-primary,text-secondary,text-success,text-danger,text-warning,text-info
ngdpbase.style.security.allow-inline-css false
ngdpbase.style.security.allowed-properties color,background-color,font-weight,font-style,text-align

ngdpbase.tab.*

Configuration Values (4 matches) — ngdpbase.tab.*
Key Value
ngdpbase.tab.pagetabs true
ngdpbase.tab.pagetabs.template Template:PageTabs
ngdpbase.tab.persist true
ngdpbase.tab.style tabs

ngdpbase.telemetry.*

Configuration Values (11 matches) — ngdpbase.telemetry.*
Key Value
ngdpbase.telemetry.enabled false
ngdpbase.telemetry.metrics.host 0.0.0.0
ngdpbase.telemetry.metrics.interval 15000
ngdpbase.telemetry.metrics.path /metrics
ngdpbase.telemetry.metrics.port 9464
ngdpbase.telemetry.otlp.enabled false
ngdpbase.telemetry.otlp.endpoint
ngdpbase.telemetry.otlp.headers {}
ngdpbase.telemetry.otlp.interval 30000
ngdpbase.telemetry.otlp.timeout 30000
ngdpbase.telemetry.service-name

ngdpbase.theme.*

Configuration Values (3 matches) — ngdpbase.theme.*
Key Value
ngdpbase.theme.active volcano
ngdpbase.theme.defaults.mode light
ngdpbase.theme.directory themes

ngdpbase.translator-reader.*

Configuration Values (5 matches) — ngdpbase.translator-reader.*
Key Value
ngdpbase.translator-reader.allow-html false
ngdpbase.translator-reader.camel-case-links true
ngdpbase.translator-reader.inline-pattern.1 s/\{\{([^}]+)\}\}/\<tt\>$1\<\/tt\>/g
ngdpbase.translator-reader.match-english-plurals true
ngdpbase.translator-reader.plain-uris true

ngdpbase.url.*

Configuration Values (1 matches) — ngdpbase.url.*
Key Value
ngdpbase.url.generator DefaultURLGenerator

ngdpbase.user.*

Configuration Values (12 matches) — ngdpbase.user.*
Key Value
ngdpbase.user.coreFields [ "username", "email", "displayName", "password", "roles", "isActive", "isExternal", "isSystem", "createdAt", "loginCount", "lastLogin", "preferences", "profilePage", "allowedAuthMethods", "avatar" ]
ngdpbase.user.defaults.locale en-us
ngdpbase.user.defaults.timezone utc
ngdpbase.user.enabled true
ngdpbase.user.provider jsonuserprovider
ngdpbase.user.provider.default jsonuserprovider
ngdpbase.user.provider.files.sessions sessions.json
ngdpbase.user.provider.files.users users.json
ngdpbase.user.provider.storagedir ${FAST_STORAGE}/users
ngdpbase.user.security.defaultpassword admin123
ngdpbase.user.security.passwordsalt amdwiki-salt
ngdpbase.user.security.sessionexpiration 86400000

ngdpbase.workflow.*

Configuration Values (2 matches) — ngdpbase.workflow.*
Key Value
ngdpbase.workflow.approver Admin
ngdpbase.workflow.saveWikiPage false

ngdpbase.xmlGroupDatabase.*

Configuration Values (1 matches) — ngdpbase.xmlGroupDatabase.*
Key Value
ngdpbase.xmlGroupDatabase.file ./config/groupdatabase.xml

ngdpbase.xmlUserDatabase.*

Configuration Values (1 matches) — ngdpbase.xmlUserDatabase.*
Key Value
ngdpbase.xmlUserDatabase.file ./config/userdatabase.xml

Top-level ngdpbase.* (ungrouped)

Single-segment keys with no sub-group:

  • ngdpbase.addons: {}
  • ngdpbase.application-name: GeoHazardWatch
  • ngdpbase.authorizer: DefaultAuthorizer
  • ngdpbase.diff-provider: TraditionalDiffProvider
  • ngdpbase.encoding: UTF-8
  • ngdpbase.favicon-path: /favicon.svg
  • ngdpbase.fetch-timeout-ms: 30000
  • ngdpbase.front-page: volcanoes-and-earthquakes
  • ngdpbase.groupdatabase: JSONGroupDatabase
  • ngdpbase.jsonorganizationsdatabase: users/organizations.json
  • ngdpbase.jsonpersonsdatabase: .users/persons.json
  • ngdpbase.jsonuserdatabase: .users/users.json
  • ngdpbase.pageFilters: org.apache.wiki.filters.BasicPageFilter,org.apache.wiki.filters.ProfanityFilter
  • ngdpbase.referenceStyle: relative
  • ngdpbase.schedules: {"business-hours":{"name":"Standard Business Hours","description":"Monday-Friday, 9 AM - 5 PM","timeZone":"America/New_York","rules":[{"days":["monday","tuesday","wednesday","thursday","friday"],"startTime":"09:00","endTime":"17:00","type":"allow"},{"days":["saturday","sunday"],"type":"deny"}],"exceptions":[],"enabled":true},"weekend-support":{"name":"Weekend Support","description":"Limited weekend access for critical issues","timeZone":"America/New_York","rules":[{"days":["monday","tuesday","wednesday","thursday","friday"],"startTime":"09:00","endTime":"17:00","type":"allow"},{"days":["saturday"],"startTime":"10:00","endTime":"14:00","type":"allow"},{"days":["sunday"],"type":"deny"}],"exceptions":[],"enabled":true},"emergency-24-7":{"name":"24/7 Emergency Access","description":"Full access for emergency situations","timeZone":"UTC","rules":[{"type":"allow"}],"exceptions":[],"enabled":true},"role_admin":{"name":"Administrator Schedule","description":"Extended hours for administrators","timeZone":"America/New_York","rules":[{"days":["monday","tuesday","wednesday","thursday","friday"],"startTime":"08:00","endTime":"18:00","type":"allow"},{"days":["saturday"],"startTime":"09:00","endTime":"12:00","type":"allow"}],"exceptions":[],"enabled":true},"category_System":{"name":"System Pages Schedule","description":"Restricted access to system pages","timeZone":"America/New_York","rules":[{"days":["monday","tuesday","wednesday","thursday","friday"],"startTime":"09:00","endTime":"17:00","type":"allow"}],"exceptions":[],"enabled":true},"default":{"name":"Default Schedule","description":"Fallback schedule for users without specific assignments","timeZone":"UTC","rules":[{"days":["monday","tuesday","wednesday","thursday","friday"],"startTime":"09:00","endTime":"17:00","type":"allow"}],"exceptions":[],"enabled":true}}
  • ngdpbase.system-category: {"general":{"label":"general","description":"General User pages","default":true,"storageLocation":"regular","enabled":true},"system":{"label":"system","description":"System configuration and infrastructure pages","default":false,"storageLocation":"required","enabled":true,"page-badge":{"color":"bg-secondary","label":"System","title":"System page"}},"documentation":{"label":"documentation","description":"End-User documentation","default":false,"storageLocation":"required","enabled":true,"page-badge":{"color":"bg-info text-dark","label":"Documentation","title":"Documentation page"}},"developer":{"label":"developer","description":"Developer documentation and technical note Only in GitHub","default":false,"storageLocation":"github","enabled":true},"addon":{"label":"addon","description":"Pages seeded by an installed add-on","default":false,"storageLocation":"regular","enabled":true,"page-badge":{"color":"bg-primary","label":"Addon","title":"Add-on page"}},"user-profile":{"label":"user-profile","description":"User profile pages","default":false,"storageLocation":"regular","enabled":true,"page-badge":{"color":"bg-success","label":"Profile","title":"User profile page"}},"journal":{"label":"journal","description":"Personal journal entries — schema.org BlogPosting at JSON-LD render time (#791)","default":false,"storageLocation":"regular","enabled":true,"page-badge":{"color":"bg-info","label":"Journal","title":"Journal entry"}}}
  • ngdpbase.system-keywords: {"general":{"label":"general","description":"General-purpose keyword for standard wiki content","default":true,"category":"content-type","enabled":true},"draft":{"label":"draft","description":"Work in progress content","category":"workflow-status","enabled":true},"review":{"label":"review","description":"Content under review","category":"workflow-status","enabled":true},"published":{"label":"published","description":"Finalized and approved content","category":"workflow-status","enabled":true},"medicine":{"label":"medicine","description":"Medical and healthcare-related content","category":"subject","enabled":true},"geology":{"label":"geology","description":"Geological and earth science content","category":"subject","enabled":true},"meteorology":{"label":"meteorology","description":"Weather and atmospheric science content","category":"subject","enabled":true},"oceanography":{"label":"oceanography","description":"Ocean and marine science content","category":"subject","enabled":true},"psychology":{"label":"psychology","description":"Psychological and behavioral science content","category":"subject","enabled":true},"sociology":{"label":"sociology","description":"Social science and society-related content","category":"subject","enabled":true},"anthropology":{"label":"anthropology","description":"Human culture and society content","category":"subject","enabled":true},"economics":{"label":"economics","description":"Economic and financial content","category":"subject","enabled":true},"political-science":{"label":"political-science","description":"Political science and governance content","category":"subject","enabled":true}}
  • ngdpbase.templateDir: default
  • ngdpbase.timezones: [{"value":"UTC","label":"UTC (Coordinated Universal Time)","category":"Universal"},{"value":"America/New_York","label":"Eastern Time (New York)","category":"North America"},{"value":"America/Chicago","label":"Central Time (Chicago)","category":"North America"},{"value":"America/Denver","label":"Mountain Time (Denver)","category":"North America"},{"value":"America/Los_Angeles","label":"Pacific Time (Los Angeles)","category":"North America"},{"value":"America/Toronto","label":"Eastern Time (Toronto)","category":"North America"},{"value":"America/Vancouver","label":"Pacific Time (Vancouver)","category":"North America"},{"value":"Europe/London","label":"GMT (London)","category":"Europe"},{"value":"Europe/Paris","label":"CET (Paris)","category":"Europe"},{"value":"Europe/Berlin","label":"CET (Berlin)","category":"Europe"},{"value":"Europe/Rome","label":"CET (Rome)","category":"Europe"},{"value":"Europe/Madrid","label":"CET (Madrid)","category":"Europe"},{"value":"Europe/Moscow","label":"MSK (Moscow)","category":"Europe"},{"value":"Europe/Stockholm","label":"CET (Stockholm)","category":"Europe"},{"value":"Asia/Tokyo","label":"JST (Tokyo)","category":"Asia"},{"value":"Asia/Shanghai","label":"CST (Shanghai)","category":"Asia"},{"value":"Asia/Seoul","label":"KST (Seoul)","category":"Asia"},{"value":"Asia/Kolkata","label":"IST (Kolkata)","category":"Asia"},{"value":"Asia/Dubai","label":"GST (Dubai)","category":"Asia"},{"value":"Asia/Singapore","label":"SGT (Singapore)","category":"Asia"},{"value":"Australia/Sydney","label":"AEST (Sydney)","category":"Oceania"},{"value":"Australia/Melbourne","label":"AEST (Melbourne)","category":"Oceania"},{"value":"Australia/Perth","label":"AWST (Perth)","category":"Oceania"},{"value":"Pacific/Auckland","label":"NZST (Auckland)","category":"Oceania"},{"value":"Africa/Cairo","label":"EET (Cairo)","category":"Africa"},{"value":"Africa/Johannesburg","label":"SAST (Johannesburg)","category":"Africa"},{"value":"America/Sao_Paulo","label":"BRT (São Paulo)","category":"South America"},{"value":"America/Argentina/Buenos_Aires","label":"ART (Buenos Aires)","category":"South America"}]
  • ngdpbase.user-keywords: {"default":{"label":"default","description":"Default keyword with no special restrictions","category":"general","enabled":true,"restrictEditing":false},"draft":{"label":"draft","description":"Work in progress content","category":"status","enabled":true,"restrictEditing":false},"review":{"label":"review","description":"Content under review","category":"status","enabled":true,"restrictEditing":false},"published":{"label":"published","description":"Finalized and approved content","category":"status","enabled":true,"restrictEditing":false},"medicine":{"label":"medicine","description":"Medical and healthcare-related content","category":"subject","enabled":true,"restrictEditing":false,"schemaOrg":"MedicalEntity"},"geology":{"label":"geology","description":"Geological and earth science content","category":"subject","enabled":true,"restrictEditing":false},"meteorology":{"label":"meteorology","description":"Weather and atmospheric science content","category":"subject","enabled":true,"restrictEditing":false},"oceanography":{"label":"oceanography","description":"Ocean and marine science content","category":"subject","enabled":true,"restrictEditing":false},"psychology":{"label":"psychology","description":"Psychological and behavioral science content","category":"subject","enabled":true,"restrictEditing":false},"sociology":{"label":"sociology","description":"Social science and society-related content","category":"subject","enabled":true,"restrictEditing":false},"anthropology":{"label":"anthropology","description":"Human culture and society content","category":"subject","enabled":true,"restrictEditing":false},"economics":{"label":"economics","description":"Economic and financial content","category":"subject","enabled":true,"restrictEditing":false},"political-science":{"label":"political-science","description":"Political science and governance content","category":"subject","enabled":true,"restrictEditing":false}}
  • ngdpbase.userdatabase: JSONUserDatabase
  • ngdpbase.version: 3.46.1
  • ngdpbase.workDir: ./work

No footnotes on this page.

No comments yet.