Codee (Code editor) - Mobile IDE for developing Kotlin, Java and other projects.

Overview

Codee App

Codee (Code editor) - Mobile IDE for developing Kotlin, Java and other projects. Fully written on Kotlin!

🚀 Motivation

There are currently no good and flexible development environments for Android-based mobile devices, so this application will have to solve this problem.

💡 TODO

  • Convenient and flexible API for plugins
  • Clear and beautiful interface
  • Code editor without lags (as much as possible)
  • Default plugins for Kotlin & Java
  • Gradle support (as plugin)

📄 License

This application is absolutely free and using MIT license.

You might also like...
NotesApp is a project which demonstrates the power of Kotlin's Ktor in developing powerful REST APIs with all basic as well as advanced features.

NotesApp NotesApp is a project which demonstrates the power of Kotlin's Ktor in developing powerful REST APIs with all basic as well as advanced featu

Udacity Free course: Developing Android Apps with Kotlin
Udacity Free course: Developing Android Apps with Kotlin

Room - SleepQualityTracker app This is the toy app for Lesson 6 of the Android App Development in Kotlin course on Udacity. SleepQualityTracker The Sl

The Sleep tracker app for lesson 6 of the Udacity: Developing Android Apps with Kotlin Course
The Sleep tracker app for lesson 6 of the Udacity: Developing Android Apps with Kotlin Course

App Architecture-Presistence This is the Sleep tracker app for lesson 6 of the U

AboutMe - From Udacity course Developing Android Apps with Kotlin
AboutMe - From Udacity course Developing Android Apps with Kotlin

AboutMe App From Udacity course "Developing Android Apps with Kotlin".

The bullet proof, fast and easy to use adapter library, which minimizes developing time to a fraction...
The bullet proof, fast and easy to use adapter library, which minimizes developing time to a fraction...

FastAdapter The FastAdapter is here to simplify creating adapters for RecyclerViews. Don't worry about the adapter anymore. Just write the logic for h

Barista makes developing UI test faster, easier and more predictable. Built on top of Espresso
Barista makes developing UI test faster, easier and more predictable. Built on top of Espresso

Barista makes developing UI test faster, easier and more predictable. Built on top of Espresso, it provides a simple and discoverable API, removing most of the boilerplate and verbosity of common Espresso tasks. You and your Android team will write tests with no effort.

Android project setup files when developing apps from scratch. The codebase uses lates jetpack libraries and MVVM repository architecture for setting up high performance apps

Android architecture app Includes the following Android Respository architecture MVVM Jepack libraries Carousel view Kotlin Kotlin Flow and Livedata P

An application I am following in a Udemy course to get experience developing an e-commerce using PayPal and Mercado Libre Pago
An application I am following in a Udemy course to get experience developing an e-commerce using PayPal and Mercado Libre Pago

🏪 E-Commerce 🗂 Table of Contents General Infomation Technologies Used Features

Filmesflix - Project made during the NTT DATA Android Developer bootcamp. Developing knowledge in MVVM and Clear Architecture
Filmesflix - Project made during the NTT DATA Android Developer bootcamp. Developing knowledge in MVVM and Clear Architecture

FilmesFlix Projeto criado para o módulo de MVVM e Clean Architecture no Bootcamp

UltimateAndroid is a rapid development framework for developing your apps
UltimateAndroid is a rapid development framework for developing your apps

UltimateAndroid Version:0.10.2 UltimateAndroid is a rapid development framework for developing apps Master branch: Dev branch: V0.7.0 Ui Demo screensh

A Gradle plugin that improves the experience when developing Android apps, especially system tools, that use hidden APIs.

A Gradle plugin that improves the experience when developing Android apps, especially system tools, that use hidden APIs.

Artifactory is a gradle plugin to assist in developing Minecraft mods that can target different modloaders.

Artifactory Artifactory is a gradle plugin to assist in developing Minecraft mods that can target different modloaders. Currently, Fabric and Forge ar

A work-in-progress quiz app I started developing for a client but got paused.
A work-in-progress quiz app I started developing for a client but got paused.

