๐Ÿ“ฑ Sofia Toro

Here you’ll find projects I’m proud of, each one with a different peculiarity ๐Ÿ’œ.

epub_decoder

Flutter package to parse EPUB files (ebooks), with support for Media Overlays! ๐Ÿ”‰๐Ÿ“‘ Pub Points Pub Version

While I was looking for ebook readers to use, I saw that some of them have a โ€œread aloudโ€ feature, which is the synchronization between sound and text to highlight the text that is being read aloud.

I became curious about how this synchronization worked and, without realizing it, I ended up reading the SMIL (Synchronized Multimedia Integration Language, more commonly known as Media Overlay) and EPUB specifications, which is what is behind this synchronized reading (plus this amazing book).

But these specifications only define how to structure the files so that they can be synchronized, the synchronization itself is something we have to do for ourselves.

So I started looking for how this is implemented in open source projects that read EPUBs in Flutter, and to my surprise, I didn’t find any that included reading media overlays (and thus synchronization). So I decided to implement it myself ๐Ÿ’™.

Discover its functionalities and how to use it in your Flutter project on pub.dev, and don’t forget to leave a star on GitHub if you find it interesting! โญ


find-and-lowercase

GitHub Action to find regex matches on files and transform them to lowercase ๐Ÿ”๐Ÿ”ก GitHub Tag

During my time working at University of Valley, I had to create documentation about the redesign of the mobile app, and for this I used DartDoc (for API docs) and Retype (for Markdown docs).

However, when generating the documentation website, all the links to the API docs were broken, and I discovered that it was because of the Retype build, which renamed all the files to lower-case. Here you can see the issue I opened about it.

Luckily the Retype team was able to solve the bug in a few weeks, but as I needed to generate the docs site quickly, I created this GitHub Action, which according to a regex pattern, converts all matches inside the files of a directory to lower-case. This way the links inside the docs would point to the files with their new lower-case name (after the Retype build) and no links would be broken.

It was a small but very useful project, plus it was the first time I created a GitHub Action and published it in case, for some reason, someone else needs it to save themselves in a hurry.


pictify

Flutter plugin for image processing using C++ capabilities ๐Ÿ–ผโšก

During college I took the Digital Image Processing course, where I learned different methods and algorithms in C# to, redundantly, process images.

But something that bothered me was the speed issue, since it took a few seconds or even a minute or two to perform certain types of processes. First I replicated these processes on my own with Python and Numpy, as it is used quite a lot in this area, but because of the interpretation process it takes I didn’t think it was the most efficient option at that time (but later I found it can be fast ๐Ÿ˜…).

That’s how I decided to make an implementation in C++ โšก, and run it in Flutter through DartFFI. I built a package for iOS and Android and it was a success โœ”, since the processing was so fast that I could even do it in real time with a slider (instead of a button and wait, like in college).

However, I didn’t publish the package because there are already other good packages like image, which still do image processing for Flutter quite well (not in C++, but quite well).

Maybe if the project gets some stars on GitHub, I’ll think about publishing it :)