PAN is a start-up in the privacy tech space that is developing a people-centric solution that champions control, transparency, and individual choice over personal data. Please head to [login to view URL] and check out our app (beta).
What you will be doing
You will develop an app tracking protection module for the existing PAN Privacy app.
The module will be implemented as an iOS Network Extension, more precisely as a "Packet Tunnel Provider".
Therefore in depth knowledge of networking and specific solid experience with the "Packet Tunnel Provider" API from iOS is a MUST.
The app tracking protection will use a local "VPN connection" to filter out all unwanted network connections to third party trackers initiated by the installed apps. This local VPN connection is different from normal VPNs because the data is not routed through an external server, it actually never leaves the phone.
This project will thus require the development of the following:
1. A local VPN server as a Network Extension that will act like a proxy server. It will block any connection included in a given list (list of urls) and relay all other connections
2. Install, configure and enable the developed network extension from within the existing PAN Privacy app
3. The list of urls to be blocked by the network extension will be regularly updated by the PAN Privacy app
4. The network extension will record and deliver details on the connections that were blocked (e.g. which app initiated the connection, exact url that was blocked, timestamp etc.)
The exchange of data between network extension and the app should be straightforward (e.g. Shared Container Group - but also open to other proposals).
Performance is absolutely key for this solution to work without negatively impacting browsing experience and other apps. The local VPN / proxy server could be implemented using libraries such as Swift NIO ([login to view URL]) or CocoaAsyncSocket ([login to view URL]) - but open to other approaches.
We will follow Agile as way of working with 1 week sprints. The development of the module is expected to take 4-6 weeks, depending on the availability (hours per week) of the developer.