Grant Proposal: IOS app for haven.
Overview
Hi, I am Om, I have discovered xxnetwork and haven thorugh MF.
My current go to chat app is Telegram and always wanted to replace with haven, but lack of support on phone is making that transition hard.
I have some friends who love keeping privacy and would be interested in haven app in their phone.
I asked in xxnetwork channel of haven chat about IOS plans and Rick said I can contribute and shared this link xxdk-examples/iOS at master · xxfoundation/xxdk-examples · GitHub
Since then I started experiementing on it and got some good results (see attached screenshots).
Now I am requesting for some funds/grants to support this development and feedback from community.
Grant Request
I am requesting 30,000 USD (25,50,000 XX Tokens)
Here is my proposal with milestones.
Milestone 1 — Auth and basic messaging (40%)
Features to implement
- New Cmix using user provided secret
- Codename selection at start
- Codename import/export
- Send and receive messages in channels
- Send and receive direct messages (DMs)
- Display reactions on messages
- Basic channel list and DM list
Technical info
Identity and auth
- Store password via Keychain Services: Keychain services | Apple Developer Documentation
- Persist selected codename
- Decodable:
IdentityJSON
Data and models (SwiftData)
- SwiftData: SwiftData | Apple Developer Documentation
@Model:User,Chat,ChatMessage,MessageReaction,Sender(https://developer.apple.com/documentation/swiftdata/model)- Integrate queries in views with
@Query: Query | Apple Developer Documentation - Indices/keys aligned to Haven web IndexedDB where known
Remote Key-Value
- Implement minimal remote key-value functions for channel manager’s “storage tag” (
get,set,list,delete) with per-chat namespacing
Parsing and serialization
- Decodable models for inbound payloads (
ChannelJSON,ChannelSendReportJSON,IdentityJSON) - Decodable: Decodable | Apple Developer Documentation
- JSONDecoder configured for server formats: JSONDecoder | Apple Developer Documentation
- HTML to attributed text for message body via
AttributedString(HTML: …); sanitize inputs
Messaging pipeline
EventModelBuilderprotocol to convert events to SwiftData models- Use existing
DMReceiverfor DM events - Basic message send/receive wiring for channels and DMs
UI scaffolding
- SwiftUI List: List | Apple Developer Documentation
- ScrollView chat views: ScrollView | Apple Developer Documentation
- NavigationStack: NavigationStack | Apple Developer Documentation
- NavigationSplitView for side-by-side view on large screens (Mac, iPad): NavigationSplitView | Apple Developer Documentation
- Message cell: sender, body; reactions rendered inline/summary
- Enable text selection for messages: TextSelection | Apple Developer Documentation
- Unread badges on lists (basic)
Milestone 2 — Channels and interactions (30%)
Features to implement
- Join channel via invite/link
- Leave channel
- Toggle DMs (enable/disable DMs in app settings or switch to DM mode)
- Open or start a direct message thread with a user if available
- Reply to messages (threading and navigation to parent)
- React to messages (add/remove user reactions)
- Create channel
Technical info
Invites and channel management
- Link parsing (DecodePublicURL) and join flow for channel links
- Join DMs via invite links using modal sheet: https://developer.apple.com/documentation/swiftui/view/sheet(ispresented:ondismiss:content:)
- Channel creation and leave operations reflected in local models
Reactions
MessageReactionentity persistence and aggregation per message- Update handling for add/remove and counts
Replies
- Threading fields on
ChatMessage(replyTo/thread metadata) - Navigation to parent and highlight behavior
DMs
Chatcreation/open from user or message context- Availability checks based on toggle
Settings
- DM on/off toggle persisted; gated UI/actions
Routing and error states
- Join/leave/create feedback and failure handling in UI
Milestone 3 — UI/UX polish (20%)
Features to implement
- UI polish and layout refinements
- Show timestamps in conversation views
- Group sender by color (consistent color per sender)
- Swipe to reply gesture in message list
- Context menus for message actions (copy, react, reply)
- Show detailed xxdk load status on startup
Technical info
Rendering and formatting
- Date formatting and localization for timestamps
- Deterministic color assignment per sender
Gestures and interactions
- Swipe actions mapped to reply
- Context menus for actions: https://developer.apple.com/documentation/swiftui/view/contextmenu(menuitems:)
- Copy text programmatically via UIPasteboard: UIPasteboard | Apple Developer Documentation
Status and diagnostics
- xxdk load status surface: phases, progress, error states in a startup sheet/view
Milestone 4 — Release (10%)
Release
- Publish to AltStore
- Optional: Prepare and publish to App Store (may require additional changes)
Please share your feedback
More about me
I have worked before on haven secure browser extension with MF which is in review/audit phase. xxB-2024-003: Haven Browser Extension Implementation
Here is my website - https://ommore.xyz
Attachments
Screenshots of my experiment













