Trello inspired kanban board made with the Godot Engine and GDScript, powered by an online real-time collaborative backend (Elixir and Phoenix Channels)

Godello (aka GodoTrello) Godot 3.2 Donate using PayPal Become a patron

Trello inspired kanban board made with the Godot Engine and GDScript, powered by an online real-time collaborative backend made with Elixir and Phoenix Channels (with the possibility of additional backend languages and frameworks). ATTENTION: 70% done. Remaining WIP in the branch integrate_elixir. See "Progress" below.

Godello Drag and Drop + Reactive Example

Table of Contents

Introduction Video

Video

Motivation 💡

A Godot Engine proof of concept for:

  • Business applications
  • Advanced GUI
  • Complex data architecture and data modeling
  • Real-time online data flow
  • Connected multi-user collaborative interfaces and interactions

In the end, the idea is to showcase Godot as a viable option for native Desktop applications and tools, no matter how simple or complex/advanced the application and the interface are.

Features 🎛️

  • Trello-like interface, data organization and interactions:
    • Support for multiple Kanban Boards with Lists and Cards
    • Ordering and positioning of Lists and Cards by dragging and dropping
    • In place editing (example: clicking a card's title to edit it)
    • Support for hundreds of lists and cards in the same board, without loss of frame rate
    • Card description and TODO list
  • Repository data design pattern
  • Reactive React-like, pseudo two-way data binding and data propagation using Godot's signals.
  • Real-time online connectivity and multiple user collaboration using Godot's WebSockets.
    • The backend layer is implemented using an agnostic BackendAdapter, this way any backend language and framework can be used. The BackendAdapter even allows to remove the usage of WebSockets and use only HTTP or local calls.
    • The main backend implementation is made with Elixir + Phoenix Channels backed by a PostgreSQL database. Communication with Godot is done using the library GodotPhoenixChannels.
  • Multi-user presence detection
  • User account flow (sign-up and login)
  • Multi-resolution responsive and expansible interface
    • Interface elements are all implemented with Godot's Control nodes, inside Container nodes, there is no usage of Node2D's nodes.

Progress 🚧

What is finished

  • The GodotEngine frontend:
    • Trello-like interface and all its local interactions, including the dragging and dropping of Lists and Cards.
    • The main data architecture, with reactive, two way data bindings and the Repository design pattern.
    • Scene flow.
  • The Elixir + Phoenix Channels backend, backed by a PostgreSQL database (it's in the branch backend_elixir, still not merged into master).

Work in progress

  • The real-time connectivity and multi-user collaboration via the integration with the Elixir backend is currently a work in process in the branch integrate_elixir.
  • Since the frontend in the master branch is not integrated with the backend, no data is persisted (all data is lost as soon as the application is closed and the application is opened as a blank canvas).
  • Although the data architecture is finished in the frontend, the work in the integrate_elixir branch is constantly making changes to it, to better accomodate the needs of the backend integration.

Roadmap 🗺️

  • Finish the Elixir + Phoenix Channels integration.
  • Code refactoring following Godot's style guide.
  • Immutable reactivity, Redux-like.
    • This will allow for undos and redos, as well optimistic UI interactions.
  • Optimistic UI updates.
    • Currently it's inbetween optimistic and pessimistic.
  • A course titled "Creating Advanced Interfaces and connected Business Applications with Godot" where we build this project from scratch
    • Instead of a course, process videos could be an option
  • Additional Trello features:
    • Share boards publically without inviting individual members (via a code that can be typed into the Godot application)
    • Card file attachments
  • User account improvements:
    • Password recovery
    • Profile management (update user profile and credentials)
  • Additional backends and backend adapters:
    • Node.js (Express + socket.io)
    • Kotlin (Ktor)
    • PHP (Laravel)

Sponsorship and Donations ❤️

You can support my open-source contributions and this project on Patreon or with a PayPal donation. Patrons and donors of any tier will have their name listed here. Patrons of the Sponsors tier or higher, can also have a link and a logo listed here.

  • Mike King

Updates 📡

For news and more code and art experiments and prototypes:

License ⚖️

MIT License - Copyright (c) 2020 Alfred Reinold Baudisch

Owner
Alfred Reinold Baudisch
Senior software engineer with 26 years of development experience. Working exclusively with Elixir and Phoenix since 2015.
Alfred Reinold Baudisch
Comments
  • Refactoring code according to Godot coding style guide.

    Refactoring code according to Godot coding style guide.

    Hi, i followed this project for some time and wanted to contribute with this pull request. I implemented a working version with a local backend for a single user.

    In preparation for this i tried to refactor the code as mentioned in one of the issues #10 according to Godot's coding style guide, including the renaming of the files to snake_case.

    Additionally i dealt with all the existing warnings mentioned in issue #13 by either add "ignore" comments in case of signals or implemented a simple error logging system for unused return values.

    Finally i added a .gdignore file to the doc folder so it won't be visible in the Editor and ignored by the importer.

    I hope this project is still alive and will see further development. It is a great idea to create our own tools with Godot to assist our daily development.

  • Use the Dummy audio driver as Godello doesn't play any sounds

    Use the Dummy audio driver as Godello doesn't play any sounds

    This prevents Godot from appearing as an application playing sound while Godello is running. This also decreases CPU usage (especially on macOS due to a known engine bug).

  • Put Download Link/File In Github Page

    Put Download Link/File In Github Page

    I'm Sorry If It is there already but I can't find one. It will be good to put it in README.md.

    Nice Work Anyway! I Didn't Think About Making An App (Not A Game) Using Godot!

  • Working implementation of local backend stored data

    Working implementation of local backend stored data

    After merging my local_backend branch into master i resolved the conflicts that occurred because of my badly implemented error handling implementation by using all origin master files instead of local.

    Non the less, i had updated the error handling a while back to use push_error method instead of just a prints statement to appear in the logs, this way they are logged in the log file and are helpful in debugging inside the Godot editor and debug window.

    This branch features a new login screen that offers a rudimentary backend choice that can be further expanded into a detailed configuration of the implemented backends eg. connection strings to existing servers, multiple local accounts etc.

    Another implemented feature is a local config file that stores all the settings options and is loaded upon starting the app. It is implemented through a new singleton class "app_manager" that manages the applications configuration and startup values.

  • local use of godello

    local use of godello

    hi! i just wanted to know if there is some way that i can use godello just on my local computer

    As far as I understand, no data in godello is currently saved, because you still work in the backend, but I would like to use it simply for personal organization (without the need to log in or internet connectivity, only local use) and save everything on my pc

    So I would like to know if this is something that may be added in the future, or simply cannot be due to the way it is done.

    In any case, the project is great, keep up the excellent work!

io-hat go board source code

io-hat go Kaip veikia Kaip paruošti Raspberry Pi Šaltiniai io-hat go Kaip veikia Įėjimų statusas publikuojamas periodiškai ir kai pasikeičia reikšmė s

Dec 24, 2021
Moby Project - a collaborative project for the container ecosystem to assemble container-based systems
Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

The Moby Project Moby is an open-source project created by Docker to enable and accelerate software containerization. It provides a "Lego set" of tool

Jan 8, 2023
Simple Kubernetes real-time dashboard and management.
Simple Kubernetes real-time dashboard and management.

Skooner - Kubernetes Dashboard We are changing our name from k8dash to Skooner! Please bear with us as we update our documentation and codebase to ref

Dec 28, 2022
Nba-simulation - Golang will be simulating nba match and streaming it real time

NBA Simulation golang in-memory To build and run go build ./nbaSimulation To ru

Feb 21, 2022
Reconstruct Open API Specifications from real-time workload traffic seamlessly
Reconstruct Open API Specifications from real-time workload traffic seamlessly

Reconstruct Open API Specifications from real-time workload traffic seamlessly: Capture all API traffic in an existing environment using a service-mes

Jan 1, 2023
A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, views, avg. earnings etc.
A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, views, avg. earnings etc.

Youtube-channel-monitor A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, view

Dec 30, 2021
Taina backend Backend service With Golang

taina-backend Backend service Getting Started Essential steps to get your backend service deployed A helloworld example has been shipped with the temp

Nov 17, 2021
Acropolis Backend is the Go backend for Acropolis - the central management system for Full Stack at Brown
Acropolis Backend is the Go backend for Acropolis - the central management system for Full Stack at Brown

Acropolis Backend Acropolis Backend is the Go backend for Acropolis — the centra

Dec 25, 2021
Go-backend-test - Creating backend stuff & openid connect authentication stuff in golang

Go Backend Coding Practice This is my practice repo to learn about creating back

Feb 5, 2022
Oct 7, 2022
Experimentation for backend on GCP's App Engine

gcp-app-engine-go Experimentation for backend on GCP's App Engine Archived. App Engine project with multiples services and CI/CD setup: default (hello

Jan 15, 2022
dfg - Generates dockerfiles based on various input channels.

dfg - Dockerfile Generator dfg is both a go library and an executable that produces valid Dockerfiles using various input channels. Table of Contents

Dec 23, 2022
A telegram bot to ban unknown channels chat

Test Bot A telegram bot to ban unknown channels chat. Vars TOKEN - Your Telegram

Dec 26, 2021
CPU usage percentage is the ratio of the total time the CPU was active, to the elapsed time of the clock on your wall.

Docker-Kubernetes-Container-CPU-Utilization Implementing CPU Load goroutine requires the user to call the goroutine from the main file. go CPULoadCalc

Dec 15, 2021
A simple tool who pulls data from Online.net API and parse them to a Prometheus format

Dedibox backup monitoring A simple tool who reads API from Online.net and parse them into a Prometheus-compatible format. Conceived to be lightweight,

Aug 16, 2022
GoScanPlayers - Hypixel online player tracker. Runs as an executable and can notify a Discord Webhook
GoScanPlayers - Hypixel online player tracker. Runs as an executable and can notify a Discord Webhook

GoScanPlayers Hypixel online player tracker. Runs as an executable and can notif

Oct 16, 2022
Simple online syncing tool for Oracle Object Store

TrollBox ... use your storage with Oracle Object Store Quick Start Make sure you have the Object Storage, bucket and you know the compartment id where

Oct 25, 2021
Andrews-monitor - A Go program to monitor when times were available to order for Brown's Andrews dining hall. Used during the portion of the pandemic when the dining hall was only available for online order.

Andrews Dining Hall Monitor A Go program to monitor when times were available to order for Brown's Andrews dining hall. Used during the portion of the

Jan 1, 2022