Galileo is a Reddit browser for macOS that I've been building during my coronavirus quarantine time as a way to learn macOS programming. It is built with Swift and AppKit using Xcode 11.4. You can download the latest release here
Features currently supported:
- Sign in with your reddit account
- Browse posts and upvote/downvote posts
- View your subreddit subscriptions
- View trending subreddits
- Search all reddit or search a specific subreddit
- View posts and comments.
- upvote/downvote comments
- Respond to comments
- View your mailbox, and respond to comments in your mailbox
- Sort posts
- View Reddit hosted videos and image, imgur hosted gifs and images, and youtube videos
- Save and unsave posts
- Tabbed windows
Features Planning to support:
Logout✅Save comments✅- autofill subreddit suggestions when typing in "go to subreddit" box
add links to Post detail view for link posts✅- better support for window resizing
- Change "All" icon on sidebar to be different from that of the Home button
- CMD+T for opening a new window
- handle callbacks for errors when commenting
sorting comments✅
Features I am not planning to support (but would welcome a pull request on):
- create a post
- view user's profiles
First, create a file Config.xcconfig
and place it in under the main Nicea app folder. This app relies on Reddit API keys, but the keys are in a config file which I do not check into this repository.
Once you create the file, you will need to create an app with the Reddit API (https://www.reddit.com/prefs/apps/) and then use your client ID (REDDIT_CLIENT_ID
in this project). For BEARER_AUTH_HEADER
, you will need to use Basic HTTP authentication, using your client ID as the username and an empty string as the password. So your BEARER_AUTH_HEADER
value will be something like Basic xxxxxxx
. REDDIT_AUTH_URL_STATE
can be any random string you would like. Set the values for REDDIT_CLIENT_ID, BEARER_AUTH_HEADER, and REDDIT_AUTH_URL_STATE in the xcconfig file you created above. Then build and run!
- I use my own networking library, WhiteFlowerFactory for HTTP routing
- I use CocoaMarkdown to support markdown. This is the only 3rd party library used in the app.
- I use all native AppKit components for rendering all views. Markdown is rendered on an NSTextView using NSAttributedString, not a webview.
- I use MVVM for the architecture