Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sebastianbach/full-stack
https://github.com/sebastianbach/full-stack
compile-time-testing conan cpp cpp20 docker flask full-stack multi-stage-build python-c-api python3 webassembly
Last synced: 16 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/sebastianbach/full-stack
- Owner: SebastianBach
- License: mit
- Created: 2023-02-13T18:27:52.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-13T09:20:43.000Z (about 1 month ago)
- Last Synced: 2024-10-31T20:07:22.903Z (16 days ago)
- Topics: compile-time-testing, conan, cpp, cpp20, docker, flask, full-stack, multi-stage-build, python-c-api, python3, webassembly
- Language: C++
- Homepage:
- Size: 192 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![builds](https://github.com/SebastianBach/full-stack/actions/workflows/build.yml/badge.svg)](https://github.com/SebastianBach/full-stack/actions/workflows/build.yml)
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.```mermaid
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]
endLIB --> 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]
endPY --> 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](doc/build.md) on how to build the included software.
# Usage
See the [user guide](doc/user_guide.md) on how to use the included software.