I’ve been working on Habitat for the past two years. It all stemmed from this idea that I posted in April 2024.
Habitat is a free open-source, self hosted social platform for local communities. It is aimed at fostering local community discussions and discovery of areas of interest. This is why it is built primarily around location. A Habitat instance centers on a specific area, and the local community can make generic posts about that area, or they can make posts about specific locations in that area. More about what I’ve been building and the future plans here.
Features
- Habitat specification of location and size - enabling posts related to the local area
- Home feed - Displays the most recent posts
- Nearby feed - Displays posts sorted by proximity to the user
- Create posts - Upload photos, set locations, comments
- Categories - Location rules
- Amazon S3 image storage option
- Personalisation - Overrides Habitat defaults per user: kms/miles, hidden categories
- Moderation tools - User, post, comment moderation, block email addresses
- Announcements - Scheduled announcements
- Public moderation log - Keep moderator actions visible for 30 days
If you’re interest in this at all, please give it a spin and let me know how you get on. I’ll keep an eye here on Lemmy, but you can also post to the Habitat discussion board on GitHub.
Any relation to Lucasfilm/Fujitsu Habitat/Habitat II? https://renoproject.org/
It was an early virtual world, running originally on Commodore 64s, later on PCs and (in Japan) Sega Saturn, with a look and style heavily inspired by SCUMM games.
I don’t have a use case OP, but the project looks great. Seems like it would be an obvious NextDoor replacement.
This is perfect for me since I was banned from the NextDoor app for letting my community know the creature was hunting. I can host this for myself and others, and the nonbelievers can walk amongst it.
:D This is great news for everyone except for the creature.
Is this next-door for non boomers?
Sadly it will never take off but cool idea.
I absolutely love this idea. Does it support ActivityPub? And I would love to see users can set labels on themselves like what expertise they can offer etc.
Now that’s an interesting idea!
This release is step one in the plan. Federation is step two! More information on this here: https://carlnewton.github.io/posts/building-habitat/
I love what activitypub has done for the internet, but I don’t think it will be right for this project, but yes to federation – if there are instances to federate with of course!
It seems to me that activity pub could still be useful for a couple of reasons. If you live in the suburbs of a city, then bring able to also access an instance for your suburb and your city might be useful.
And if you live in multiple locales, or if want to stay connected to your old home town etc
Please do have a read of this: https://carlnewton.github.io/posts/location-based-social-network/#connecting-instances
I feel quite confident that a gossip protocol approach is the right way to go, but seamless connectivity to other instances is absolutely planned!
That was my bad. I was espousing federation, not AP specifically, and I see that federation is built in to the idea
Reading through your link, it seems like the main difference in your framework is that there’s auto-propogation of federation built in. Please correct me if I missed anything
Unrelated point: before you throw too much time and effort into building up federation, I want to bring something in the Matrix vs. XMPP debate: caching.
Apparently in Matrix, if a user on server A joins a chatroom on server B, then all of the content on the chatroom need to then be copied and synced to server A. There’s 2 primary problems with this: it’s a lot of duplication overhead that can limit scaling of the network and there’s legal consequences for server A caching potentially illegal content. There’s also a privacy concern as this means more parties that can see various interactions.
XMPP gets around these problems by having the user on server A just directly connect with server B, without server A caching anything.
I haven’t dug into too many of the differences myself, but wanted to bring it up in case it helped
Yes, this is a good point! I don’t necessarily want to slow one Habitat down when waiting for the response of another. It could lock up other requests. If it’s possible to send the user the url to retrieve posts with frontend javascript, that may definitely be worth looking into. It sounds like an XSS minefield though, but it could very well be the way to go.
Thanks for this.
That looks neat! Thanks for posting it!
Another idea you could potentially add down the line: what about functionality similar to Craigslist or Facebook Marketplace? Those tend to work by helping you focus on your local area as opposed to EBay.
Granted, Craigslist is largely fine imo, I’m just proposing a way to help you kill off Facebook
integrate it with #flohmarkt (and the fediverse in general) and you don’t need to reinvent the wheel :-)
Keep in mind that OP’s project is already based on a different protocol than the Fediverse for their own reasons. Trying to create and maintain a bridge between different protocols might be more work than to just make modifications to posts in the current system.
Other factors are end user experience and branding. Keep in mind that the average Facebook/NextDoor user isn’t tech-savvy, and could also be put off by the weird software names commonly found in the Fediverse
It’s likely worthwhile for OP to look into flohmarkt, but integration might not be the optimal method
What features are you thinking? To put a price on a post/mark as sold etc?
I agree with the user above, over here facebook is so entrenched not just thanks to the location-based groups and tagging but through the marketplace too. People rely on it to sell their old stuff. Of course the main hurdle as usual is making people care enough to use a different thing, even though the current solution works well enough for their use case. I could see it happening if towns adopted it officially and there was a bit of communication about it. Does your program federate with other instances ? like, if I want to sell my old table, will people in nearby towns that are hosting their own instance see my post ?
In any case great initiative
Thanks for this. Regarding your point on on making people care, I’ve just written up a post that touches on this: https://feddit.uk/post/45292700
Federation is not yet built in, but I have a plan. There are some details here: https://carlnewton.github.io/posts/location-based-social-network/#connecting-instances
I love the sound of this. Kind of a decentralized Next door but better? I’ve been really wanting a place for some local communities to organize that isn’t Facebook. Perhaps I’ll spin up an instance and see if I can get some interest.
Awesome! Let me know how you get on!
Is this NextDoor but for communists?
Hopefully not just communists
It’s open-source and self-hostable, so it’s for any group
People keep making the comparison. I don’t know, I’m not sure what features next door has, but I know it isn’t self hosted.
Next Lemmy update is going to have an option to block image posts (to remove low quality meme threads). People should stop turning text posts into image posts to avoid being blocked. I also find these hybrid posts quite annoying. You’re making your post look like something it’s not.
This wasn’t my intention. What does it make my post look like?
Like crap. Next time, write an article on your website, add a featured image, and link to that
Don’t listen to them. This post renders fine on both voyager and default Web mobile UI for world. You did nothing wrong.
So two mobile devices/UIs? Did you even understand the problem?
Yes. And it looks perfectly fine, like any other post, just with an image appearing as the thumb instead of the text-only icon.


