The Story of LWT 3.0.0: 1,000 Commits, 2 Architecture Changes, and One Lesson About Simplicity

A few weeks ago, I published LWT 3.0.0. That’s the biggest release in the project’s history — over 1,000 commits, roughly half of all commits since the project ever started. The entire structure was rewritten: new database engine, new backend, new frontend framework, and even a new security model. It took almost two years since the last release. I went to other projects, stepped away from this one, and actually recommended useful alternatives. So why did I go back to building this ship of Theseus? ...

March 24, 2026 · 12 min · admin

Rebuilding LWT's API, part 2

Hi there! Much work has been done and the new LWT REST API is now ready! For records, the initial suggestion, formatted with the help of ChatGPT, looked like the following (see part 1 for details): 1. GET API Endpoints: - Get API Version: `GET /api/version` - Get Next Word to Test: `GET /api/test/next-word` - Get Tomorrow's Tests Number: `GET /api/test/tomorrow` - Get Phonetic Reading: `GET /api/text/phonetic-reading` - Get Theming Path: `GET /api/text/theme-path` - Get Texts Statistics: `GET /api/text/statistics` - Get Media Paths: `GET /api/media/paths` - Get Example Sentences: `GET /api/sentences/{word}` - Get Imported Terms: `GET /api/terms/imported` - Get Similar Terms: `GET /api/terms/{term}/similar` - Get Term Translations: `GET /api/terms/{term}/translations` 2. POST API Endpoints: - Update Reading Position: `POST /api/reading/position` - Add/Update Translation: `POST /api/translation/{word}` - Increment/Decrement Term Status: `POST /api/terms/{term}/status` - Set Term Status: `POST /api/terms/{term}/status/set` - Test Regular Expression: `POST /api/regexp/test` - Set Term Annotation: `POST /api/terms/{term}/annotation` - Save Setting: `POST /api/settings` It featured 11 endpoints on GET and 7 on POST. The key of this approach was it was not a fundamental change but rather a reorganization of the already existing AJAX requests. In fact, GPT do not have access to all the app information, as most endpoints are simply a simplification of the explanation sentence, and were sometimes optimistic or simply wrong: for instance GET /api/text/statistics, how are we supposed to know that we get statistics for a subset of texts here? ...

January 5, 2024 · 4 min · admin

Rebuilding LWT's API, part 1

Hey everyone, for the next release of LWT I have been working on a complete refactor of the AJAX API that will enhance both security and the development for the future versions of LWT! The Issue A glance at all the different AJAX files composing LWT before unification. As LWT was growing, so were the AJAX calls and without any control. In the end, LWT as of 2.8.0 harbored a collection of PHP files with different formats and standards, making the API difficult to expand and to understand. ...

December 21, 2023 · 3 min · admin

The Future of LWT-fork and LUTE

As announced in a GitHub post, I’d contributed enough to the current version of LWT to consider that it was time to roll over a new project, namely LUTE. In this blog I’m detailing the reasons for this change and its implications. A Bit of History After one year of contributing to my fork of LWT, I felt that I had done most of the reasonable housekeeping and small feature insertions. It was quite fun, but the more I worked, the more I felt that I had to stop contributing to the app at some point. ...

May 13, 2023 · 3 min · admin

Maintaining LWT

Hi there! In this post I’ll delve into a project which has taken a big part of my time for the last few months, the maintenance of an open-source language learning app: LWT. Original LWT logo LWT, standing for Learning With Texts, is a wonderful tool to learn text in your web browser, but it was quite abandoned 10 years ago, and it has not reached a larger audience since it was a bit difficult to use. So, I decided to blow the dust out of it, and started working on the GitHub community-maintained version. For those interested, the original project was posted at SourceForge.net. ...

September 17, 2022 · 2 min · admin