quiz-app A work-in-progress quiz app I started developing for a client but got paused. Background This app was intended to be a trivia app where users

Graphfity is a Gradle Plugin which creates a dependency node diagram graph about your internal modules dependencies, specially useful if you are developing a multi-module application
Graphfity is a Gradle Plugin which creates a dependency node diagram graph about your internal modules dependencies, specially useful if you are developing a multi-module application

Graphfity creates a dependency nodes diagram graph about your internal modules dependencies, specially useful if you are developing a multi-module app

A creatively named utility for developing biome configurations for Terra
A creatively named utility for developing biome configurations for Terra

Biome Tool Biome Tool is a creatively named utility for developing biome configurations for Terra This is a simple dummy platform implementation that

Make your IDE play Wilhelm Scream effect when you are using unsafe !! operator in Kotlin

Make your IDE play Wilhelm Scream effect when you are using unsafe !! operator in Kotlin

Android Library to make it easy to create CodeEditor or IDE that support any languages and themes
Android Library to make it easy to create CodeEditor or IDE that support any languages and themes

CodeView Android Library to make it easy to create your CodeEditor or IDE for any programming language even for your programming language, just config

Open-source telematics app for Android. The application is suitable for UBI (Usage-based insurance), shared mobility, transportation, safe driving, tracking, family trackers, drive-coach, and other driving mobile applications
Open-source telematics app for Android. The application is suitable for UBI (Usage-based insurance), shared mobility, transportation, safe driving, tracking, family trackers, drive-coach, and other driving mobile applications

TelematicsApp-Android with Firebase© integration Description This Telematics App is created by DATA MOTION PTE. LTD. and is distributed free of charge

Easy setup of static analysis tools for Android and Java projects.

[DEPRECATED] Gradle static analysis plugin ⚠️ A fork of this project is maintained at https://github.com/GradleUp/static-analysis-plugin/ Please migra

Comments
  • Fix API for plugins

    Fix API for plugins

    Now everything works due to the perpetual registration of plugins, themes, and so on. At a minimum, plugins should not be registered, so you need to implement custom receivers for scripts.

    enhancement priority:high 
    opened by y9vad9 1
  • Interaction between plugins

    Interaction between plugins

    How it would be: will be solved by moving the interface for the interaction of the plugin-consumer with theplugin-supplier into a separate library that will be hosted somewhere.

    Plugin-supplier API:

    There is interface that will be implemented by plugin-supplier and used by plugin-consumer. This interface and linked objects will be separately in jar that will be hosted on codee maven.

    interface PluginA {
       fun foo(): Foo
       fun bar(foo: Foo): Bar
    }
    

    Somewhere in script:

    @file:DependsOn("there path to artifact with PluginA interface")
    
    ...
    
    plugins.api.register<PluginA>(object : PluginA {
      override fun foo(): Foo = MyFoo()
      override fun bar(foo: Foo): Bar = foo.toBar()
    }, CompatibilitySettings(version = 1))
    

    Plugin-consumer

    Plugin-consumer takes interface and calls some function.

    plugins.api.withType<PluginA>(version = 1).onSuccess {
      foo().apply { /* some stuff */ }
    }.onError {
       throw RuntimeException("Stub!")
    }
    

    Also, it can be used to provide some handlers from the app in new updates to keep back compatibility.

    Synchronization of executions

    Since a situation may occur when the plugin-consumer is executed before theplugin-supplier, I propose the following solution in the form of a callback:

    plugins.afterEvaluation {
        plugins.api.withType<PluginA>(version = 1) {
             foo()
        }
    }
    

    Action / Value dependence

    Then imagine the following case: we have plugin-A, which depends on plugin-B. We also have plugin-C, which is awaiting some actions from plugin-A (which cannot perform them until it receives some value from plugin-B). All this can be solved by providing plugin-C some kind of callback, for example:

    plugin-C

    In separated library:

    interface PluginCCallbacks {
        val value: String get() {
            runBlocking { delay(10000L) }
            return "value"
        }
    }
    

    In script:

    plugins.api.register<PluginCCallbacks>(object : PluginCCallbacks, CompatibilitySettings(currentVersion = 1))
    

    plugin-A

    In separated library:

    interface PluginACallbacks {
        fun setOnActionFinished(handler: () -> Unit)
    }
    

    In script:

    val callbacks = object : PluginCCallbacks {...} 
    plugins.api.register<PluginACallbacks>(callbacks, CompatibilitySettings(...))
    plugins.afterEvaluation {
        plugins.withType<PluginCCallbacks>(version = 1) {
            var _ = value
            // lets notify all subscribers that action finished (pseudo-method)
            callbacks.notifyOnActionFinished()
        }
    }
    

    plugin-C

    In script:

    plugins.afterEvaluation {
        plugins.withType<PluginACallbacks>(version = 1) {
            setOnActionFinished {
                // plugin-A finished it's work
            }
        }
    }
    

    Backward compatibility

    To ensure the stability of the plugins when interacting, you must use CompatibilitySettings:

    val settings = CompatibilitySettings(
        minVersion = 1, maxVersion = 3, currentVersion = 2
    )
    // and apply it while registering:
    plugins.api.register(IApi, settings)
    
    enhancement priority:normal 
    opened by y9vad9 0
  • Remove `buildscript` from gradle

    Remove `buildscript` from gradle

    You can extend classpath via the implement function in buildSrc, I will soon release new kds version with android and without src, so you can check it

    priority:low flaw 
    opened by y9san9 0
