Skip to content

πŸ›οΈ Smart_Store is a lightweight C++ framework for dynamic and automatic type registration, type-safe runtime object graphs in C++, type-safe serialization, and runtime object storage.

License

Notifications You must be signed in to change notification settings

gem870/Smart_Store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

69 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ›οΈ Smart_Store

Smart_Store Banner

A High-Performance, Modern C++ Item Manager for Inventory, Asset Tracking, and Data Persistence.


Overview

Smart_Store is a modular, extensible, and high-performance C++ framework for managing, serializing, deserializing, and organizing complex item data across multiple formats. Perfect for inventory systems, asset management, data editors, and any application needing structured, taggable, and type-safe storage of arbitrary objects.
This isn’t just code, it’s a living system. I designed it to be as intuitive and adaptive as the human body forming from cells.


Project Identity

Smart_Store Framework
Author: Emmanuel Chibuike Victor
Created: 2025
License: MIT License

Smart_Store was built by Victor to solve serialization challenges in C++. It introduces a metadata-driven instantiation model, multi-format serialization (JSON, XML, binary, and more to come), and undo/redo logicβ€”designed for extensibility, performance, and architectural clarity.


Key Features

  • Undo / Redo History β€” Safe state rollback with snapshots
  • Versioned Schema Migration β€” Upgrade legacy data automatically
  • Multi-Format Import/Export β€” JSON, XML, CSV, Binary
  • Dynamic Type Registration β€” Add custom types with zero boilerplate
  • Tag-Based Lookup β€” Fast, flexible item access
  • Safe Deserialization β€” Registered handlers for type safety
  • Extensive Logging β€” Color-coded, timestamped debug output
  • Thread-Safe API β€” Concurrent access and modification
  • cross-platform C++ data persistence

GitHub Action

For fast lookup, use GitHub Action and run the 66 Google Test suite with results printed on the console
by click: Run Smart_Store Output App

Feature Matrix

Feature Status Description
Undo / Redo βœ… Safe state rollback through snapshots
JSON Import/Export βœ… Schema versioning & upgrade support
CSV Import/Export βœ… Standard data format compatibility
XML Import/Export βœ… Human-readable, structured format
Binary Import/Export βœ… Compact, efficient persistence
Schema Upgrades βœ… Future-proof with migration strategies
Dynamic Types βœ… Register custom object types easily

Technologies

  • C++20 β€” Modern language features
  • nlohmann::json β€” Fast, flexible JSON serialization
  • TinyXML2 β€” Lightweight XML support
  • Smart Pointers & RAII β€” Memory safety
  • Modern STL β€” std::map, std::optional, std::shared_ptr
  • Type-Safe Deserialization Registry
  • Custom Logging Utility β€” ANSI color support

Directory Structure

file structure


Quick Example

#include "t_manager/ItemManager.h"

int main() {
  ItemManager manager;

  manager.addItem(std::make_shared<int>(42), "item1");
  manager.displayByTag("item1");

  manager.exportToFile_CSV("backup.csv");

  manager.undo();
  manager.redo();

  manager.removeByTag("item1");
  manager.displayByTag("item1");

  return 0;
}

Output:

Below is the expected output illustrating Smart_Store’s tagging and state snapshot behavior in action. file structure


Smart_Store Core Architecture:

Flow from Item Registration to Export
Smart_Store Architecture Flowchart: ItemManager to Serializer

Format Import Export
JSON βœ… βœ…
CSV βœ… βœ…
XML βœ… βœ…
Binary βœ… βœ…

Why Choose Smart_Store?

  • Modern & Maintainable: Clean, idiomatic C++20 codebase
  • Zero Boilerplate: Automatic type registration, use addItem
  • No Inheritance Required: Works with any object type
  • Data Safety: Undo history ensures you never lose a state
  • Robust Migration: Built-in schema upgrades for legacy data
  • Multi-Format Ready: Seamless transitions between formats

Installation

Windows:

. Make sure you have CMake and the GCC compiler installed before you run the following commands.
. If still having issues, set up WSL (Windows Subsystem for Linux) or use a Linux environment
and run the following commands.

Linux / macOS:

. Make sure you have CMake and the GCC compiler installed before you run the following commands.

git clone https://github.com/gem870/Smart_Store.git
cd Smart_Store
mkdir build
cd build
cmake ..
cmake --build .

To output on the console.

For PowerShell use:

.\TestApp.exe

On the Command Prompt terminal, use:

TestApp.exe

>> If the issue persists or throws a segmentation fault, please reach out via email or GitHub issues.

Integration


License

MIT License. See LICENSE for details.


Contributing

We welcome contributions from the community! I would appreciate your help, whether it's fixing bugs, suggesting new features, improving documentation, or refactoring code.

How to Contribute

  1. Fork the repository
  2. Create a branch for your feature or bugfix
  3. Commit your changes with clear messages
  4. Open a Pull Request (PR) with a detailed description
  5. Ensure your contribution aligns with the project's guidelines

Resources


Contact

[Email] ([email protected])
LinkedIn
Portfolio

About

πŸ›οΈ Smart_Store is a lightweight C++ framework for dynamic and automatic type registration, type-safe runtime object graphs in C++, type-safe serialization, and runtime object storage.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published