Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alfredbaudisch/Godello
Trello inspired kanban board made with the Godot Engine and GDScript, with a real-time collaborative backend (Elixir and Phoenix Channels) and a local backend for offline usage (Godot Custom Resources)
https://github.com/alfredbaudisch/Godello
elixir elixir-lang elixir-phoenix gdscript godot godot-engine godotengine phoenix-framework
Last synced: 6 days ago
JSON representation
Trello inspired kanban board made with the Godot Engine and GDScript, with a real-time collaborative backend (Elixir and Phoenix Channels) and a local backend for offline usage (Godot Custom Resources)
- Host: GitHub
- URL: https://github.com/alfredbaudisch/Godello
- Owner: alfredbaudisch
- License: mit
- Created: 2020-05-03T09:11:10.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-09-16T06:18:55.000Z (about 1 year ago)
- Last Synced: 2024-10-11T11:03:18.401Z (28 days ago)
- Topics: elixir, elixir-lang, elixir-phoenix, gdscript, godot, godot-engine, godotengine, phoenix-framework
- Language: GDScript
- Homepage:
- Size: 9.35 MB
- Stars: 788
- Watchers: 28
- Forks: 52
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-godot - Godello - A Trello-like kanban board application made with Godot. A proof of concept for complex non-game applications with Godot, as well real-time online interactions between multiple users. Includes backend code. (Projects / 3D)
- open-production-web-projects - Godello - Trello inspired kanban board made with the Godot Engine and GDScript, powered by an online real-time collaborative backend (Elixir and Phoenix Channels) (Elixir / Phoenix)
- awesome-godot-3 - Godello - A Trello-like kanban board application made with Godot. A proof of concept for complex non-game applications with Godot, as well real-time online interactions between multiple users. Includes backend code. (Projects / 3D)
- awesome-godot-3 - Godello - A Trello-like kanban board application made with Godot. A proof of concept for complex non-game applications with Godot, as well real-time online interactions between multiple users. Includes backend code. (Projects / 3D)
README
# Godello (aka GodoTrello) ![Godot 3.5](https://img.shields.io/badge/godot-v3.5-%23478cbf) [![Donate using PayPal](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-PayPal-green.svg)](https://www.paypal.com/donate?hosted_button_id=FC5FTRRE3548C) [![Become a patron](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Patreon-Badge.svg)](https://www.patreon.com/alfredbaudisch)
Trello inspired kanban board made with the [Godot Engine](http://godotengine.org/) and GDScript, powered by an online real-time collaborative backend made with [Elixir](https://elixir-lang.org/) and [Phoenix Channels](https://phoenixframework.org/). It also features a [local backend](https://github.com/alfredbaudisch/Godello/tree/local-backend) data store with custom Godot Resources, for offline usage, and Settings screen to toggle between backends and data stores.
![Godello Drag and Drop + Reactive Example](./doc/godello-drag-and-drop-example.gif)
## Table of Contents
- [Introduction Video](#introduction-video)
- [Motivation π‘](#motivation-)
- [Features ποΈ](#features-οΈ)
- [Progress π§](#progress-)
- [What is finished](#what-is-finished)
- [Work in progress](#work-in-progress)
- [Roadmap πΊοΈ](#roadmap-οΈ)
- [FAQ](#faq)
- [Sponsorship and Donations β€οΈ](#sponsorship-and-donations-οΈ)
- [Updates π‘](#updates-)
- [License βοΈ](#license-%EF%B8%8F)## Introduction Video
[![Video](./doc/video_preview.png)](https://www.youtube.com/watch?v=Ckc8zEEjyfo)
## 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
- Multiple backends and data stores adapterIn 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](https://reactjs.org/)-like, pseudo two-way data binding and data propagation using Godot's [signals](https://docs.godotengine.org/en/stable/getting_started/step_by_step/signals.html).
- Real-time online connectivity and multiple user collaboration using Godot's [WebSockets](https://docs.godotengine.org/en/stable/tutorials/networking/websocket.html).
- 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](http://elixir-lang.org/) + [Phoenix Channels](https://phoenixframework.org/) backed by a PostgreSQL database. Communication with Godot is done using the library [GodotPhoenixChannels](https://github.com/alfredbaudisch/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](https://docs.godotengine.org/en/stable/classes/class_control.html) nodes, inside Container nodes, there is no usage of Node2D's nodes.
- Local backend for offline usage without any connectivity or external dependencies:
- Local data storage (local backend) with custom Godot Resources for offline usage (thanks to [CptFubar](https://github.com/CptFubar) [#23](https://github.com/alfredbaudisch/Godello/pull/23)).
- Data store and backend settings toggle (thanks to [CptFubar](https://github.com/CptFubar) [#23](https://github.com/alfredbaudisch/Godello/pull/23)).## 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](https://elixir-lang.org/) + [Phoenix Channels](https://phoenixframework.org/) backend, backed by a PostgreSQL database (it's in the branch [backend_elixir](https://github.com/alfredbaudisch/Godello/tree/backend_elixir), still not merged into `master`).
- The local storage offline backend with Godot custom Resources (it's in the branch [local-backend](https://github.com/alfredbaudisch/Godello/tree/local-backend), still not merged into `master`, the breaking bug [#28](https://github.com/alfredbaudisch/Godello/issues/28) must be fixed before it is 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](https://github.com/alfredbaudisch/Godello/tree/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](https://github.com/alfredbaudisch/Godello/tree/integrate_elixir).
- 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)**NOTICE**: The roadmap implementation is stalled since this project went open-source in 2019. It's unlikely that at this stage the roadmap will be implemented. But other than that, the core of the project is already implemented, i.e. the Trello-like user interface with Godot. But feel free to open a PR if you want to contribute with these features :)
## FAQ
### Why is list and card movement stuttering? Why does list and card movement have low FPS?
Disable "Low Processor Mode" (in Project Settings, Application, Run).## Sponsorship and Donations β€οΈ
You can support my open-source contributions and this project on [Patreon](https://www.patreon.com/alfredbaudisch) or with a [PayPal donation](https://www.paypal.com/donate?hosted_button_id=FC5FTRRE3548C). 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:
- Follow me on [Twitter π¦](https://twitter.com/alfredbaudisch)
- Subscribe to my [YouTube channel πΊ](https://www.youtube.com/alfredbaudischcreations)## License βοΈ
MIT License - Copyright (c) 2020 Alfred Reinold Baudisch