this post was submitted on 28 Nov 2024
76 points (98.7% liked)

Fediverse

28744 readers
157 users here now

A community to talk about the Fediverse and all it's related services using ActivityPub (Mastodon, Lemmy, KBin, etc).

If you wanted to get help with moderating your own community then head over to !moderators@lemmy.world!

Rules

Learn more at these websites: Join The Fediverse Wiki, Fediverse.info, Wikipedia Page, The Federation Info (Stats), FediDB (Stats), Sub Rehab (Reddit Migration), Search Lemmy

founded 2 years ago
MODERATORS
 

Here are the problems I want to solve:

The same app everywhere

It will run as a website, iOS app (also on macOS), and Android app. It will be responsive, supporting phone, tablet, and computer screen sizes along with everything in between.

And I’m not talking about simply resizing the interface. Navigation (e.g. sidebar or on mobile bottom tab bar) will match what you would expect to see on the device size you’re using. But everything else (e.g. posts) will look the same, which I hope will make it really easy to jump from mobile to desktop.

Onboarding and configuration

The app will allow you to configure it to look like a typical Reddit or Lemmy app. During the onboarding process, I will prompt you, asking which style of interface you prefer. Consider these presets, which change a bunch of more granular configuration options. I will also give you the ability to fully customize each option instead of picking a preset.

Caching and offline support

This is where it starts to get more tricky. Caching is easy. If you launch the app, it will have everything you previously saw still loaded.

I would like to make it so upvoting, for example, can be done offline. The app will optimistically apply the upvote to the post or comment, then when you reconnect to the internet, it will actually apply the upvote. This is a difficult problem to solve, so I can’t promise this will work, and it would likely be the last feature I add.

I need your feedback

This is a big project to undertake. I really want a Lemmy client that checks those boxes for myself, but I’m curious if any of those resonate with you? Is there anything I missed that you would like to see? If I do build this, I will likely have to keep the project very focused as far as features go initially.

Just for context, I’m using Voyager on iOS currently. I really like it, but the “the same app everywhere” concept and making it easier to onboard Reddit users are my main motivations for creating my own app. My app will also be fully open source

top 50 comments
sorted by: hot top controversial new old
[–] MrMakabar@slrpnk.net 33 points 4 weeks ago (1 children)

Voyager is already cross platform for iOS, Android and web. It is also open source: https://github.com/aeharding/voyager

[–] moseschrute@lemmy.world 15 points 4 weeks ago (1 children)

Wow, I totally missed that. However, it does feel like the web was tacked on as an afterthought. It feels like navigation hasn’t been optimized for larger screens (see screenshot below). A sidebar would be much more usable on larger screens than this stretched bottom tab bar.

That being said, it would probably be easier for me to contribute to Voyager than to build my own app. But I also kinda want to build my own app, lol. But I might also consider contributing to voyager if they are interested in optimizing their interface for larger screens.

[–] Blue_Morpho@lemmy.world 17 points 4 weeks ago (1 children)

If you don't like how voyager does some things, fork it to add your own ideas. It's faster than starting from scratch.

[–] moseschrute@lemmy.world 13 points 4 weeks ago* (last edited 4 weeks ago) (1 children)

True. The thing is, my day job dictates the tech stack I use. There are specific technologies I want to learn in my free time, and those technologies happen to align well with this app, in my opinion. Forking is probably the smarter move… but I think I’m going to do it my way.

[–] fmstrat@lemmy.nowsci.com 3 points 4 weeks ago (1 children)

What stack do you want to be working in?

[–] moseschrute@lemmy.world 5 points 4 weeks ago* (last edited 4 weeks ago) (1 children)

Tamagui + One (built on React and React Native), tanstack for querying and list virtualization, flash list for native list virtualization, maybe Zustand, Dayjs. It will be 100% TypeScript. I will likely use no Server Side Rendering with React. I would like it to be possible to host the site via GitHub pages for free so the project can easily be forked. Beyond that I’m still deciding.

[–] fmstrat@lemmy.nowsci.com 5 points 4 weeks ago (1 children)

Good luck then, with that stack you'll likely be working alone as contributors typically drive forwards Flutter these days. But it sounds like you're doing this to learn anyway, which is great.

Personally I use Thunder and added the two column view for tablet, had considered PRing a web and/or desktop compilation to see how it looks, but realized I never used it. I don't even have a standard web UI up ony server all the time.

