Skip to content
Merged

doc #14

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
61 changes: 60 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,61 @@
# Achọ
On-device file search

On device file search for mobile devices

## Description

This project is an on-device search application for mobile, primarily targeting the Android platform.

The objective is to extend semantic search functionalities to African languages on a common device such as the mobile phone. Semantic search functionalities are powered by embeddings, but the models that generate those embeddings often do not cover low-resource languages such as those spoken by Africans. They often tend to cover more global languages such as English, French, Spanish, etc.

## Getting Started

Toolchain required to run the application

### Toolchain

- [Rust](https://rust-lang.org/tools/install/)
- [Flutter](https://docs.flutter.dev/install)
- [Just](https://just.systems)
- [Flutter Rust Bridge](https://cjycode.com/flutter_rust_bridge/quickstart)

### Installing

```sh
git clone https://github.com/HAKSOAT/acho
cd acho
just prepare
```

### Executing program

- How to run the program
- Step-by-step bullets

```
code blocks for commands
```

## Architecture


## Limitations

As explained in the [architecture](#architecture) section, we ultimately chose **Flutter + Rust** for this project. That decision wasn’t arbitrary—we explored several alternatives, including Kotlin, Tauri, and other stacks, before settling on this combination.

In the early stages, the project was built with **Tauri**. Given our JavaScript background, this initially felt like the most convenient choice. However, as the project evolved, we started running into practical limitations.

One of the major issues was Tauri’s filesystem API. While functional, it felt restrictive and inconsistent for more advanced file operations. The abstraction layer often made simple tasks unnecessarily complex, and the ergonomics of the API did not scale well with the needs of a system that heavily interacts with the filesystem. This became a bottleneck rather than a productivity boost.

We eventually migrated to **Flutter**, integrated with Rust via **flutter_rust_bridge**. This shift gave us three key advantages:

1. **No platform-specific code overhead**
Unlike Kotlin or native platform approaches, we avoided writing separate implementations for each platform. Flutter provided a unified UI layer, while Rust handled the core logic efficiently.

2. **A stronger and more predictable Rust integration**
Compared to Tauri’s JavaScript-Rust bridge, flutter_rust_bridge offered a more robust, type-safe, and scalable way to expose Rust APIs to the UI layer. This significantly improved maintainability and performance.

3. We get to do the heavy lifting in Rust and easily link the two contexts, Flutter and Rust, without a lot of headache.

In summary, while Tauri was a good starting point, its limitations—especially around filesystem handling and API ergonomics—made it unsuitable for the long-term goals of the project. Flutter + Rust provided a better balance of performance, developer experience, and architectural clarity.

24 changes: 0 additions & 24 deletions mobile/.gitignore

This file was deleted.

75 changes: 0 additions & 75 deletions mobile/README.md

This file was deleted.

Binary file removed mobile/app-icon.png
Binary file not shown.
9 changes: 0 additions & 9 deletions mobile/app/app.vue

This file was deleted.

45 changes: 0 additions & 45 deletions mobile/app/assets/css/main.css

This file was deleted.

3 changes: 0 additions & 3 deletions mobile/app/composables/app/AppHeader.vue

This file was deleted.

67 changes: 0 additions & 67 deletions mobile/app/composables/nav/AppBottomNav.vue

This file was deleted.

27 changes: 0 additions & 27 deletions mobile/app/composables/nav/AppBottomNavItem.vue

This file was deleted.

12 changes: 0 additions & 12 deletions mobile/app/layouts/app.vue

This file was deleted.

5 changes: 0 additions & 5 deletions mobile/app/layouts/default.vue

This file was deleted.

5 changes: 0 additions & 5 deletions mobile/app/layouts/walkthrough.vue

This file was deleted.

11 changes: 0 additions & 11 deletions mobile/app/pages/dashboard/discover.vue

This file was deleted.

7 changes: 0 additions & 7 deletions mobile/app/pages/dashboard/index.vue

This file was deleted.

12 changes: 0 additions & 12 deletions mobile/app/pages/dashboard/library.vue

This file was deleted.

13 changes: 0 additions & 13 deletions mobile/app/pages/dashboard/settings.vue

This file was deleted.

5 changes: 0 additions & 5 deletions mobile/app/pages/index.vue

This file was deleted.

Loading