Adrien Ufferte 921d13b0cb Keep the current language pack until the new one is downloaded
The package downloader deleted the installed language pack as soon as a
version difference with the server was detected, before the download had
even started. If the download then failed (connection drop, server
error), the device was left with an empty language directory: on the
next offline launch, the directory check failed and the app was unusable
until internet access was restored.

The early cleanup was also redundant: _copy_data() already removes the
existing directory right before extracting the new archive, i.e. after
the download has succeeded (HTTP 200).

Changes in package_downloader.gd:
- Remove the pre-download cleanup of the current language directory; the
  previous pack now stays usable for offline play until the new one has
  been fully downloaded.
- Check the return value of HTTPRequest.request() and show the download
  error popup when the request cannot be started, instead of leaving the
  screen waiting forever on a request that was never sent.
- Surface extraction failures (missing archive, unzip error) through the
  error popup instead of silently returning from the extraction thread
  and leaving the user stuck on a frozen progress screen.

Changes in login.gd:
- Handle the result of UserDataManager.login_student(), which was
  previously logged and ignored. The synchronization performed right
  before the login can delete or move the student locally (e.g. the
  server requested a local deletion), in which case the child was sent
  to the gardens scene with no student session loaded, ending up on a
  dead screen. On failure, play the wrong-password feedback and reset
  the code keyboard instead of changing scene.

Verified with the GUT test suite (58/58 passing).
2026-06-11 08:09:56 +02:00
2026-04-17 10:10:58 +02:00
2026-04-16 13:54:16 +02:00
2026-06-06 11:13:22 +02:00
2026-04-20 10:53:25 +02:00
2025-08-18 13:44:37 +02:00
2026-06-08 17:51:11 +02:00
2026-01-26 13:48:59 +01:00
2025-01-13 17:04:35 +01:00
2025-09-05 15:55:48 +02:00
2026-01-27 14:52:22 +01:00
2026-06-06 19:23:19 +02:00
2026-04-02 16:46:44 +02:00
2026-04-02 16:46:44 +02:00
2026-04-02 16:46:44 +02:00
2026-04-02 16:46:44 +02:00
2025-04-09 16:56:40 +02:00

Godot Version

📖 Kalulu — Learn to Read, the Smart Way

🌍 Available Languages


📑 Table of Contents

🧠 Why Kalulu?

Kalulu is more than just a game — its an educational adventure grounded in scientific research that helps children learn to read through a decoding-based method.

Each lesson follows a structured sequence based on linguistic data drawn from children's literature. Learners start with vowels and gradually move on to more complex sounds.


Features

  • Interactive grapheme-phoneme reading lessons
  • Adaptive difficulty progression
  • Child-friendly interface with engaging visuals

🛠️ Installation

📥 Clone the Repository

We recommend forking the repository before cloning, so you can easily contribute or manage your own changes.

  1. Go to the Kalulu GitHub Repository.
  2. Click the Fork button at the top-right corner to create your own copy of the repo.
  3. Once forked, open your terminal and run the following commands:
# Clone your fork of the repository
git clone https://github.com/YOUR_USERNAME/Kalulu-Frontend.git
# Or
git clone git@github.com:YOUR_USERNAME/Kalulu-Frontend.git

# Navigate into the project directory
cd Kalulu-Frontend

🔁 Remember to replace YOUR_USERNAME with your actual GitHub username.


🎮 Install the Godot Engine

To run Kalulu, you need the Godot Engine installed on your machine.

  1. Visit the official Godot Engine website: https://godotengine.org/
  2. Click on Download and choose the version compatible with your operating system.
  3. Extract the downloaded file and run the Godot executable to launch the editor.

That's it! You're now ready to explore the Kalulu project in Godot.


🧩 Addons

Kalulu includes several useful addons to enhance development and streamline workflow:

🔄 EnvironmentSwitcher

A utility to easily switch between development and production environments.

📤 export_tool_manager

Facilitates export to various platforms and simplifies the export process for additional tools like prof_tools.

godot-form-validator

A plugin for Godot 4 that adds validation logic to any control element in your project.

🗃️ godot-sqlite

Provides SQLite integration for Godot projects.

Important: This addon must be downloaded manually from the Godot AssetLib. The folder addons/godot-sqlite/bin is excluded from version control due to its large size. Make sure to download and install it after cloning the repository.


🤝 Contributing

We welcome contributions from everyone! Whether it's fixing bugs, improving documentation, or suggesting new features, your help is greatly appreciated.

How to Contribute

  1. Set up the Project
    See the Installation section to learn how to fork and clone the repository.

  2. Create a New Branch

    git checkout -b feature/your-feature-name
    
  3. Make Your Changes
    Implement your changes or improvements.

  4. Commit and Push

    git add .
    git commit -m "Describe your changes"
    git push origin feature/your-feature-name
    
  5. Open a Pull Request
    Navigate to your forked repository on GitHub and click Compare & pull request to submit your changes for review.

Please make sure your code follows our coding conventions and includes relevant tests or documentation updates when appropriate.


FAQ

📱 Is Kalulu available on mobile?

Yes! Kalulu is available on:

  • Android
  • iOS

💻 Is Kalulu available on desktop?

Yes! Desktop versions for Windows, Mac, and Linux are available in the Releases section.

🌐 Is Kalulu available directly on the web?

We are working on it, stay tuned!


Repository Description
Kalulu Backend Serverless API — authentication, sync, dashboards, and data management
Kalulu Language Lambda Pipeline that processes language packs and updates the database
Kalulu Languages Linguistic data packs (French, Spanish, Portuguese etc...)

Built with care by Excello Recherche & Education

We also have a website

S
Description
Kalulu Web autonome en français pour Joy — Docker, Godot 4.6 et Nginx
Readme 394 MiB
Languages
GDScript 96.6%
Python 2.5%
GDShader 0.6%
Dockerfile 0.3%