5 ms·
Show HN: Manabi Reader – Learn Japanese by Reading on iOS and macOS (SwiftUI)
I quit my job last year and worked mostly on this full SwiftUI rewrite of my Japanese reading app, Manabi Reader. The rewrite gave me the opportunity to expand to macOS (and without Catalyst so it feels extra native) and redo the data layer to be offline-first via Realm with iCloud sync.
The biggest differentiators compared with other language study apps are that it tracks every word/kanji you read so that you can see how much of a given webpage/article you're already familiar with and other features/analytics built on that foundation; it automatically builds a personal corpus of example sentences; and that it does all the Japanese tokenization/dictionary lookups locally on-device and in a flexible web browser-like UI with readability mode, to be respectful of your privacy and to work offline.
I've also added Anki integration. Tap a word, tap another button to save it to Anki with the original source material sentence and URL. I have a Manabi Flashcards app as well if you don't like Anki.
Packed with free features. See what percent of each article's vocabulary you're familiar with based on your reading history. Scan paragraphs of text with your camera to look up words. Japanese/English dict. Native Japanese web dicts. Look up kanji by drawing. Expanded JLPT levels. RSS. Web browser UI. Save links from other apps. Works offline. Readability mode. Tap words to look them up. Furigana depending on your familiarity with each word.
Future plans: besides more features (ePUB, YouTube, mpv player, WaniKani integration, more languages, etc), I’m also preparing the underlying SwiftUI web browser lib as open source and will launch it as a WebKit-based browser/reader option, which I’m excited to get out alongside other interesting recent entrants to the desktop and mobile browser market.
- Push_to_master 3y agoDang, looks really cool and I would give it a shot, but no ios or mac device. Keep it up though, it looks sweet.
- wahnfrieden 3y agoI have longer term plans to bring more of this to web and windows. I’m tracking what Arc is doing with Swift/UI on Windows. Also working on self publishing and self hosting functionality so that material can be shared on web beyond inside the app. Solving cross plat will be critical for expanding this to classrooms.
- opdahl 3y agoJust curious, did you ever think about using Flutter for this instead of Swift? To me it seems like a pretty obvious choice given you are a one-man team and want to get it onto multiple platforms.
- wahnfrieden 3y agoGood question. Yes it's the biggest question of course, what to do about cross platform. I started this codebase during iOS 7 so Flutter didn't exist yet, but I did decide to lean into serving a niche better than going wide from the start, which is why I stuck with native. I'm pursuing a "Transmission app"-like model - native frontend, cross platform core (+ also some cross platform frontend, in my case). I believe this can translate to high value for users, and I get positive feedback on the design and native feel of my apps. I have a lot of this app implemented within the webview/user scripts and am expanding the web part more with my next (adjacent/overlapping) project. I'll also be using Flutter for the upcoming mpv player as a component. This is still unsolved for me though, so far I am creating optionality and a direction toward a solution, but yes I need to go faster than just myself (and I refuse to seek investors for anything). I'm also trying to get some worker cooperative structures going with one or two others on adjacent projects, around some shared codebase foundations, strategically to expand faster into web or other platforms. I bought IndieDevStack.com and will later blog about and also productize this approach with another app + open source.
- opdahl 3y agoI see, thanks for your answer. Sounds like you have a great, though difficult, plan. Best of luck!
- eps 3y agoPlease add an one-time fee (non-subscription) option.
- wahnfrieden 3y agoI’m probably going to add a “use for free” button instead as an affordability option, and will make more and more features free tier (the flashcards being paid is only temporary until 3.1 or 3.2) because I have near zero marginal cost per user besides my own labor. I won’t do a one time option.
- eps 3y agoYour choice obviously, but paying a recurrent fee for an existing function as opposed to new content comes across as unjustified and inherently unfair.
- wahnfrieden 3y agoYou prefer schemes then where you have to pay for new functions, and pay once again for new features added later on, and so on? I am also producing content and will have more. It sounds like you’d want that content to be paid for instead of just free to make sense of the subscription options. That’s a good idea.
- ronsor 3y agoPerhaps adopt a hybrid model where you keep the features added before and up until the end of your subscription term? Then if you want features added after that, you have to renew your subscription.
- eps 3y agoYes, I much prefer that and I'm probably not in the minority. This arrangement lands itself especially well on educational apps - you would buy a "module", master it, progress, buy next one, rinse and repeat. If you stall, that's your problem, the $ waste is limited and you can always backtrack and re-learn without paying again. Just like with textbooks.
- Nerada 3y agoAny narration for the stories? That's the killer feature of Satori Reader for me. I'm fairly sure they hire voice actors, but from what I understand, Japanese text-to-speech is fairly robust.
- wahnfrieden 3y agoYes there is a Spoken Word category with news and stories. I will also add more TTS functionality.
- knubie 3y agoA way to create Mochi [0] flash cards would be nice! [0] https://mochi.cards/ https://mochi.cards/
- wahnfrieden 3y agoThanks, sounds good. As I rewrite the Manabi Flashcards app next, I'm working on a better flashcard sync than simply exporting cards to other services. I'll have it be able to fully sync in/out your Anki and WaniKani decks, so that you can review them in either place. I'll then update Manabi Reader to automatically "passively" review your flashcards for you when you read content that contains the vocab or kanji. I'll add Mochi Cards to the list for when I get to that set of functionality, or an earlier update for simple export.
- fermentation 3y agoReally cool idea. One thing I'd love would be to filter content by JLPT level, like a graded reader. Seeing a bunch of N2 vocab in the "beginners" section is confusing and makes me feel like I'm not yet ready to use this app.
- wahnfrieden 3y agoThis does better than that. As it learns your familiarity, it will give you a familiarity % for each page you load, with breakdowns showing how many of the vocab/kanji you know, are still learning in flashcards, or that are new to you. It sounds like you'd like to see a summary of what JLPT level the unknown words are at. You can see this info via the familiarity dropdown but I can see how surfacing that earlier is valuable. I do have some JLPT N5/N4/N3-specific feeds in there as well. I'll look into what's going on with N2 vocab in beginners category (though the JLPT classification is imperfect because there is no officially published list - I've used ebook corpus w/ custom heuristics to guess at the rest of the JLPT vocab beyond the partial list officially published years ago). I also plan to add "ultra beginner" / "from zero" introductory materials soon.
- skiman10 3y agoThe third party developer scene is getting dire on Android, and I have definitely been considering jumping ship soon. I've lived my entire computing life on Android... But Google is losing a lot of confidence from me.
- wahnfrieden 3y agoI'm trying to bring a lite (to start) version of this to web/win/android before too long. Working with a partner on adjacent project to build the tech out for this. I had a prior competitor who shut down (maybe because of server costs) but had gotten a lot of word of mouth in large part thx to having a free android app. Loads of users over there even if harder to monetize/do native stuff with, but lots of people eager for better apps in certain niches who will build popular consensus via word of mouth
- zztop44 3y agoThis is fantastic, well done. So far it seems much better than anything out there for assisted reading, I can definitely see myself using it every day! I’d mostly ignore the feedback about the subscription. Yeah, having a new subscription for everything sucks but Apple makes it extremely easy to review and cancel your subscriptions. And your free tier is already useful and by allowing everyone to use the education discount if they want, I think you’ve got plenty of options covered. Experiment with adding a lifetime purchase down the road if you want, but I’d be hesitant of adding a “pay nothing” option for the premium features. Most people will choose it, even if they could easily afford to pay and are getting lots of value from product. Nice work! For now I’m doing fine on the free tier but I’ll definitely upgrade when I run into a paywalled feature I want to use.
- wahnfrieden 3y agoThank you! It has a lot of features so I'm not always sure what to really highlight to make it clear that there are vanishingly few comparable options out there, especially for Japanese and for features like the word/kanji tracking. Btw, I'd love to get a testimonial from you if you'd like me to check in with you later and to hear any feedback you have after using it some more - please contact me if it's alright alex@manabi io
- gfaure 3y agoAnother cool feature to add would be pitch accent data from one of the various sources (e.g. Wiktionary, OJAD, ...)
- wahnfrieden 3y agoUnfortunately the data that other apps use for this is copyrighted (just with obfuscated origins so people don't care). I forgot that Wiktionary has pitch accent data though, thanks. I plan to use Wiktionary to expand this app to many more language pairs as well. If you go to the "External" resources tab on a lookup, I did integrate OJAD already, but it would be better to have this data alongside the JMDict dictionary too.
- pm2222 3y agoIs ‘sentence translate’ working properly for y’all? I feel the content is there but a splash hides it.
- wahnfrieden 3y agoThanks for the bug report, I will fix this ASAP
- S_A_P 3y agoVery cool! I just started a project with a Japanese company and was thinking I should try and learn a bit of the language.
- wahnfrieden 3y agoI will make it more friendly to beginners starting from zero - sorry if it's a little challenging to dive into, you'll need to learn hiragana and some basics first
- least 3y agoI'd downloaded your app some time ago, but I guess it didn't really stand out to me amongst the other learning apps. Adding anki integration, however, is a huge deal to me. That already puts it a step ahead of stuff like Easy Japanese. I would say, some of the ui elements are broken on an iPhone 13 mini. With the anki creation dialog (with the listing of all the features), the button that I'm assuming was the confirm button was off screen and couldn't be scrolled to. Also, if you don't take action on a specific kanji, it will remove the furigana as if it's "known." This seems a bit counter-intuitive to me. If I don't take any action on it, I feel like it should return to its original state. I've also had the lower drawer (?) disappear entirely never to return. In the sentences tab, when I press the "translate" button it begins rendering the webpage then turns into a blank screen; I have to open it in the default browser to see it. In some cases the "open in default browser" button also disappears. When I have some more time I'll definitely be diving into this app more. Despite the bugs, it might have enough value adds to considering paying for it. Thanks for sharing!
- wahnfrieden 3y agoThanks for the bug reports! And glad the app finally stands out for you ;) I'll re-test on iPhone 13 mini dimensions for correct layout and will ensure it works properly. For the furigana, you can configure this behavior in the reader settings - whether it hides furigana from familiar words (ones you've marked as read or looked up), or only words you are learning in flashcards, or to always hide or show them. Maybe the "only when learning in flashcards" setting is a better default? I've made that change for the next update. The lower drawer was implemented in a strange way because of a SwiftUI limitation. I've found a solution and will reimplement this to prevent this class of error from recurring. The translation function someone else reported here, I will fix as well. Please keep the feedback coming. You can reach me on twitter or email or chat.
- barlog 3y agoGreat works! I would like to try it out from a native Japanese speaker's point of view. And i always want to help everyone learn Japanese.
- wahnfrieden 3y agoThank you! Appreciate any feedback
- jmerz 3y agoYou’ll absolutely nab me with a wanikani integration. I think the biggest challenge for these learning apps with me is that nothing talks to each other and everything wants me to use it in a silo.
- wahnfrieden 3y agoStay tuned. I’m shipping a programmable AI playground app for iOS/macOS next to then bring that tech back to Manabi, and then I’m redoing the flashcards app with wanikani.
- minmax2020 3y agoMay I ask what library you're using for kanji to hiragana transliteration? I'm working on a language product as well and I'm using pykakasi which is certainly prone to errors. I tried your app and noticed similar errors as well (大いばり should show ooibari instead of daiibari, for example). Wonder if we can do better on transliteration.
- wahnfrieden 3y agoMeCab with ipadic and a lot of custom swift logic for fixing issue patterns and matching to JMDict entries as an additional heuristic that the stemming/token was done right. I’m also using a custom generated JLPT classification (a more complete guess at what the full set of JLPT vocab is based on ebook word freq) to choose more likely candidate results. I haven’t improved this in a couple years, it’s one of my upcoming focuses now that I have the app rewritten and out. Unidic also interesting but harder to use and huge data size. I’m going to be layering on gpt to further improve. What're you working on?
- pototo666 3y agoCool product! Can you have special section for audio contents which have transcriptions? That would be very good feature to pay, at least for me.
- wahnfrieden 3y agoThanks! Check the Spoken Word category? I will also add YouTube etc. And I'm thinking on this, what else I can do... I love shadowing, it's my favorite way to learn.
- baka367 3y agoWhy is the app so big? It seems a bit excessive for a reader app to be a 700 mb download.
- wahnfrieden 3y agoThe estimate size is an overshot estimate because I adopted Apple's new lazy downloads framework and needed to estimate how big the downloads are, including after they get updated. I'll refine this, I need to check again but the final size should be smaller. However it is still large because it contains JMDict, JMNEDict for names, furigana tokenization data for JMDict, SQLite search index for JMDict, and some other fixture data. I can optimize this down a bit further (such as collapsing JMDict into its SQLite search index). I will also make this more customizable later as I add more lang support so that you can more granularly control what dictionaries you're downloading.
- laurieg 3y agoI tried out the macOS version and really liked it. Some feedback: * I couldn't get the "open url" button to work. * I'd really love a Japanese monolingual dictionary. Or the ability to bring your own in some way. * I turned furigana off but it was back on again when I opened another article. I had to turn it on and off to hide it again. Same with JLPT levels Is there a way to say "I know every word in this article" so that high level people can get up and running faster?
- wahnfrieden 3y agoThanks for the detailed feedback! Open URL: I'll fix. Monolingual: check 'External', there are monolingual web dictionaries that I've tried to load into a webview in the lookup popover; this is an early "v1" of that feature though so please let me know if it can be improved/isn't working for you. I'll also add EPWING import later, sure, though that's niche, it's powerful. Furigana/JLPT: thanks for the bug report, I'll fix. "Every word in this article": yes I want to make this easier for sure, that's a good idea, I'll also make it easier to do bulk operations on the list/table views of vocab/kanji. I also plan to add sync with other systems like Anki, WaniKani so that it can pull in everything you already know. Please keep the feedback coming.
- butz 3y agoFree web design tip: white on yellow is hard to read, try to find better contrasting colors.
- wahnfrieden 3y agoUpdating ty
- siddbudd 3y agoUnder Beginners > NHK News easy I cannot scroll the content of the webpage, so I only see a photo and a couple lines of text. I can make the font smaller, then it all fits, but then it is too small to read. No such problems on MATCHA Japan Travel. Then again, I cannot scroll the list of "Blogs" or "Spoken Audio" either. How many entries I can see depends how I resize the window. Testing on a Mac (MB Air - M1) with latest Ventura.
- wahnfrieden 3y agoThank you, I’m putting together a fixes release right now. Sorry for the trouble
- wahnfrieden 3y agoHi siddbudd, could you shoot me an email? alex@manabi io I just want to confirm these issues with you since I haven't been able to reproduce yet. Could you show me a simple video perhaps? Thanks
- wahnfrieden 3y agoWhat screen resolution / screen "zoom" level?