Inspiration
Inspired by the Ciena challenge, but we wanted to add an element cryptography and security by requiring all parties to consent before you can access a file.
What it does
A user can submit a file / image from their device. It gets split into 512 byte chunks which are then split across all registered devices. The file is then added to each user's library. When a user clicks on the file fragment, the app will reconstruct the original file by getting the pieces from each member of the network.
How we built it
We wanted to try making a Multiplatform app, so we used Kotlin Multiplatform. It enables you to write your business logic in Kotlin, and write platform specific implementations of the necessary functions.
Challenges we ran into
We wanted to write our own application layer for TCP IP to define a custom networking protocol. Unfortunately, we have a bug in our fragmentation logic which corrupts the reconstituted file.
Kotlin Mutliplatform was counterintuitive, and our UI is lacking compared to our expectations.
Apple has blocked UDP broadcasting, and we spent a lot of time trying to figure out why UDP broadcasts were not working. In hindsight, we should have implemented Bonjour to detect other clients on the network.
Accomplishments that we're proud of
We're proud to have written our first TCP application protocol. Even though it has some minor bugs, we're confident that they could be resolved.
We implemented our first SQLite database for Multiplatform.
It's also our first cross platform application, and we were able to call both Android and iOS system functions such as the gallery using shared business logic for both.
What we learned
We've solidified our understanding of TCP/IP, how Bonjour works, and cross platform development with Kotlin
What's next for Totem Crypto
Fix our fragmentation logic Make our UI even better Implement Homomorphic encryption to allow each client to participate in the encryption of the file. This is essential for the purpose of our application because we want to minimize the importance of a single node in the network.
Log in or sign up for Devpost to join the conversation.