Inspiration

I have always struggled with keeping track of random thoughts I have throughout the day. I have tried many note taking, journal or reminder apps but I am way too disorganized to set up and maintain a proper structure with tags, folders and neatly categorized items. I usually dump everything into a Slack/Signal chat with myself and then completely lose track of it. The list just keeps growing and growing, eventually becoming too overwhelming to work through.

What it does

The app is based on two ideas :

  1. I want to be able to write down any thought without worrying about labels or organization. No matter if it's todos, reminders, notes, ideas, questions, or whatever. I want to have a place for anything that goes through my mind.
  2. I want to find specific types of thoughts easily, when I need them. Everything that is not relevant at that moment should be hidden away. No opening the app to find a long list of accumulated, unresolved thoughts that's too much to even consider looking at.

And that's what Highland tries to do. It uses generative AI in the background to analyze and understand your thoughts and uses that to help you find the right thoughts. It's not at all perfect and it's still somewhat limited, but that will change over time as I implement more and more algorithms and concepts.

How we built it

  • App: Developed entirely with SwiftUI.
  • Data Storage: Uses a local SQLite database with optional iCloud sync to share data across your devices in a private way.
  • Backend: Custom-built using the Swift Vapor framework, serving as a relay between the app and AI services like OpenAI and Anthropic.
  • AI Integration: The app uses generative AI to understand your thoughts, but the goal is to not turn this into a flashy "AI marketing" app. The intelligence happens mostly behind the scenes. Your thoughts are the main focus. I have spent a lot of time building the prompts for this and they are not perfect yet, but I am constantly improving them.

Challenges we ran into

  • Finding a concept and designing a user experience that realizes the fundamental ideas has been challenging. I've had to iterate a lot and there is still much to improve, clarify and simplify.

  • Adding iCloud support has also been a challenge since I am not using Core Data, but rather an SQLite database through the amazing GRDB framework. I've had to build the entire synchronization on top of the new CKSyncEngine, which is a really helpful synchronization layer, but it still takes a lot of effort to make it work.

  • Hosting my own backend is complicated and involves a lot of moving parts and guesswork when you have absolutely no experience. Hosting a database is even harder, because you have to think about data replication and synchronization.

Accomplishments that we're proud of

  • My very own backend built with Swift Vapor. It has been a long and winded road to get here, but it is so incredible to work on a backend that uses the same programming language as the app. And the Vapor framework is really fun and powerful!

What we learned

  • It keeps being true: Swift is an amazing programming language and I do not regret also building the backend with it.
  • DevOps is hard and complicated, but it is very rewarding once you finally start to grasp how everything works.
  • It's okay (even important) to release something, even if it's not perfect. Highland is an ambitious app that will probably never match what I have envisioned, but over time it can get really close I think.

What's next for Highland - Capture Thoughts

The current version of Highland is very much just the start. It's a foundation that will (hopefully) allow me to add much more intelligence over time, to make even better sense of all the thoughts users dump into the app. I have plans and ideas to explore several more advanced topics in the realm of machine learning and especially vector embeddings, to make use of a lot more stuff to extract and connect information from thoughts.

Along the way, I will also have some fun and add support for a lot of cool iOS features and platforms. I am going to add homes creen widgets, control center widgets, live activities, shortcuts support and more.

Built With

Share this project:

Updates