A High-Performance, Modern C++ Item Manager for Inventory, Asset Tracking, and Data Persistence.
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.
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.
- 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
For fast look up, use GitHub Action and run the 66 Google Test suite with results printed on the console
by click: Run Smart_Store Output App
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 |
- 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
#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;
}
Below is the expected output illustrating Smart_Storeβs tagging and state snapshot behavior in action.
Flow from Item Registration to Export
Format | Import | Export |
---|---|---|
JSON | β | β |
CSV | β | β |
XML | β | β |
Binary | β | β |
- Modern & Maintainable: Clean, idiomatic C++20 codebase
- Zero Boilerplate: Automatic type registration, just 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
. Make sure you have CMake and GCC compiler installed before you run the fellowing commands.
. If still having issues, set up WSL (Windows Subsystem for Linux) or use a Linux environment
and run the following commands.
. Make sure you have CMake and 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 .
./TestApp
>> If the issue persist or throw a segmentation fault, please reach out via email or GitHub issues.
MIT License. See LICENSE for details.
We welcome contributions from the community! Whether it's fixing bugs, suggesting new features, improving documentation, or refactoring code, your help is appreciated.
- Fork the repository
- Create a branch for your feature or bugfix
- Commit your changes with clear messages
- Open a Pull Request (PR) with a detailed description
- Ensure your contribution aligns with the project's guidelines
[Email] (ve48381@gmail.com)
LinkedIn
Portfolio