This is what I need:
I need a simple Mac app that lets the user select text anywhere on his screen. When a shortcut is clicked the selected text is POSTed to a REST endpoint.
1. When the app is started it is shown as an icon in the menu bar, no Dock icon should be shown. On first start the user needs to be asked for special accessibility permissions so grabbing the selected text and catching system-wide keyboard shortcuts work. On installation the app autostarts when the Mac is started, by putting it into the User's autostart items.
2. There are three main menu items and three panels (in a tabbed notebook) under "Preferences":
3. The "About" menu item shows a panel with the logo of the application and 3-4 lines underneath it (version information etc.).
4. The "Shortcut" panel shows a panel where the user needs to click into a field and then may create an arbitrary shortcut, e.g. CTRL+SHIFT+CMD+C.
5. The "Account" panel shows a panel where the user may enter a username and a password. Both are stored and may be changed anytime.
6. The "License" panel shows a page where the user needs to enter an e-mail address and a serial key (e.g. 1234-abcd-5678) and a "Register this Mac" button. Both, along with a unique number that identifies the Mac (e.g. MAC address of the network interface or some other ID that Swift can get ahold of) are sent to a REST endpoint on my server which will return "true" or "false". If "true" is returned it will print "License validated" and the "About" screen will show "Registered to <email>". Until the serial key is entered "About" will say "Unlicensed" and the app will not function.
7. The "Quit" menu item will quit the application.
8. Each time the application is started (i.e. the Mac is booted), and once every 4 hours, the unique identifier will be sent to a REST endpoint. If it returns "true" everything is normal. If it returns "false" the "License" screen is shown and the user has to enter his e-mail and serial key.
(Items 6. and 8. are meant to make sure the software runs on one (1) Mac at any given time. Each time the e-mail and serial key are entered the backend will unregister the license from the other computer (=unique identifier) and register it with the current one.)
8. The actual functionality of the application is this:
- The user selects a piece of text anywhere on his computer, in any application.
- He presses the shortcut he specified in the "Preferences" (e.g. CTRL+CMD+SHIFT+0)
- The selected text is taken and sent to a REST endpoint (B).
- But: before that REST endpoint (B) is called first another REST endpoint (A) has to be called. The username and password are put in that call and the response contains a token. That token then becomes the JSON payload of the call to REST endpoint (B), along with the username and password that were stored under "Preferences > Account".
So basically (A) logs him in and returns a token that is then used to perform the call to (B).
1. The code needs to be written in Swift and be thoroughly documented. I'm a developer myself - Java and a dozen other languages, but not very skilled in Swift yet :-(
2. There should be no compiler warnings, obsolete libraries used etc..
3. Instructions on how to compile the code need to be added to a README.
4. Use simple Swift code, readability is king.
5. Do use Alamofire for REST calls etc..
6. You will provide a clickable outline of the UI before you start coding, so we can be sure you're implementing what I need.
7. You need to take proxy servers that the user is behind into account. Just rest assured that calls (A) and (B) are regular HTTPS requests.
8. Code will be pushed to my GitLab account.
If this was done in Java/Swing I would implement it in half a day or a day. I expect this to not take much longer in Swift.
Happy bidding :-)
In order to prove you've actually read the entire project description you need to put the keyword "I-READ-IT" into your bid text.