Owner
Codee
Working on a new mobile IDE: Codee.
Codee
Advent of code 2021 (unofficial) in Kotlin for Educational Plugin on Jetbrains IntelliJ IDE.

Kotlin Advent of Code 2021 (unofficial) DISCLAIMER: I am not affiliated with the official Advent of code event or website. To open this course, you ne

null 1 Dec 10, 2021
Manage pull requests and conduct code reviews in your IDE with full source-tree context.

String Manipulation IntelliJ plugin - https://plugins.jetbrains.com/plugin/2162 Sponsored by Manage pull requests and conduct code reviews in your IDE

Vojtěch Krása 582 Dec 22, 2022
A Android Web IDE supports code auto-completion and highlight, plugin (Supports Html, Css, JS, Json, Php etc)

WebDevOps A Android Web IDE supports code auto-completion and highlight, plugin (Supports Html, Css, JS, Json, Php etc) Join us QQ group number: 10314

SuMuCheng 22 Jan 3, 2023
Grab’n Run, a simple and effective Java Library for Android projects to secure dynamic code loading.

Grab’n Run, a simple and effective Java Library for Android projects to secure dynamic code loading.

Luca Falsina 418 Dec 29, 2022
A plugin for Jetbrains IDE, Your code is powerful, unleash it like playing osu!

Osu! Mode A plugin for Jetbrains IDE, Your code is powerful, unleash it like playing osu! Demo 2021-10-15.18-50-30.mp4 Bilibili Feature open project /

Nthily 8 Sep 8, 2022
JBytedit - Java bytecode editor

JBytedit - Java bytecode editor JBytedit was a free, fully featured graphical Java Bytecode editor made by (Matthew Dupraz). This is an archival copy

null 1 Jan 22, 2022
KodeEditor - A simple code editor with syntax highlighting and pinch to zoom

KodeEditor - A simple code editor with syntax highlighting and pinch to zoom

Markus Ressel 65 Oct 28, 2022
A desktop code editor app using Jetpack Compose for Desktop and IntelliJ Platform

Compose Code Editor A desktop code editor app using Jetpack Compose for Desktop and IntelliJ Platform. Project Structure The code is contained in the

Alex 73 Dec 19, 2022
Turtle Graphics 🐢 implementation for Android Platform with Code Editor, Preview Screen and packages

Turtle Graphics Download Turtle is an Android Application inspired from the original Turtle Graphics and Logo, Logo is an educational programming lang

Amr Hesham 15 Dec 30, 2022