Skip to content

Software engineers are now required to learn multiple languages, technologies, and frameworks in order to fully support full stack engineering. This project aims to simplify by developing a set of cross platform modules implementing a similar / identical Application Program Interface (API) regardless of the chosen technology .

License

Notifications You must be signed in to change notification settings

CodeMelted/codemelted_developer

Repository files navigation

CodeMelted - Developer

"Write once, run anywhere (WORA)" was the famous slogan made by Sun Microsystems in 1995. At the time, this technology allowed for easy full stack engineering allowing you to target dedicated workstations and on premise servers. So long as a Java Runtime Environment existed, you could run your code. Java was unable to keep to their slogan as web browsers became more advanced, mobile devices became ubiquitous, and companies no longer required dedicated servers.

Software engineers are now required to learn multiple languages, technologies, and frameworks in order to fully support full stack engineering. This project aims to simplify by developing a set of cross platform modules implementing a similar / identical Application Program Interface (API) regardless of the chosen technology covered by this project. This allows a developer to maximize their productivity because regardless of the technology, they are learning a similar module API for their solution.

Table of Contents

FEATURES

---
title: Use Case Model
---
flowchart TD
    subgraph ucModel[Use Cases]
        subgraph Core
            ucDataBroker([Data Broker])
            ucFetch([Fetch])
            ucLinkOpener([Link Opener])
            ucLogger([Logger])
            ucMath([Math])
            ucRuntime([Runtime])
            ucShare([Share])
            ucStorage([Storage])
        end
        subgraph User Interface
            ucAppView([App View])
            ucConsole([Console])
            ucDialog([Dialog])
            ucThemes([Themes])
            ucWidgets([Widgets])
        end
        subgraph Advanced
            ucAsyncIO([Async IO])
            ucAudioPlayer([Audio Player])
            ucDatabase([Database])
            ucDeviceOrientation([Device Orientation])
            ucDeviceHardware([Device Hardware])
            ucFileManager([File Manager])
            ucNetworkSockets([Network Sockets])
            ucWebRTC([Web RTC])
        end
    end
    subgraph sdk[SDK]
        pwsh[[pwsh]]
        javascript[[javascript]]
        flutter[[flutter]]
        C[[C/C++]]
    end
    subgraph os[Operating System]
        app[[app]]
        disk[(disk)]
        network((network))
        display{{display}}
        hardware[\hardware/]
    end
    Developer--Develops With-->ucModel
    pwsh--FFI-->C
    javascript--FFI-->C
    flutter--FFI-->C
    ucModel--Implemented In-->sdk
    sdk--Targets-->app
    app--Accesses-->disk
    app--Accesses-->network
    app--Accesses-->display
    app--Accesses-->hardware
    appUser[App User]--Uses-->app

Core

The core set of use cases represent the most common actions you will carry out when developing an application.

User Interface

The user interface set of use cases solidifies the ability to have a standard set of actions to interact with your user without limiting you from utilizing the options available in a given SDK module.

Advanced

The advanced set of use cases offer more complex actions a developer may need to carry out in their application. This aims to simplify the complexity of the given actions.

GETTING STARTED

The following sections capture how to setup and utilize this repo with your local clone.

Environment Setup

The following are the items recommended for installation to properly make use of this repo in your development environment.

GitHub

Programming Languages

VS Code

The Application:

Extensions:

Versioning

The versioning of the module will be captured via GitHub or the modules documentation method. It will utilize semantic versioning X.Y.Z with the following rules for the numbering scheme this project.

  • X: Completion of either Core / User Interface / Advance set of use cases.
  • Y: Use case implemented, documented, tested, and ready for usage by a developer.
  • Z: Bug fix or expansion of a use case.

Build Script

The build.ps1 script provides the ability to build different elements of this project. Execute the command option below from the root of the codemelted_developer repo to get the specified result.

  • ./build.ps1 --cdn: Builds all the other options to a _dist directory allowing for a severable static website.
  • ./build.ps1 --codemelted_cpp: Compiles the modules to a dynamic linked library and generates its SDK documentation.
  • ./build.ps1 --codemelted_developer: Converts the README.md and use_cases/ to a static website.
  • ./build.ps1 --codemelted_flutter: Compiles the module and generates its SDK documentation.
  • ./build.ps1 --codemelted_js: Compiles the module to serve from a website and generates its SDK documentation.
  • ./build.ps1 --codemelted_pwsh: Compiles the PowerShell module to be installed on your system and generates its SDK documentation.
  • ./build.ps1 --raspberry_pi: Generates a static website of the raspberry pi README.md and supporting markdown files.

USAGE

Cross Platform Modules

The following are the cross platform modules implementing the identified use cases of this project. It provides several choices for your development needs. The following links take to the specific module implementations for your given domain.

  • C/C++ Module: This project aims to implement the use cases from the CodeMelted - Developer project allowing for a need of speed in an application. It will be developed with a C header interface and a C++ implementation. This allows for the easiest integration into other modules via a Foreign Function Interface (FFI). It will also support web assembly for usage in the web browser. Last but not least, you can use it as its own compilable target for embedded / desktop / server implementations.
  • Flutter Module: This project aims to provide a developer with the ability to build client applications regardless of deployment target. Those deployment targets include desktop, mobile, and web. By leveraging the CodeMelted - Developer identified use cases, you can be assured to building a powerful native application.
  • JS Module: This project aims to give a common fullstack solution for Progressive Web Applications (PWA) utilizing the CodeMelted - Developer use cases. It utilizes the Deno Runtime to run as your backend service. This was chosen as it has a full range of services for your backend if you choose to utilize it. You can also take your backend and host it on a different platform. This allows you to not be locked into a vendor for your backend. It was also chosen because it implements the Browser Web APIs. This allows the module to implement backend and web frontend common code developing a more complete solution. Lastly, Deno provides the use of TypeScript natively out of the box. So you are able to utilize both JavaScript / TypeScript for your solution and roll with any build system.
  • pwsh Module: This project aims to implement CodeMelted - Developer use cases with the terminal in mind. The terminal serves as the place developers string together Dev OPS or automated solutions to users. With this in mind, PowerShell Core was chosen as the target platform. The reason for this is it has full support for Linux, Mac, and Windows allowing for a common scripting language regardless of the operating system.

CodeMelted Pi Project

  • CodeMelted Pi Project: This project aims to utilize the different CodeMelted - Developer modules as services on a Raspberry Pi. These services aim to allow a user to yield different configurations to utilize the Raspberry Pi. The identified services will include getting GPS coordinates, taking still frame pictures tagged with the GPS information, taking video to serve as a dash cam or web camera, provide infotainment within a vehicle, the ability to interface with the raspberry pi via the Internet, and finally, as a sky watching camera for nighttime astronomy.

LICENSE

MIT License

© 2024 Mark Shaffer

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Software engineers are now required to learn multiple languages, technologies, and frameworks in order to fully support full stack engineering. This project aims to simplify by developing a set of cross platform modules implementing a similar / identical Application Program Interface (API) regardless of the chosen technology .

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published