{"id":51007151,"url":"https://github.com/tranglecong/trlc-platform","last_synced_at":"2026-06-20T21:31:34.505Z","repository":{"id":311867946,"uuid":"1045379665","full_name":"tranglecong/trlc-platform","owner":"tranglecong","description":"A modern, header-only C++ library for compile-time platform detection and abstraction. TRLC Platform provides zero-overhead platform detection, feature-based conditional compilation, and adaptive code selection for cross-platform C++ development.","archived":false,"fork":false,"pushed_at":"2025-08-27T09:46:35.000Z","size":736,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-27T12:59:35.040Z","etag":null,"topics":["architecture-detection","compiler-detection","cplusplus","cpp","feature-detection","platform-detection","portable-library"],"latest_commit_sha":null,"homepage":"https://tranglecong.github.io/trlc-platform/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tranglecong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-27T04:32:38.000Z","updated_at":"2025-08-27T09:46:38.000Z","dependencies_parsed_at":"2025-08-27T12:59:42.816Z","dependency_job_id":"5cf16a8a-9e0e-4d2b-95be-8bd0c6dab5f4","html_url":"https://github.com/tranglecong/trlc-platform","commit_stats":null,"previous_names":["tranglecong/trlc-platform"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tranglecong/trlc-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tranglecong%2Ftrlc-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tranglecong%2Ftrlc-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tranglecong%2Ftrlc-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tranglecong%2Ftrlc-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tranglecong","download_url":"https://codeload.github.com/tranglecong/trlc-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tranglecong%2Ftrlc-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34586666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["architecture-detection","compiler-detection","cplusplus","cpp","feature-detection","platform-detection","portable-library"],"created_at":"2026-06-20T21:31:34.428Z","updated_at":"2026-06-20T21:31:34.492Z","avatar_url":"https://github.com/tranglecong.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TRLC Platform\n![Linux GCC](https://img.shields.io/github/actions/workflow/status/tranglecong/trlc-platform/ci.yml?branch=main\u0026job=Test%20on%20Ubuntu%2022.04%20GCC%2012\u0026label=Linux%20GCC)\n![macOS Clang](https://img.shields.io/github/actions/workflow/status/tranglecong/trlc-platform/ci.yml?branch=main\u0026job=Test%20on%20macOS%2013%20Clang\u0026label=macOS%20Clang)\n![Windows MSVC](https://img.shields.io/github/actions/workflow/status/tranglecong/trlc-platform/ci.yml?branch=main\u0026job=Test%20on%20Windows%202022%20MSVC%202022\u0026label=Windows%20MSVC)\n[![C++ Version](https://img.shields.io/badge/C%2B%2B-17%2F20%2F23-blue)](#requirements)\n[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n[![Header Only](https://img.shields.io/badge/header--only-yes-success)](#installation)\n\nModern C++ library for compile-time platform detection and abstraction. Replace fragile `#ifdef` macros with type-safe, zero-overhead API calls.\n\n```cpp\n// ❌ Traditional approach\n#if defined(__GNUC__) || defined(__clang__)\n    result = __builtin_popcount(value);\n#elif defined(_MSC_VER)\n    result = __popcnt(value);\n#endif\n\n// ✅ TRLC Platform approach  \nif constexpr (getCompilerType() == CompilerType::gcc) {\n    result = __builtin_popcount(value);\n} else if constexpr (getCompilerType() == CompilerType::msvc) {\n    result = __popcnt(value);\n}\n```\n\n## Features\n\n- **Zero Runtime Overhead** - All detection happens at compile time using `constexpr`\n- **Type-Safe APIs** - Replace error-prone `#ifdef` with modern C++ templates  \n- **Comprehensive Detection** - OS, compiler, architecture, CPU features, C++ standard\n- **Header-Only** - No compilation required, just include and use\n- **Cross-Platform** - Windows, Linux, macOS, BSD on GCC, Clang, MSVC\n\n## Quick Start\n\n### Install\n```cpp\n// Just include the header\n#include \"trlc/platform/core.hpp\"\n```\n\n### Basic Usage\n```cpp\n#include \"trlc/platform/core.hpp\"\nusing namespace trlc::platform;\n\nint main() {\n    // Platform detection (compile-time)\n    constexpr auto os = getOperatingSystem();\n    constexpr auto compiler = getCompilerType();\n    constexpr auto arch = getCpuArchitecture();\n    \n    if constexpr (os == OperatingSystem::windows) {\n        // Windows-specific code\n    } else if constexpr (os == OperatingSystem::linux_generic) {\n        // Linux-specific code  \n    }\n    \n    // Feature detection\n    if constexpr (hasFeature\u003cLanguageFeature::exceptions\u003e()) {\n        try {\n            riskyOperation();\n        } catch (...) {\n            handleError();\n        }\n    } else {\n        // No exception support - use error codes\n        auto result = safeOperation();\n    }\n    \n    // Runtime CPU features\n    initializePlatform(); // Call once at startup\n    if (hasRuntimeFeature(RuntimeFeature::avx)) {\n        // Use AVX optimizations\n    }\n    \n    return 0;\n}\n```\n\n## Installation\n\n### Header-Only Setup\n```bash\ngit clone https://github.com/tranglecong/trlc-flatform.git\n# Add include/ directory to your compiler's include path\ng++ -I./trlc-flatform/include your_code.cpp\n```\n\n### CMake Integration\n```cmake\n# Method 1: FetchContent (Recommended)\ninclude(FetchContent)\nFetchContent_Declare(\n    trlc-platform\n    GIT_REPOSITORY https://github.com/tranglecong/trlc-flatform.git\n    GIT_TAG main\n)\nFetchContent_MakeAvailable(trlc-platform)\ntarget_link_libraries(your_target PRIVATE trlc::platform)\n\n# Method 2: Submodule\nadd_subdirectory(third_party/trlc-platform)\ntarget_link_libraries(your_target PRIVATE trlc::platform)\n```\n\n## API Reference\n\n### Core Detection Functions\n```cpp\nnamespace trlc::platform {\n    // Platform detection (compile-time)\n    constexpr OperatingSystem getOperatingSystem() noexcept;\n    constexpr CompilerType getCompilerType() noexcept;\n    constexpr CpuArchitecture getCpuArchitecture() noexcept;\n    constexpr CppStandard getCppStandard() noexcept;\n    constexpr bool isLittleEndian() noexcept;\n    constexpr int getPointerSize() noexcept;  // 32 or 64 bits\n    \n    // Feature detection\n    template \u003cLanguageFeature TFeature\u003e\n    constexpr bool hasFeature() noexcept;\n    \n    bool hasRuntimeFeature(RuntimeFeature feature) noexcept; // Runtime\n    \n    // Platform information\n    PlatformReport getPlatformReport() noexcept;\n    void initializePlatform() noexcept; // Call once for runtime features\n}\n```\n\n### Available Enums\n```cpp\nenum class OperatingSystem {\n    windows, linux_generic, macos, freebsd, android, ios, unknown\n};\n\nenum class CompilerType {\n    gcc, clang, msvc, intel, unknown  \n};\n\nenum class CpuArchitecture {\n    x86_64, arm_v8_64, arm_v7_32, unknown\n};\n\nenum class LanguageFeature {\n    exceptions, rtti, threads, atomic_operations, concepts, ranges\n};\n\nenum class RuntimeFeature {\n    sse, sse2, avx, avx2, neon, hardware_aes\n};\n```\n\n## Performance\n\n### Zero Runtime Overhead\n\nThe TRLC Platform Library is designed for zero runtime overhead:\n\n- **Compile-Time Detection**: All platform detection happens at compile time\n- **Template Metaprogramming**: Conditional code paths selected at compile time\n- **Dead Code Elimination**: Unused platform code is completely removed\n- **Constexpr Everything**: Core functions are `constexpr` and fully optimized\n\n### Benchmark Results\n\n| Operation | Execution Time | Overhead |\n|-----------|----------------|----------|\n| Platform detection | 0 ns | **0%** |\n| Feature checking | 0 ns | **0%** |\n| Template specialization | 0 ns | **0%** |\n| Conditional compilation | 0 ns | **0%** |\n\n*Benchmarks performed with GCC 11.4 -O2 on x86_64 Linux*\n\n### Assembly Verification\n\nWith optimizations enabled (`-O2` or higher), all TRLC platform detection calls are:\n- Inlined to compile-time constants\n- Generate no function calls in assembly output\n- Produce optimal machine code equivalent to hand-written constants\n\n## Building and Testing\n\n### Prerequisites\n\n```bash\n# Ubuntu/Debian\nsudo apt install build-essential cmake\n\n# macOS\nbrew install cmake\n\n# Windows (vcpkg)\nvcpkg install cmake\n```\n\n### Build Commands\n\n```bash\n# Clone repository\ngit clone https://github.com/tranglecong/platform.git\ncd platform\n\n# Configure and build\nmkdir build \u0026\u0026 cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake -j$(nproc)\n\n# Run tests\nctest --verbose\n```\n\n### Build Options\n\n```bash\n# Debug build with all assertions\ncmake .. -DCMAKE_BUILD_TYPE=Debug -DTRLC_ENABLE_ASSERTS=ON\n\n# Enable experimental features\ncmake .. -DTRLC_ENABLE_EXPERIMENTAL=ON\n\n# Force portable mode (disable platform-specific optimizations)\ncmake .. -DTRLC_FORCE_PORTABLE=ON\n\n# Disable testing\ncmake .. -DTRLC_BUILD_TESTS=OFF\n```\n\n### Test Suite\n\nThe library includes comprehensive tests covering:\n\n- ✅ **Platform Detection**: All supported platforms, compilers, architectures\n- ✅ **Feature Detection**: Language features, runtime features, capabilities\n- ✅ **Template Metaprogramming**: SFINAE, variadic templates, type traits\n- ✅ **Cross-Platform Compatibility**: Multiple compiler/platform combinations\n- ✅ **Performance**: Zero-overhead verification, assembly output analysis\n- ✅ **Integration**: Real-world usage scenarios, sample applications\n\n```bash\n\n# Run tests with verbose output\nctest --verbose --parallel 4\n\n# Generate coverage report (if configured)\nmake coverage\n```\n\n### Continuous Integration\n\nThe project uses GitHub Actions for CI/CD with testing on:\n- Multiple compilers (GCC, Clang, MSVC)\n- Multiple platforms (Ubuntu, Windows, macOS)\n- Multiple C++ standards (C++17, C++20, C++23)\n- Multiple build configurations (Debug, Release, MinSizeRel)\n\n## Troubleshooting\n\n### Common Issues\n\n#### Compilation Errors\n\n**Problem**: `error: 'constexpr' does not name a type`\n```cpp\n// ❌ Incorrect usage\nauto platform = trlc::platform::getOperatingSystem();  // Runtime call\n\n// ✅ Correct usage\nconstexpr auto platform = trlc::platform::getOperatingSystem();  // Compile-time\n```\n\n**Problem**: `undefined reference` errors when linking\n```bash\n# ❌ Missing threading library\ng++ main.cpp -ltrlc-platform\n\n# ✅ Include required system libraries\ng++ main.cpp -ltrlc-platform -pthread\n```\n\n**Problem**: `hasRuntimeFeature` not available at compile time\n```cpp\n// ❌ Runtime features cannot be constexpr\nif constexpr (trlc::platform::hasRuntimeFeature(RuntimeFeature::avx)) {\n\n// ✅ Use runtime checks for runtime features\nif (trlc::platform::hasRuntimeFeature(RuntimeFeature::avx)) {\n```\n\n#### CMake Integration Issues\n\n**Problem**: `target 'trlc::platform' not found`\n```cmake\n# ❌ Missing dependency\ntarget_link_libraries(my_target trlc::platform)\n\n# ✅ Ensure library is available first\nfind_package(trlc-platform REQUIRED)  # or add_subdirectory()\ntarget_link_libraries(my_target PRIVATE trlc::platform)\n```\n\n**Problem**: Debug utilities not available\n```cmake\n# ✅ Enable debug utilities explicitly\ntarget_compile_definitions(my_target PRIVATE TRLC_PLATFORM_ENABLE_DEBUG_UTILS=1)\n\n# ✅ Or use Debug build type\nset(CMAKE_BUILD_TYPE Debug)\n```\n\n#### Runtime Issues\n\n**Problem**: Runtime feature detection returns false positives/negatives\n```cpp\n// ✅ Initialize platform before using runtime features\nint main() {\n    trlc::platform::initializePlatform();  // Required for runtime features\n    \n    if (trlc::platform::hasRuntimeFeature(RuntimeFeature::avx)) {\n        // Now safe to use AVX\n    }\n}\n```\n\n**Problem**: Performance overhead in Debug builds\n```bash\n# ✅ Use Release builds for performance testing\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake -j$(nproc)\n```\n\n### Debug Tips\n\n#### Verify Compile-Time Detection\n\n```cpp\n#include \"trlc/platform/core.hpp\"\n#include \u003ciostream\u003e\n\nint main() {\n    // Print detected platform information\n    auto report = trlc::platform::getPlatformReport();\n    std::cout \u003c\u003c report.generateReport() \u003c\u003c std::endl;\n    \n    // Verify specific detections\n    constexpr auto os = trlc::platform::getOperatingSystem();\n    constexpr auto compiler = trlc::platform::getCompilerType();\n    constexpr auto arch = trlc::platform::getCpuArchitecture();\n    \n    std::cout \u003c\u003c \"OS: \" \u003c\u003c static_cast\u003cint\u003e(os) \u003c\u003c std::endl;\n    std::cout \u003c\u003c \"Compiler: \" \u003c\u003c static_cast\u003cint\u003e(compiler) \u003c\u003c std::endl;\n    std::cout \u003c\u003c \"Architecture: \" \u003c\u003c static_cast\u003cint\u003e(arch) \u003c\u003c std::endl;\n}\n```\n\n#### Assembly Output Verification\n\n```bash\n# Verify zero overhead with assembly output\ng++ -I./include -std=c++17 -O2 -S your_code.cpp -o output.s\n\n# Look for platform detection function calls (should be none)\ngrep -i \"platform\\|detect\" output.s\n\n# Check that conditionals are optimized away\ngrep -i \"branch\\|jump\\|call\" output.s\n```\n\n#### Template Instantiation Debugging\n\n```cpp\n// Use static_assert to verify compile-time conditions\nstatic_assert(trlc::platform::getOperatingSystem() == trlc::platform::OperatingSystem::linux_generic,\n              \"This code requires Linux\");\n\nstatic_assert(trlc::platform::hasFeature\u003ctrlc::platform::LanguageFeature::threads\u003e(),\n              \"Threading support required\");\n```\n\n### Platform-Specific Notes\n\n#### Windows with MinGW\n\n```cmake\n# Ensure proper Windows detection with MinGW\nif(MINGW)\n    target_compile_definitions(your_target PRIVATE TRLC_MINGW_DETECTED=1)\nendif()\n```\n\n#### macOS with Xcode\n\n```bash\n# Use proper C++ standard library\nexport MACOSX_DEPLOYMENT_TARGET=10.15\ncmake .. -DCMAKE_CXX_STANDARD=17\n```\n\n#### ARM Cross-Compilation\n\n```cmake\n# Set proper architecture detection for cross-compilation\nset(CMAKE_SYSTEM_PROCESSOR aarch64)\nset(CMAKE_CROSSCOMPILING TRUE)\n```\n\n### Getting Help\n\nIf you encounter issues not covered here:\n\n1. **Check the [Examples](examples/)** - Real-world usage patterns\n2. **Review [API Documentation](https://tranglecong.github.io/trlc-platform)** - Comprehensive API reference\n3. **Search [GitHub Issues](https://github.com/tranglecong/trlc-platform/issues)** - Known issues and solutions\n4. **Create a [New Issue](https://github.com/tranglecong/trlc-platform/issues/new)** - Report bugs or request features\n\nInclude in your issue report:\n- Compiler version and platform\n- CMake version and configuration\n- Minimal reproducible example\n- Full error messages and stack traces\n\n## Examples\n\nSee [`examples/portable_library_example.cpp`](examples/portable_library_example.cpp) for a comprehensive demonstration.\n\n```bash\n# Build and run the demo\nmkdir build \u0026\u0026 cd build\ncmake .. \\\n    -DCMAKE_BUILD_TYPE=Debug \\\n    -DTRLC_PLATFORM_BUILD_TESTS=ON \\\n    -DTRLC_PLATFORM_ENABLE_ASSERTS=ON \\\n    -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n\nmake -j$(nproc)\n./portable_library_example\n```\n\n## Contributing\n\nWe welcome contributions to the TRLC Platform Library! Whether you're fixing bugs, adding features, improving documentation, or enhancing platform support, your help is appreciated.\n\n### Development Setup\n\n#### Prerequisites\n\n```bash\n# Ubuntu/Debian\nsudo apt install build-essential cmake git clang-format\n\n# macOS\nbrew install cmake git clang-format\n\n# Windows (using vcpkg)\nvcpkg install cmake\n```\n\n#### Building for Development\n\n```bash\ngit clone https://github.com/tranglecong/platform.git\ncd trlc-platform\n\n# Create development build\nmkdir build \u0026\u0026 cd build\ncmake .. \\\n    -DCMAKE_BUILD_TYPE=Debug \\\n    -DTRLC_PLATFORM_BUILD_TESTS=ON \\\n    -DTRLC_PLATFORM_ENABLE_ASSERTS=ON \\\n    -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n\nmake -j$(nproc)\n```\n\n#### Running Tests\n\n```bash\n# Run all tests\ncd build\nctest --output-on-failure --verbose\n```\n\n### Adding New Platform Support\n\n#### 1. Platform Detection\n\nAdd detection logic to [`include/trlc/platform/platform.hpp`](include/trlc/platform/platform.hpp):\n\n```cpp\n// Add new enum value\nenum class OperatingSystem : int {\n    // ... existing values ...\n    your_new_platform,\n};\n\n// Add detection logic\nconstexpr OperatingSystem detectOperatingSystem() noexcept {\n#if defined(YOUR_PLATFORM_MACRO)\n    return OperatingSystem::your_new_platform;\n#elif defined(EXISTING_PLATFORM)\n    // ... existing detection ...\n```\n\n#### 2. Add Platform Information\n\nUpdate the platform info structure:\n\n```cpp\nconstexpr PlatformInfo getPlatformInfo() noexcept {\n    PlatformInfo info{};\n    // ... existing code ...\n    \n#if defined(YOUR_PLATFORM_MACRO)\n    info.os_name = \"Your Platform Name\";\n    info.kernel_family = \"your_kernel\";\n    info.environment = EnvironmentType::your_env_type;\n    // Set other platform-specific properties\n#endif\n    \n    return info;\n}\n```\n\n#### 3. Add Tests\n\nCreate tests in [`tests/test_platform_detection.cpp`](tests/test_platform_detection.cpp):\n\n```cpp\nTEST_CASE(\"Your Platform Detection\", \"[platform]\") {\n#if defined(YOUR_PLATFORM_MACRO)\n    REQUIRE(getOperatingSystem() == OperatingSystem::your_new_platform);\n    REQUIRE(getPlatformInfo().os_name == \"Your Platform Name\");\n#endif\n}\n```\n### Adding New Compiler Support\n\n#### 1. Compiler Detection\n\nAdd to [`include/trlc/platform/compiler.hpp`](include/trlc/platform/compiler.hpp):\n\n```cpp\nenum class CompilerType : int {\n    // ... existing values ...\n    your_new_compiler,\n};\n\nconstexpr CompilerType detectCompilerType() noexcept {\n#if defined(YOUR_COMPILER_MACRO)\n    return CompilerType::your_new_compiler;\n#elif defined(EXISTING_COMPILER)\n    // ... existing detection ...\n```\n\n#### 2. Add Compiler Capabilities\n\n```cpp\nconstexpr CompilerInfo getCompilerInfo() noexcept {\n    CompilerInfo info{};\n    \n#if defined(YOUR_COMPILER_MACRO)\n    info.type = CompilerType::your_new_compiler;\n    info.name = \"Your Compiler Name\";\n    info.version = detectCompilerVersion();\n    info.has_builtin_attribute = true;  // Set capabilities\n    info.has_inline_assembly = true;\n    // ... other capabilities\n#endif\n    \n    return info;\n}\n```\n\n### Adding New Features\n\n#### 1. Language Features\n\nAdd to [`include/trlc/platform/features.hpp`](include/trlc/platform/features.hpp):\n\n```cpp\nenum class LanguageFeature : int {\n    // ... existing features ...\n    your_new_feature,\n};\n\ntemplate\u003c\u003e\nconstexpr bool hasLanguageFeature\u003cLanguageFeature::your_new_feature\u003e() noexcept {\n#if defined(__cpp_your_feature) \u0026\u0026 __cpp_your_feature \u003e= REQUIRED_VERSION\n    return true;\n#else\n    return false;\n#endif\n}\n```\n\n#### 2. Runtime Features\n\n```cpp\nenum class RuntimeFeature : int {\n    // ... existing features ...\n    your_runtime_feature,\n};\n\n// Add detection logic in FeatureDetector class\nbool hasRuntimeFeature(RuntimeFeature feature) const noexcept {\n    switch (feature) {\n        case RuntimeFeature::your_runtime_feature:\n            return detectYourRuntimeFeature();\n        // ... other cases\n    }\n}\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- C++ standardization committee for modern language features\n- Platform vendors for comprehensive documentation\n- Open source community for testing and feedback\n- Contributors and maintainers\n\n---\n\n**TRLC Platform Library** - Write once, optimize everywhere. 🚀\n\nFor more information, visit our [documentation](https://tranglecong.github.io/trlc-platform) or check out the [examples](examples/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftranglecong%2Ftrlc-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftranglecong%2Ftrlc-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftranglecong%2Ftrlc-platform/lists"}