Coder Social home page Coder Social logo

sebastianbach / full-stack Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 174 KB

License: MIT License

CMake 19.21% Dockerfile 0.44% Shell 5.03% Python 11.20% C++ 51.03% C 0.52% HTML 1.00% Batchfile 1.00% PowerShell 0.13% JavaScript 1.11% CSS 0.35% Rust 1.50% Assembly 2.66% Java 2.67% Makefile 0.40% Jupyter Notebook 1.75%
cpp cpp20 docker full-stack multi-stage-build python-c-api python3 flask compile-time-testing conan webassembly

full-stack's Introduction

builds

Coverage: https://sebastianbach.github.io/full-stack/coverage.html

About

You have a simple, nice, useful C++ function. How do you make it available to consumers?

Content

The full stack contains:

  • A C++ header-only library with a constexpr function.
  • A compile-time unit test that tests the above function.
  • A command line utility to handle command line arguments to the function.
  • A Python UI application that provides a front-end to this command-line tool.
  • A command line tool to handle interactive data with the function.
  • A command line tool to process the contents of a given file with the function.
  • A static library encapsulating the function.
  • A unit test for this static library.
  • A sample project for this static library.
  • A C++ QT5 UI application based on the static library.
  • A Conan 2 package containing the static library.
  • A test for this Conan package.
  • A dynamic library.
  • A unit test for this dynamic library.
  • A Python UI application that uses this dynamic library.
  • A Python-based Flask web application that provides a web interface and REST API to the above command line tool.
  • An HTML/JavaScript front-end that queries the above REST API.
  • A Docker container containing the above Flask web application.
  • A Python module implemented using the Python C API.
  • A unit test that tests this module.
  • A Sphinx documentation for this module.
  • A Jupyter notebook showing how to use this module.
  • A marimo notebook using this module.
  • A Python UI application that uses this module.
  • A WebAssembly binary library and associated JavaScript code.
  • An HTML/JavaScript frontend that uses the above WebAssembly library.
  • A static library that implements a custom scripting language.
  • A unit test for this static library.
  • A console application for that scripting language.
  • An interpreter that executes scripts in the custom scripting language.
  • A Python-based IDE front-end for this script interpreter.
  • A compiler that converts scripts in the custom scripting language into bytecode.
  • A runtime that executes this bytecode.
  • A transcompiler that creates Python or C++ code based on a given script written in the custom scripting language.
  • A C-wrapper library for the C++ function.
  • A unit test that tests this C-wrapper library.
  • A program written in Assembly language that utilizes this C-wrapper library.
  • A Rust command line tool calling the C-wrapper library function.
  • A Java Native Interface Library to extend Java.
  • A unit test for that library.
  • A Java command line tool using that library.
  • A Windows utility library.
  • A unit test for this utility library.
  • A Windows system tray app using the utility library.
  • An Android app.
  flowchart LR;

    F(C++ Function) --> CUT[Compile Time Unit Tests];

    F --> CLI1[Command Line Tool A]
    F --> CLI2[Command Line Tool B]
    F --> CLI3[Command Line Tool C]

    CLI1 --> PYAPP2[Python UI App]

    F --> LIB(Static Library)
    
    subgraph SDK
    LIB --> DOXYGEN(Doxygen Documentation)
    LIB --> LIBEX[Static Lib Example Project]
    end

    LIB --> LIBTEST[Static Library Unit Test]
    LIB --> C(Conan Package)

    LIB --> QTCPP[C++ UI App]

    F --> DLL(Dynamic Library)
    DLL --> DLLTEST[Dynamic Library Unit Test]
    DLL --> QTPYDLL[Python UI App]

    C --> CT[Conan Package Test]

    F --> PY(Python Module)

    subgraph docker container
    CLI1 --> SERVER[Flask Web-App]
    SERVER --> FRONT[Front End]
    end

    PY --> PYTEST[Python Module Unit Test]
    PY --> SPHINX(Sphinx Documentation)
    PY --> NOTEBOOK[Jupyter Notebook] 
    PY --> MARIMO[Marimo Notebook]  
    PY --> PYAPP[Python UI App]

    F --> WASM(WebAssembly + JavaScript)

    WASM --> WASMF[Front End]

    F --> SCRIPTLIB(Script Library)

    SCRIPTLIB --> SCRIPT_TEST[Script Library Unit Test]
    SCRIPTLIB --> SCRIPT_CONSOLE[Console]
    SCRIPTLIB --> SCRIPT_INTERPRETER[Interpreter]
    SCRIPT_INTERPRETER --> SCRIPT_IDE[IDE]
    SCRIPTLIB --> SCRIPT_COMPILER[Compiler]
    SCRIPTLIB --> SCRIPT_RUNTIME[Runtime]
    SCRIPTLIB --> SCRIPT_CONVERT[Transcompiler]

    F --> CWRAPPER(C Wrapper Lib)
    CWRAPPER --> CWRAPPER_TEST[C Wrapper Unit Test]
    CWRAPPER --> RUST_APP[Rust Command Line Tool]  
    CWRAPPER --> ASM[Assembly Program] 

    F --> JAVA_LIB(Java Native Interface Library)
    JAVA_LIB --> JAVA_UNIT_TEST[Java Unit Test]  
    JAVA_LIB --> JAVA_APP[Java CLI Tool] 

    F --> WIN_LIB(Windows Utility Library)
    WIN_LIB --> WIN_LIB_TEST[Library Unit Test]
    WIN_LIB --> WIN_TRAY[Windows System Tray Tool]

    F --> ANDROID[Android App] 

Build

See the build instructions on how to build the included software.

Usage

See the user guide on how to use the included software.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.