[–] moseschrute@lemmy.world 2 points 4 weeks ago (2 children)

Maybe my perception is skewed, but I just got done applying to React jobs, and there were tons of React Native gigs. I haven’t looked at Flutter in years, but I can’t imagine the market is flooded with as many Flutter people compared to React. There are also way fewer people that know Dart than JavaScript.

Tamagui is definitely more niche, but React has infected a large portion of the industry at this point, like it or not. Voyager is written in React Native.

The reason I’m choosing to go with Tamagui is that they do a good job of bridging the gap between React Web and React Native. Another solution would be to split native and web into separate code bases or share React business logic but have separate code for the web and native views.

My goal is to share as much of the code as possible. Feed virtualization will need to be handled differently on web vs native, and navigation will differ, but I’m pretty sure I can share 90% of the code between web and native.

So Tamagui is niche, but I do think it’s the right tool for the job in this case. The downside is Tamagui One is in beta, and Tamagui itself has more maturing to do, but I like what I see so far and I’m confident it will continue to improve, making it worth the investment. They also abstract away much of the complexity, which means less things I need to worry about.

load more comments (2 replies)
[–] gedaliyah@lemmy.world 18 points 4 weeks ago (1 children)

Awesome! Have a look at the Lemmy Apps Directory if you are interested in comparing the features of existing apps. You should especially see the web apps section, which has some brilliant solutions to cross-platform and cross-device functionality.

[–] moseschrute@lemmy.world 3 points 4 weeks ago (2 children)

Thank you! Will 100% use this as inspiration.

load more comments (2 replies)
[–] technomad@slrpnk.net 10 points 4 weeks ago (6 children)

Could you make a 'save post as draft' feature? I think that would make it stand out right now. I'm not sure if any other apps have this yet.

[–] troyunrau@lemmy.ca 3 points 4 weeks ago (1 children)

Connect saves drafts transparently as you move around the app.

[–] smeg@feddit.uk 3 points 4 weeks ago (1 children)
[–] technomad@slrpnk.net 2 points 4 weeks ago

Awesome, I'll give both of these another go then. Thanks

load more comments (5 replies)
[–] OpenStars@discuss.online 5 points 4 weeks ago (3 children)

It sounds really nice. Something to decide early on is whether to make it open source. Many people who use Lemmy specifically (more so than Reddit I am saying) will only use an app that is open source.

[–] moseschrute@lemmy.world 3 points 4 weeks ago (12 children)

It will be open source. I have no plans to profit from this. My goal is to keep my costs really low - as near $0 as possible - by not running any backend for the app. Everything will be local. I do hope to build a nice app with a lot of users to add to my portfolio, but other than that I mostly just want to see Lemmy succeed long term.

load more comments (12 replies)
load more comments (2 replies)
[–] Rooki@lemmy.world 5 points 4 weeks ago* (last edited 4 weeks ago) (2 children)

it should have good moderation implementation and have its markdown synced with lemmy ( like spoilers etc. ).

It should be easy to block, report.

I like the idea of the offline support. Could be cool if you are able to "download" a post for offline reading or just reading through its comments. <= could be linked with the "favorite" functionality of lemmy.

Thanks for adding another app to the diversity of lemmy.

[–] moseschrute@lemmy.world 4 points 4 weeks ago (1 children)

I’m not sure what percentage of Lemmy users moderate, but I would likely prioritize features that benefit the most users. Moderation might come a little later, but my goal is to allow you to do everything through my app eventually, including moderation.

[–] Rooki@lemmy.world 5 points 4 weeks ago* (last edited 4 weeks ago) (2 children)

Sadly then admins and mods will not use it until it has those features as otherwise it would be pain in the *ss to use it and swap around.

[–] asudox@discuss.tchncs.de 4 points 4 weeks ago

Yeah, that's primarily the reason why I'm still using Jerboa.

[–] moseschrute@lemmy.world 3 points 4 weeks ago

Again, I plan to add moderation features. But I am one person with a full-time job. I need to prioritize the features that will please the most users. Prioritizing everything initially could mean lots of bugs in the app, and I would lose users quickly due to a crappy app. I would rather build features slower but correctly.

