vigneshrepo001/soonapaanasecuritykit
---
The Problem - Shoulder Surfing
You're in a crowded place — typing an OTP, a note, or a juicy message or anything in your app's text interface — and suddenly someone shoulder surfs or sneaks and you're like Paathutaan daa!
People around you are reading over your shoulder.
Inspired by
Vadivelu, Shoulder surfers, And a sprinkle of common sense.
Real-world Use Cases
- Building an interface for these and beyond,
- Entering passwords or OTPs in public,
- Writing private notes,
- Simply confusing nosy co-passengers,co-workers etc..
- just for fun!
- Feel free to confuse freely.
[soona-paana]
The Solution
SoonaPaanaSecurityKit is a simple, lightweight Swift package that lets you:
- Obfuscate typed text in real-time (like
yt$%78&) - Reveal on long-press — temporary, like a whisper
- Works with both
UITextFieldandUITextView - No autocorrect or spellcheck interference
- Easily revert obfuscated text using a confuser logic
Demo:
https://github.com/vigneshios/SoonaPaanaLibraryDemoApp/tree/master
<p align="center"> <img src="https://github.com/user-attachments/assets/fd3b9f68-5894-47a3-887a-fa72e7acd55c" width="350" /> </p>
| Component | Purpose | | --------------------- | ------------------------------------- | | SoonaPaanaTextField | For single-line secret input | | SoonaPaanaTextView | For multi-line disguised typing | | SoonaPaanaConfuser | Obfuscates and restores original text |
Installation
Swift Package Manager (SPM)
In Xcode:
- Go to
File > Add Packages - Paste this URL:
https://github.com/vigneshios/SoonaPaanaSecurityKit.git
- Choose your project target.
- Import the module where needed:
import SoonaPaanaSecurityKit
- Use the custom components:
- SoonaPaanaTextField - SoonaPaanaTextView
Long-press the field to temporarily reveal the real text.
Usage Example
let field = SoonaPaanaTextField()
field.placeholder = "Type something secret"
let textView = SoonaPaanaTextView()
textView.text = "Hide my story..."
---Package Metadata
Repository: vigneshrepo001/soonapaanasecuritykit
Default branch: main
README: README.md