Did you even understand the problem?
The answer is no, not yes.
I’m on Summit and it’s obvious from your post title and screenshot in my feed that this will be you presenting some kind of website or software. When clicked, the actual thread has your main post written out nicely.
I think if a filter like what’s described is on its way, it’s very poorly thought-out. Many interesting topics will include images; an album cover when discussing a band, your cat when asking for advice about said cat, etc. It’s also fairly normal on Lemmy to add alt-text of images as plain text in the main post, so a filter would either include such posts as not image-only or exclude posts like yours. Seems like a bad system. I should think it’s better for users to block meme comms.
It makes your post look like an image (low quality) instead of a link or discussion (possibly high quality).
A post introducing a graphical web-based system would be remiss if an image of that graphical system was missing.
Of course you can block those posts (if that function is.enabled) , but you’d be missing out on many discussions.
Preach!
We have a very strong national use of Hoplr, so it’ll be really hard to get people over and I haven’t seen any malpractice by Hoplr yet.
I would totally host that for my neighborhood, which as I understand is using Facebook a lot, which, of course, I am avoiding like the pest.
Looks cool! I’d love to see local buynothing groups have a Fediverse alternative.
Out of curiosity, is there any standard or common format around location data for Fediverse platforms?
Does it support Activity Pub?
sounds like that’s planned but maybe not in yet
Not activity pub specifically, but federation has always been in the plan.
How is it federation but not Activitypub specifically? I thought that was the only protocol that currently allows for federation. Are there others? Or other ways?
Activitypub is not the only one, no.
To be clear, there is no functionality that federates Habitat instances yet. This work is still to be done. ActivityPub is a protocol for decentralised networks. Though I will not be using ActivityPub, I will build functionality that will allow for a decentralised network of Habitat instances communicating data to each other. This will be federated by definition, but it will not communicate with Lemmy/Mastodon or anything else that uses ActivityPub.
Oh, I see. Why have you made that choice? I’d understand to keep the subjects towards more community oriented interests, but then, i’m not sure why federation of other community habitats would have any advantages over being separate.
For example, I imagine East Sussex and Alsace-Lorraine wouldn’t have a great degree of things to share between disparate instances like that.
Anyway, i’ve not had a chance to look at your instance yet, so maybe i’ll understand it better when I duck over there for a sticky beak. All sounds very exciting though! Well done!
Imagine this - you’re signed up to your local instance in – Perth is it? You go for a walk and find a beautiful old building, and want to know more about it. You open up your local Perth instance of Habitat, which you know about because you live in Perth and managed to find that instance, and click the Nearby feed, and the closest discussion to your location is about this very building. This functionality exists in Habitat right now.
Now imagine that you’re on holiday to Oxford in the UK – I can’t imagine why you’d choose our clouds over your sun, but it might be something to do with the old buildings here. You see an interesting old building, and want to know more about it, and open up your Perth Habitat instance, click the nearby feed. Your Perth instance will identify the closest Habitat instance to your location – it just so happens to have found one called Habitat:Oxford. Your Perth Habitat instance will show you results from the Oxford Habitat instance by proximity. This is why I want to federate instances, so that you don’t even have to worry about which instances have the posts relevant to your location, it’s all handled by the network.
Ah! Oh cool, but this would take geolocation. I predict that being a hard sell for lemmings.
But as I type that i realise/remember your post here is primarily an introduction for potential instance operators, not so much a user base. So the geolocation as an ‘issue’ is likely far less important (not forgetting a user can just turn it off anyway).
I predict that being a hard sell for lemmings.
Eh, if it’s an open-source application where you can review the code to confirm that the software isn’t tracking you, then it’s not an issue. Especially if you’re running Graphene OS, Rethink DNS, or Exodus to either sandbox or monitor your traffic
Though I will not be using ActivityPub
If you don’t mind my asking, what drove the decision to not base it on ActivityPub? On the surface that seems to be an easier starting point that building evetything out from scratch
Activity Pub doesn’t take advantage of the unique solution we have by knowing the user’s location and the location of instances. In a way, it seems overkill for what we want. Additionally, I don’t necessarily want other software communicating with Habitat. You never know, I might change my mind as I delve into it. I changed my mind on a great number of things as I came to develop them for phase 1. I accept that there are things about existing protocols that I don’t fully understand.
I thought that was the only protocol that currently allows for federation. Are there others? Or other ways?
The Matrix and XMPP protocols both support federation, though those are mainly for chat platforms
Forgive me if any of these questions have obvious answers:
Would Habitat be suitable for hosting community events, or communities in general?
if you ran a hobby group, would your local Habitat be the place to share things? How much control is in the hands of the users vs the administrator?
Could you help me understand what you mean by “hosting community events”? Your users can create posts about events, but it has no tools for video calls or anything like that. Users can create posts in the categories created by the administrator. They can leave comments on those posts. There are a bunch of moderation tools and ability for the administrator to have settings for posts based on the category they’re in.
I’m guessing they mean like facebook events? A distinct section of the platform that allows for some kind of invite system, a feed for just the event, and reminders.
Ah I see. No, no specialised type of post for events, date based information, invite systems, or anything like that. I can see why that would be good though so I’ll give it some thought.
Look at gamedate.org, or for immediate context search it on YouTube, you may be able to implement a copycat tool with more general lists of common events than the games list the site uses.










