Skip to content

Native Data Management System

AZIRAR Mhamed (SNCF / DGA NUMERIQUE / e.SNCF Sol.D2D DDSP IDFCE) edited this page Apr 22, 2026 · 2 revisions

Nodify Headless CMS: Native Data Management System

Introduction

Nodify Headless CMS is not just a powerful content management system — it is also an open source platform built with Java that integrates a native data management system. This built-in feature allows users to store and retrieve data directly within the CMS, eliminating the need for external databases or third-party services. The system is entirely API-driven, ensuring seamless integration with various applications, from websites to mobile apps and IoT devices.

With native i18n (multilingual) support, Nodify's data management system can handle translated data values across different languages, making it ideal for global applications.


Why Use Nodify's Native Data Management?

Challenge with Traditional CMS Nodify's Solution
Need for external database (MySQL, PostgreSQL, MongoDB) Built-in data storage
Separate API layer required Native REST API included
Complex data synchronization Unified content + data management
Additional licensing costs Open source – no extra fees
Multiple systems to maintain All-in-one platform

Key Features

1. Native Data Storage and Retrieval

Nodify provides an integrated way to push and fetch data efficiently. Unlike traditional CMS solutions that require separate databases or APIs, Nodify's internal data management system enables developers to interact with data effortlessly — all within the same platform that manages your content.

2. API-Driven Data Management

Nodify exposes a REST API to handle data operations. All endpoints are fully documented and support JSON payloads.

3. Hierarchical Data Inheritance

Data stored at the node level is automatically inherited by child nodes and their contents, following the same inheritance rules as content translations and values.

4. Multilingual Data Support (i18n)

Store different data values per language using Nodify's built-in i18n capabilities:

{
  "key": "WELCOME_BANNER",
  "value": {
    "en": "Welcome to our site",
    "fr": "Bienvenue sur notre site",
    "es": "Bienvenido a nuestro sitio"
  }
}

API Endpoints for Data Management

Save Data

POST /v0/datas
Content-Type: application/json

This endpoint allows users to store data within Nodify's internal system.

Request Body Example:

{
  "key": "user_settings",
  "value": {
    "theme": "dark",
    "notifications": true,
    "language": "en"
  },
  "name": "User Preferences",
  "contentNodeCode": "user_123"
}

Response (201 Created):

{
  "id": "data_789",
  "key": "user_settings",
  "value": { "theme": "dark", "notifications": true },
  "creationDate": 1703260800000
}

Find Data by Key

GET /v0/datas/key/{key}

Retrieve a specific data entry using its unique key.

Example Request:

GET /v0/datas/key/user_settings

Response (200 OK):

{
  "key": "user_settings",
  "value": { "theme": "dark", "notifications": true },
  "name": "User Preferences",
  "creationDate": 1703260800000,
  "modificationDate": 1703347200000
}

Delete Data by Key

DELETE /v0/datas/key/{key}

Remove a specific data entry based on its key.

Example Request:

DELETE /v0/datas/key/user_settings

Response: 204 No Content


Find Data by Content Code

GET /v0/datas/contentCode/{code}

Retrieve all data entries associated with a specific content code (node or content identifier).

Example Request:

GET /v0/datas/contentCode/blog_post_123

Response (200 OK):

[
  {
    "key": "author_name",
    "value": "John Doe",
    "dataType": "string"
  },
  {
    "key": "reading_time",
    "value": 5,
    "dataType": "number"
  }
]

Delete Data by Content Code

DELETE /v0/datas/contentCode/{code}

Delete all data entries associated with a specific content code.

Example Request:

DELETE /v0/datas/contentCode/blog_post_123

Response: 204 No Content


Data Model

The data structure used in Nodify follows a straightforward JSON schema:

{
  "contentNodeCode": "string",
  "creationDate": 0,
  "modificationDate": 0,
  "dataType": "string",
  "name": "string",
  "key": "string",
  "value": "string | object | array | number | boolean"
}

Explanation of Fields

