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 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 | 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, 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 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.
. 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 ..\TestApp.exeTestApp.exe>> If the issue persists or throws a segmentation fault, please reach out via email or GitHub issues.
MIT License. See LICENSE for details.
We welcome contributions from the community! I would appreciate your help, whether it's fixing bugs, suggesting new features, improving documentation, or refactoring code.
- 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] ([email protected])
LinkedIn
Portfolio
