|
| 1 | +# Zonic |
| 2 | + |
| 3 | +A macOS Menu Bar application that displays the current time for the cities in different timezones across the world. Quickly search for cities and add them to your favorites for instant access to their local time. |
| 4 | + |
| 5 | + |
| 6 | +<table style="border: none" cellspacing="0" cellpadding="0"> |
| 7 | + <tr> |
| 8 | + <td width="50%" align="center"> |
| 9 | + <img src="./Assets/collapsed.png" alt="collapsed" /> |
| 10 | + </td> |
| 11 | + <td width="50%" align="center"> |
| 12 | + <img src="./Assets/expanded.png" alt="collapsed" /> |
| 13 | + </td> |
| 14 | + </tr> |
| 15 | +</table> |
| 16 | + |
| 17 | +## Installation |
| 18 | + |
| 19 | +> Supported on macOS 14 (Sonoma) or newer. |
| 20 | +
|
| 21 | +1. **Download the latest release:** |
| 22 | + Grab the `Zonic` App from the [GitLab Releases page](https://gitlab.com/abhayvashokan/Zonic/-/releases). |
| 23 | +2. **Move to Applications folder:** |
| 24 | + Drag `Zonic.app` to your `/Applications` folder. |
| 25 | +3. **Add to Login Items (Optional):** |
| 26 | + For Zonic to launch automatically when you log in, add it to your Login Items: |
| 27 | + * Open **System Settings** (or System Preferences). |
| 28 | + * Go to **General** > **Login Items**. |
| 29 | + * Click the **+** button under "Open at Login" and select `Zonic.app` from your `/Applications` folder. |
| 30 | + |
| 31 | +## Development |
| 32 | + |
| 33 | +### Prerequisites |
| 34 | + |
| 35 | +- macOS |
| 36 | +- Xcode |
| 37 | + |
| 38 | +### Build and Run |
| 39 | + |
| 40 | +1. **Clone the repository:** |
| 41 | + ```bash |
| 42 | + git clone https://gitlab.com/AbhayVAshokan/Zonic.git |
| 43 | + cd Zonic |
| 44 | + ``` |
| 45 | +2. **Open in Xcode:** |
| 46 | + Open the `Zonic.xcodeproj` file in Xcode. |
| 47 | +3. **Run the application:** |
| 48 | + Select a macOS target (e.g., "My Mac") and click the "Run" button (Cmd + R). |
| 49 | + |
| 50 | +The application will appear in your macOS menu bar. Click on the menu bar icon to interact with it. |
| 51 | + |
| 52 | +## Schema |
| 53 | + |
| 54 | +### `places` Table |
| 55 | + |
| 56 | +| Column | Type | Constraints | |
| 57 | +| :------- | :------- | :------------------------ | |
| 58 | +| id | INTEGER | PRIMARY KEY AUTOINCREMENT | |
| 59 | +| name | TEXT | NOT NULL | |
| 60 | +| timezone | TIMEZONE | NOT NULL | |
| 61 | +| flag | TEXT | NOT NULL | |
| 62 | +| type | TEXT | NOT NULL | |
| 63 | + |
| 64 | +### `favorites` Table |
| 65 | + |
| 66 | +| Column | Type | Constraints | |
| 67 | +| :--------- | :------- | :------------------------------------------ | |
| 68 | +| id | INTEGER | PRIMARY KEY AUTOINCREMENT | |
| 69 | +| place_id | INTEGER | NOT NULL, FOREIGN KEY REFERENCES places(id) | |
| 70 | +| label | TEXT | NOT NULL | |
| 71 | +| created_at | DATETIME | NOT NULL DEFAULT CURRENT_TIMESTAMP | |
| 72 | + |
| 73 | +## Roadmap |
| 74 | +- Allow editing of favorite labels. |
| 75 | +- Auto-focus search text field on appear. |
| 76 | +- Reduce bundle size of the bundle by using a compressed DB. |
| 77 | +- Potentially allow reordering of favorites. |
| 78 | +- More robust error handling and user feedback. |
| 79 | +- Automatically add App to "Login Items" |
0 commit comments