NotePod — Encrypted Markdown Notes in your Data Vault
An ANU Software Innovation Institute demonstrator for your Data Vault.
Time-stamp: <Tuesday 2025-07-22 21:12:19 +1000 Graham Williams>
Authors: Anushka Vidanage, Graham Williams, Jessica Moore
ANU Software Innovation Institute
License: GNU GPL V3
Run the app online: web.
Download the latest version: GNU/Linux deb or zip; Android apk; macOS zip; Windows zip or inno.
Coding documentation is available from solid community au
Introduction
The notepod app is an example of a Solid Pods app written in Flutter to read, write, and share encrypted notes stored on your personal online data store (Pod) hosted on a Solid Server. Since you control where your notes (in standard Markdown) are stored, other apps can also interact with your notes. You maintain full control over your data, not the app developer collecting and hoarding your data.
This first beta release (version 0.1.0) is functional and usable. Use cases include writing quick notes while on the move to come back to later on, capturing shopping lists that can be shared with your family and called up the next time anyone of the family is at the shops, and much more.
The current notepod code base includes a lot of low level code that is being migrated to the solidpod package for Flutter. Once migrated it will be even easier to build your first Pods-based Flutter app.
Shopping List
Desktop version:

Mobile Phone version:

Obtaining a Pod
To use the app you will need your own Pod hosted on a Solid server. To try it out you can get yourself a Pod at our experimental server, the Australian Solid Community Pod Server or any one of the available Pod Providers world wide.
Online Demo
Once you have your own Pod visit https://notepod.solidcommunity.au and login to your Pod. Write and save a few notes, edit saved notes, and maybe share some notes with other users. That's it! Simple but useful.
Install the App Locally
You can install the app onto your own device using one of our installers. The app will then run locally on your own device rather than hosted on a web server. The installers are available for all platforms from github. The installers we make available are ready to run executable files or else operating system specific installation packages. Stay tuned for links to repository distribution.
App Startup
On starting up the app you will see the login screen where a user's WebID is to be entered. Your login will be remembered through the browser for future app activity.
On clicking the Login button your browser will popup to authenticate you on the Solid server of choice, not on the device. The device does not get to know your login details.
Install Flutter and Notepod
You can run the app directly from its source yourself with a little setup. You could then also modify the app to suit your own needs, or to add functionality that you may like to contribute back to the community.
Begin with the Flutter Dev instructions to install flutter for your preferred platform at Flutter Dev Getting Started
After setup, run flutter doctor
to check your setup, and flutter devices
to see which devices you have configured, with the device
name in the 2nd column
flutter devices
Found 4 connected devices:
iPhone 15 Pro Max (mobile) • 8978937B-AC64-44B8-8B26-CA6142091678 • ios • com.apple.CoreSimulator.SimRuntime.iOS-17-0 (simulator)
iPad (10th generation) (mobile) • 6B849753-743F-4F66-8F46-0396CA4BCFBE • ios • com.apple.CoreSimulator.SimRuntime.iOS-17-0 (simulator)
macOS (desktop) • macos • darwin-arm64 • macOS 14.1.2 23B92 darwin-arm64
Chrome (web) • chrome • web-javascript • Google Chrome 120.0.6099.62
Then git clone the notepod repository from github.
Run the notepod app in debug mode on your chosen device by specifying enough of the device name to be uniquely identifiable. E.g. for chrome use:
flutter run -d chrome
When you have completed the setup of your platform, you are ready for the NotePod Getting Started exercises where you can create a Pod, make and share notes.
Extra setup for MacOS
Running the app on MacOS requires, additional configuration in Xcode. Open the project macos folder in Xcode with
cd notepod/macos
xed .
Select Signing & Capabilities
. In Team
, choose Add an Account
and sign in with your Apple ID account. In Network
, select Incoming Connections (Server)
and Outgoing Connections (Client)
. The latter
is needed to login to your Pod.
Extra setup for iOS
For iOS, you will also need to set the deployment platform to match the iOS version on your simulator.
Open the Simulator app, select your simulated device with File
->
Open Simulator
-> pick a device.
open -a Simulator
Then in the simulated device check the iOS version number by clicking
on the Settings
app and going to General
-> About
to look up the
iOS.
Open the project iOS folder in Xcode and add the iOS version used by your simulator.
cd notepod/ios
xed .
Select General
. In iOS
, change it to match the Simulator iOS
version, e.g. v17.0
.
Useful resources
Packages:
These dart packages are under construction to support the development of Pods-based apps with flutter
-
solidpod package: Provides high level functionality to manage a Solid personal online data stores (Pods) via a Flutter application.
-
solid-auth package: Implementation of the Solid-OIDC flow which can be used to authenticate a client application to a Solid Pod. Solid OIDC is built on top of OpenID Connect 1.0. Also provides a suite of tools and widgets to support typical app workflows.
-
solid-encrypt package: The Software Innovation Institute has a focus on the security of our stored data. This package implements data encryption which can be used to encrypt, on device, the content of turtle files to be stored in a Solid Pod. Data is also only decrypted on device.
-
rdflib package: A dart package for working with RDF. Features include find and create triple instances, create a graph to store triples, export graph to ttl, etc.
Related Apps
Libraries
- app_screen
- NotePod - A note taking app with notes shared through private PODs.
- common/responsive
- DESCRIPTION
- common/rest_api/rest_api
- DESCRIPTION
- constants/app
- App-wide constants.
- constants/colours
- NotePod - A note taking app with notes shared through private PODs.
- constants/turtle_structures
- Individual's POD content variables.
- main
- NotePod - A note taking app with notes shared through private PODs.
- Navigation Drawer for notepod.
- notepod
- NotePod - A note taking app with notes shared through private PODs.
- notes/edit_note
- NotePod - A note taking app with notes shared through private PODs.
- notes/list_notes
- Individual's PODs app for diabetes care in Yarrabah.
- notes/list_notes_screen
- List notes screen
- notes/new_note
- NotePod - A note taking app with notes shared through private PODs.
- NotePod - A note taking app with notes shared through private PODs.
- notes/view_note
- NotePod - A note taking app with notes shared through private PODs.
- NotePod - A note taking app with notes shared through private PODs.
- Individual's PODs app for diabetes care in Yarrabah.
- shared_notes/non_readable_note
- NotePod - A note taking app with notes shared through private PODs.
- NotePod - A note taking app with notes shared through private PODs.
- Individual's PODs app for diabetes care in Yarrabah.
- NotePod - A note taking app with notes shared through private PODs.
- Individual's PODs app for diabetes care in Yarrabah.
- utils/encryption
- utils/is_desktop
- Check if we are running a desktop (and not a browser).
- utils/misc
- Copyright (C) 2025, Software Innovation Institute, ANU.
- utils/rdf
- Common utilities for working on RDF data.
- widgets/err_dialogs
- DESCRIPTION
- widgets/loading_animation
- DESCRIPTION
- widgets/loading_screen
- DESCRIPTION
- widgets/markdown_editor
- The Markdown editor widget.
- widgets/msg_card
- DESCRIPTION
- NotePod - A note taking app with notes shared through private PODs.
- The edit note page.
- widgets/note_display_markdown
- DESCRIPTION
- widgets/note_display_metadata
- DESCRIPTION
- The edit note page.
- widgets/note_edit_scroll_view
- NotePod - A note taking app with notes shared through private PODs.
- The edit note page.
- The shared note button page.