Building products that matter
/works/Les Crocodiles 3.0

Les Crocodiles 3.0

Migrating a legacy linguistic annotation application to Electron and Vue

Annotation

Les Crocodiles is a professional desktop application for preparing and annotating dialect texts. It allows researchers to edit text structure, perform grammatical analysis, add metadata, and export the results as XHTML.

The previous version was built in C#, ran only on Windows, and had become increasingly difficult to maintain. The project was therefore migrated to Electron and Vue while preserving compatibility with the existing file formats and research workflows.

My role

Legacy-system research, UX/UI design, frontend architecture, interface development, and implementation of the application’s core logic.

Stack

ElectronNode.jsVuePinia

1. Understanding the legacy system

The original application had no complete or up-to-date documentation. Before development could begin, I had to study its source code, user workflows, tokenization rules, XHTML structure, and integration with the grammatical analyzer.

To accelerate the reverse-engineering process, I used AI-assisted source-code analysis. Based on the results, I created a knowledge base describing the application modules, data transformations, and relationships between its tools. All findings were verified against the working application and real documents.

2. Redesigning the workflow

The legacy interface relied on multiple separate windows and did not always preserve the context of the user’s work. I reorganized the experience around a continuous document-processing workflow.

The redesign focused on efficient work with large texts, clear interface states, and keyboard-based navigation.

3. UI design

After defining the main workflow, I designed a new UI for the application. The goal was to make a complex professional tool cleaner and easier to use without reducing its functionality or replacing the terminology familiar to existing users.

The interface was organized around the primary working context: the document, the selected word, and the tools associated with it. Instead of distributing key actions across multiple windows, the new design brought them into a single workspace, allowing users to edit the document without losing their current position or selection.

The main design principles were:

A clear visual hierarchy for a data-heavy interface
Consistent selected, active, and modified states
Preserving context when switching between tools
Keyboard navigation and quick access to frequent actions
Reusable components and consistent interaction patterns
Clear feedback during editing, analysis, and file saving
Adapting familiar legacy features to modern desktop UI patterns

Since users may process hundreds of words in sequence, keyboard interaction became a core part of the experience rather than an optional enhancement. Users can navigate through the text, select words, and continue editing while switching between the keyboard and mouse less frequently.

4. Grammatical analyzer

The legacy analyzer consisted of a Python pipeline and a closed-source Windows binary.

The Python part was rewritten in TypeScript to eliminate extra dependencies; performance was not affected and even improved, while the binary was retained as an external module:

Most users work on Windows, so this approach preserved the existing and proven analysis algorithm without the cost and risk of reimplementing it from scratch. After installing Wine, macOS users can also launch the analyzer directly from the application interface.

The following legacy tools were migrated into the new version:

5. Rebuilding the complete feature set

After the MVP, the remaining core functionality of the legacy application was migrated:

Complete grammatical annotation and metadata editing
Storing metadata in XHTML
Exporting metadata to XLS
Saving the final XHTML in a compatible structure
Local-file and desktop-specific workflows

Outcome

Les Crocodiles was migrated from an outdated Windows-only stack to a modern architecture based on Electron, Vue, and TypeScript.

The new version:

Preserves the established workflow and compatibility with existing files
Runs on both Windows and macOS
Supports the complete linguistic annotation process
Integrates with the existing grammatical analyzer
Fixes several issues from the legacy version
Provides a more consistent interface and a codebase that is easier to maintain and extend

The project combined frontend engineering, UX design for a professional tool, reverse engineering, local file processing, and the integration of a modern desktop application with closed-source legacy components.