Giter Club home page Giter Club logo

cohesive's Introduction

Cohesive logo

Cohesive

Sleek, intuitive, and powerful Blockchain Integrated Development, and Analysis Environment.
Economics | Ergonomics | Aesthetics

Cohesive Preview

Build Qodana License


Convention: In this document, we will use the terms 'platform' and 'blockchain' interchangeably, with the term 'chain' occasionally used as well.

Why?

Blockchain Development introduces a new development paradigm that requires a new set of tools and workflows i.e. Explorer, Wallet and Editor (IDE). Context switching between these tools is expensive in terms of time and space which is a major productivity killer. Cohesive is a single application that provides a unified development environment for Blockchain development.

How?

Cohesive is a meta-tool for developing blockchain applications. It offers a UI framework, plugin store, simple editor, and IDE for easy and efficient development on multiple platforms.

Table of contents

Note: This project is in its early stages of development. The project is not yet ready for production use.

Quick Start

Build a Secondary Plugin for a Specific Platform (Blockchain)

The quickest way to get started is to use this template project. It contains all the necessary files and configurations to get you started.

Cohesive uses encapsulated slot APIs, a pattern akin to Compose' Material components' slot APIs for its customization. Slots leave gaps in the UI for the developer to fill as they wish for the specific Platform implementation. The template project contains a sample implementation of the encapsulated slot APIs for the Ethereum Platform.

/**
 * This code defines a [MainView] class that extends the [CohesiveView] class and is annotated with the [Cohesive] annotation.
 * The [Cohesive] annotation takes three arguments:
 *
 * - [platform]: a string specifying the platform that the view is designed for. In this case, the platform is "Ethereum".
 * - [version]: a string specifying the version of the platform. In this case, the version is "1.0.0".
 * - [nets]: an array of [Net] objects, each of which specifies a network and its corresponding URL.
 *   In this case, there are two networks specified: "mainnet" and "ropsten".
 *
 * The [MainView] class also has four abstract methods: [Explorer], [Wallet] and others, which can be implemented by any class that extends [MainView].
 * These methods are annotated with the [Composable] annotation, which indicates that they are meant to be used with the Compose framework.
 */
@Cohesive(
  platform = "Ethereum",
  version = "1.0.0",
  nets = 
    [
      Net(
        k = "mainnet",
        v = "https://mainnet.infura.io/v3/your-api-key"
      ), 
      Net(
        k = "ropsten",
        v = "https://ropsten.infura.io/v3/your-api-key"
      ),
    ],
)
class MainView : CohesiveView {
    @Composable
    override fun Explorer() {
        //TODO Your Ethereum Explorer implementation goes here
    }
    @Composable
    override fun Wallet() {
        //TODO Your Ethereum Wallet implementation goes here
    }
}

More information can be got here.

Build locally

Running Base Desktop Application

./gradlew :cmpe:desktop:run

Building Base native desktop distribution

./gradlew :cmpe:desktop:package
# outputs are written to cmpe/desktop/build/compose/binaries

Running Base Web Application

./gradlew :cmpe:web:jsBrowserRun

Distribute Base Web Application

./gradlew :cmpe:web:jsBrowserDistribution 
# and then open index.html (build/distributions)

What's included

This repository contains a Kotlin Multiplatform project with apps and libraries for multiple platforms:

  • Web Application
  • Desktop Application
  • Android Application
  • iOS Application (WIP)

Features

  • Multiplatform
  • Multi-Blockchain
  • Platform Plugin Store (primary, secondary and tertiary)
  • Simple Editor
  • IDE
  • UI Framework(s)

Roadmap

Always building, always improving.

Design Philosophy

Simple, intuitive, and powerful.

Contribution

All contributions to Cohesive are welcome. Before opening a PR, please submit an issue detailing the bug or feature. When opening a PR, please ensure that your contribution builds on the KMM toolchain, has been linted with ktfmt <GOOGLE (INTERNAL)>, and contains tests when applicable. For more information, please see the contribution guidelines.

cohesive's People

Contributors

astinz avatar emeieiron avatar

Stargazers

Mario Fortier avatar Nicholas Reich avatar

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.