Connecting-type app for people to match profesionally and discuss/implement business ideas.
- Go Server & iOS Client (prototype)
- Basic User Account Operations
- Messaging -- Functional on simulator (doesn't currently work on physical devices)
- Location Uploader
- 'Connect' functionality
- User Profile Info Enhancement (
Pic,Bio, Work Place, Position etc.) - Connection Popup Styling and Populating (
Pic,Bio, Work Place, Position etc.) - Location Remover on Location Change
- Go Server Secured -- HTTP for now (TLS implemented but there are some config issues)
- Encrypt Data sent to Firebase (ie. Messages) -- Client-side encryption, uses a 512-bit RSA key pair.
- watchOS Client
Server is built using Golang (or Go, for short).
Response {
"TransactionID" : int,
"Result" : int,
"Data" : Any (will be primitive data types or encodable structs),
"Message" : string,
}
{
"Data" : {
"DisplayName" : "New Name",
"UID" : "jaq3RAOFuBar41BySERkP0WPugZ2",
"PhotoURL" : "",
"Email" : "test1@yahoo.com",
"EmailVerified" : false,
"PhoneNumber" : ""
},
"Result" : 1,
"Message" : "User retrieved successfully.",
"TransactionID" : 0
}
- /ws -- Web Socket entry point for device (mainly used for messaging use case)
- /conn -- Tests Go server
- /operation?token=&operation=&input= -- Uses the token param to verify a transaction (gets User ID from token verification) and then processes the operation specified in the operation parameter using the data in the input field
- 0 = Get User Profile (UID : String)
- ubg = Get Bio (UID : String)
- ubs = Set Bio (Bio : String)
- 2 = Change Display Name (DisplayName : String)
- pps = Set Profile Picture (Multiform Data : Base64String)
- ppg = Get Profile Picture (UID : String)
- d = Delete Account
- c = Change Password (Pass : String)
- ws = UID Location (City) (PUSH) (UID : String, City : String)
- wg = UID Location (City) (GET ALL) (UID : String, City : String)
- xs = LikedBy (PUSH) (UID : String, LikedUID: String)
- xg = LikedBy (GET) (UID : String, LikedUID: String)
- xx = Likes (GET) (UID : String)
- xxy = Matches (GET) (UID : String)
- y = Get chat history of user (list of chats with users)
- z = Get detailed chat history between two users on Firebase database for future retrieval (Remote_UID : String)
- Gorilla Websocket
- Firebase
- Firebase Auth
- Option Package
- The rest are Go standard packages
The Client is built in Swift (UIKit).
- SwiftyJSON
- Firebase (+ Auth)
- Starscream
- Alamofire
- SwiftyRSA
Testing has been implemented for the Go side of the project and a GitHub Action was created to run them on every push & merge to main. The action will always fail online because the conf.json file which contains the Firebase API credentials & config is not pushed. Testing for Swift-side to be implemented in the near future.
- [ ] Backend Testing (Firebase, Sockets, other units) -- in progress
- [ ] Frontend Testing (UI, Requests, other units)
There is a possibility in the future that there will be a lightweight version of the iOS Client developed for the watchOS.