Field Type Description
contentNodeCode string Identifier linking data to a content node or content item
creationDate long (timestamp) When the data was created (milliseconds since epoch)
modificationDate long (timestamp) When the data was last modified
dataType string Type of data being stored (string, number, boolean, object, array)
name string Human-readable name for the data entry
key string Unique identifier for the data entry
value any The actual stored data (can be any JSON-serializable type)

Accessing Data in Templates

Stored data can be accessed in your templates using the $value(KEY) syntax:

<!-- Display stored data -->
<div class="user-profile">
    <h2>$value(USER_NAME)</h2>
    <p>Theme preference: $value(USER_THEME)</p>
    <p>Notifications: $value(USER_NOTIFICATIONS)</p>
</div>

<!-- Conditional rendering based on stored data -->
$if(value(ENABLE_FEATURE_X))
    <div class="new-feature">Check out our new feature!</div>
$endif

Use Cases for Native Data Management

Use Case Example Benefit
User preferences Theme, language, notification settings No external user database needed
Application configuration Feature flags, API keys, environment variables Centralized configuration management
Session data Shopping cart, form progress Persistent across user visits
Analytics counters Page views, click counts Built-in data storage
A/B testing Variant assignments, test groups Simple key-value storage
Personalization User segments, content recommendations Data-driven content delivery
Form submissions Contact forms, surveys Direct storage without external DB

Integration with Content and i18n

Data + Content

Data can be linked to specific content items using the contentNodeCode field:

POST /v0/datas
{
  "key": "article_metadata",
  "value": { "author": "Jane Smith", "readingTime": 8 },
  "contentNodeCode": "article_456"
}

Data + i18n (Multilingual)

Store language-specific data using object values:

{
  "key": "promo_banner",
  "value": {
    "en": "Summer Sale - 50% off!",
    "fr": "Soldes d'été - 50% de réduction !",
    "es": "Rebajas de verano - 50% de descuento!"
  }
}

Then display the correct language version:

<div class="promo">$value(promo_banner, $translate(LANGUAGE))</div>

Benefits of Nodify's Native Data Management

Benefit Description
Eliminates external databases Everything is handled within Nodify – no MySQL, PostgreSQL, or MongoDB required
Simplifies development Push and pull data without additional configurations or services
API-first approach Ensures seamless integration with external systems (web, mobile, IoT)
Scalability Enables easy data expansion and retrieval at scale
Open source Full control over your data with no vendor lock-in
Java-based performance Enterprise-grade reliability and speed
Unified platform Content + data management in one place
i18n ready Store multilingual data natively
Inheritance support Parent node data automatically available to children

Best Practices

1. Use Descriptive Keys

// Good
{ "key": "user_email_notification_preference" }

// Avoid
{ "key": "u1" }

2. Leverage Content Node Codes

Always associate data with the appropriate content node to maintain organizational clarity.

3. Use Data Types Appropriately

// String for text
{ "key": "site_name", "value": "My Website", "dataType": "string" }

// Boolean for flags
{ "key": "maintenance_mode", "value": false, "dataType": "boolean" }

// Object for complex data
{ "key": "social_links", "value": { "twitter": "@me", "github": "myuser" }, "dataType": "object" }

4. Regular Cleanup

Use the DELETE endpoints to remove stale or unused data entries.


Comparison with Traditional Databases

Feature Nodify Native Data External Database (MySQL, etc.)
Setup time None – built-in Hours to days
Maintenance Zero Ongoing
Scaling Automatic with Nodify Manual configuration
API layer Included Must be built
Content integration Native Custom integration required
i18n support Built-in Custom implementation
Cost Included (open source) Additional licensing/hosting

Conclusion

With Nodify Headless CMS, managing structured data is more efficient than ever. Its built-in data management system allows developers to store, retrieve, and delete data without relying on external sources. As an open source, Java-based platform with a powerful REST API, native i18n support, and seamless content integration, Nodify is an all-in-one solution for both content and data management needs. 🚀

#Nodify #HeadlessCMS #DataManagement #NativeData #KeyValueStore #API #RESTAPI #OpenSource #Java #i18n #Multilingual #NoExternalDatabase #AllInOneCMS #ContentManagement #DataStorage #WebDevelopment #DeveloperTools

Clone this wiki locally