That being said, if most Lemmy users moderate, then that would make this more of a core feature. But again, I want to also build an app that appeals to incoming Reddit users, and those people won’t be moderators. I’m hoping this will be a tool that can help grow Lemmy.

[–] moseschrute@lemmy.world 2 points 4 weeks ago (5 children)

My goal is to store everything offline for a period of time. Likely, it will be more complicated than this, but let’s say for now everything you see will be automatically cached offline for 30 days. Instead of a number of days, I will probably set a max size for the offline cache and drop the oldest data in the cache as new data comes in.

The only issue here is I’m not sure how easy it will be to cache images offline. They will take up more storage, and I’m not as familiar with image caching mechanisms for apps.

Do you know if Lemmy tends to have good alt text for images? That would be easier to cache offline instead of images.

Maybe after the initial version, I can add the ability to pin a post to your cache so it doesn’t get cleaned up automatically.

[–] asudox@discuss.tchncs.de 2 points 4 weeks ago* (last edited 4 weeks ago) (7 children)

You can use the hash for image caching.

load more comments (7 replies)
load more comments (4 replies)
[–] Alice@hilariouschaos.com 5 points 4 weeks ago

Cool. Let us know when it's ready to download

[–] Grimy@lemmy.world 5 points 4 weeks ago (2 children)

Great idea! Just here to offer support. I don't think voyager existing matters much, diversity is the name of the game for the fediverse.

Feature wise, I'd love to see something that embedded youtube videos and similar media with the url given but I'm not sure of the feasibility. Making something forward thinking that can eventually be integrated with other activity pub services would be a good idea but I'm certain that brings up the workload as well.

Keep us updated and make a sub when you have a name!

[–] moseschrute@lemmy.world 4 points 4 weeks ago

I have experience doing YouTube embeds. It’s not hard. It’s just a question of all the different types of media embeds I also choose to support.

[–] OpenStars@piefed.social 2 points 3 weeks ago

Fwiw, the Tesseract front-end for Lemmy (e.g. on dubvee.org), Mbin (needs an extra button press iirc), and PieFed all do native YouTube embeds, for posts using that as their URL.

[–] monsoon@friendica.world 4 points 4 weeks ago (1 children)

@moseschrute what advantage would this app have over voyager?

[–] moseschrute@lemmy.world 4 points 4 weeks ago

That’s a great question! As far as I can tell, Voyager is optimized for smaller screens, and larger screens are supported but not as well optimized. My app would have first-class support for large and small screen sizes. Alternatively, I may consider contributing to Voyager.

[–] originalucifer@moist.catsweat.com 4 points 4 weeks ago (1 children)

It will be responsive, supporting phone, tablet, and computer screen sizes along with everything in between.

isnt this already what browsers do? why reinvent the wheel here

[–] moseschrute@lemmy.world 4 points 4 weeks ago (3 children)

Sorry, I don’t mean this to sound rude, but websites don’t magically become responsive. It takes a lot of work. And that becomes even more complicated when you want to share large amounts of code between web and native.

I’m not reinventing the wheel. I’m using the best libraries—imo— to build a responsive cross-platform app.

load more comments (3 replies)
[–] secret300@lemmy.sdf.org 4 points 4 weeks ago (1 children)

I used to love slide for reddit because I felt it did offline the best even tho it couldn't up vote or comment

[–] moseschrute@lemmy.world 3 points 4 weeks ago* (last edited 4 weeks ago) (2 children)

That makes sense since upvoting and commenting seem the hardest to me. I think anything that interacts with existing content in the API will be more difficult to do offline than creating new content (e.g. creating a post offline).

load more comments (2 replies)
[–] Sunshine@lemmy.ca 3 points 4 weeks ago

Implement Shinigami Eyes so you can really stand out!

[–] solrize@lemmy.world 3 points 4 weeks ago

I use Voyager on android but the web client or "old reddit" style on larger screens. You could also look at redreader which is an android reddit client that could be adapted to Lemmy. IDK if there's an iOS version.

[–] rglullis@communick.news 2 points 4 weeks ago* (last edited 4 weeks ago) (7 children)

Why not take an existing client like Voyager, and add the features that you are missing?

This is exactly what I am doing for "easier onboarding". I am working on a fork of Voyager, learning my way through React Native and ionic, and adding support for Fediverser to it.

load more comments (7 replies)
load more comments
view more: next ›