Ocelot.Social
Ocelot.Social
Ocelot.social is free and open-source software to run your own social network — for a community, an association, a movement or a region. It is developed by a community of programmers and the operators of the networks running on it.
Our goal is that people can take part fairly and equally in online social networks — with every voice able to be heard. Instead of one platform for everybody, operators run networks of their own, and people choose where they want to be. The data stays close to the people and to the operator they trust.
In the long run we want these networks to connect (ActivityPub, Fediverse), so that people can follow and befriend each other across networks. If you would like to help build that, get in touch.
Screenshots
The pictures are taken from our demo data by the CI on every change to master, so they show the network as it is today.
![]() | |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
Features
Content
- news feed, filtered by topic, post type, the people you follow or your groups, and sorted by date or event start
- posts as articles and events (date, place, online or on site), with images and embeds
- comments, reactions, shouts and pinned posts
- hashtags, @-mentions and full-text search
- a map of people, groups and events
Community
- user profiles with location, social media links and badges
- following, muting and blocking
- groups — public, closed or hidden — with their own roles and rights: who may read, post, comment, invite, join or manage members is set per role, from a template or right by right
- invite links for the network and for groups
Communication
- chat: direct messages, group chats and file messages
- video calls in groups (LiveKit)
- notifications in the app and by e-mail, the e-mails configurable per kind
Running a Network
- roles and permissions: define who may do what in the network, beyond the built-in user, moderator, admin and owner
- network policies: switch features on or off — registration, invitations, groups, video calls and more
- moderation: reports, review decisions, disabling content and users
- administration of users, groups, categories, hashtags, pages, donations and API keys
- branding: name, logo, colours and texts of your own network
- 11 languages, installable as an app (PWA)
User Guide and FAQ
Demo
Try it on our staging network stage.ocelot.social. These logins work there and on a local installation with the demo data:
| password | role | |
|---|---|---|
user@example.org | 1234 | user |
moderator@example.org | 1234 | moderator |
admin@example.org | 1234 | admin |
owner@example.org | 1234 | owner |
Help Us
- Spread the word: link ocelot.social on your website, like it on AlternativeTo, star this repository, tell your friends, or write about it.
- Take a good first issue — read CONTRIBUTING.md first.
- Test and report bugs, review pull requests.
- Translate: please contact us.
Donate
Ocelot.social is mostly developed and maintained by the association busFaktor() e.V.. Please support it with a donation. Thanks a lot! ❤️
Contact
Would you like to run a network of your own, or join one?
- hello@ocelot.social
- our developer chat on Discord
For Developers
New here? The documentation covers the backend, the webapp, testing and deployment; questions are welcome on Discord.
Quick Start
With Docker (24.0.6 or newer):
$ git clone https://github.com/Ocelot-Social-Community/Ocelot-Social.git
$ cd Ocelot-Social
$ cp webapp/.env.template webapp/.env
$ cp backend/.env.template backend/.env
$ docker compose up
# in a second terminal, once everything is up
$ docker compose exec backend npm run db:migrate -- init
$ docker compose exec backend npm run db:migrate -- up
$ docker compose exec backend npm run db:seedThen open http://localhost:3000 and log in with one of the demo accounts. The full guide — production compose, local installation without Docker, Apple Silicon and the one-time MinIO volume migration — is in installation.md.
Repository Layout
| Folder | What it is |
|---|---|
| backend | GraphQL API server (Node.js, TypeScript, Apollo) on a Neo4j graph database |
| webapp | the web frontend (Vue 2, Nuxt 2), server- and client-side rendered |
| packages/ui | the component library, Vue 2 and 3 compatible, with Storybook |
| packages/branding | what a network can brand, and the defaults |
| cypress | end-to-end tests and executable feature specifications |
| deployment | Helm charts and configuration for running a network |
| maintenance | the page shown while a network is under maintenance |
Technology Stack
- Vue.js and Nuxt, Tailwind CSS in the component library
- GraphQL with Apollo, Node.js and TypeScript
- Neo4j, MinIO / S3 for uploads, LiveKit for video calls
- Docker, Kubernetes and Helm
- Testing: Vitest (backend), Jest with Vue Test Utils (webapp), Cypress (end-to-end), Playwright and Storybook (visual and accessibility tests of the components), ESLint
Contributing
Choose an issue — our good first issues are a good start — and leave a comment there. We will then invite you to our volunteers team, which gives you the permission to push to this repository; if we have not invited you yet, ask for it on Discord.
Please work on a branch of this repository rather than a fork: the CI needs credentials a fork does not get. Name the branch <issue-number>-<description> and open a pull request against master.
Before you push, run the linters, and the tests of what you changed:
# in folder webapp/
$ npm run lint -- --fix
$ npm run locales -- --fix
$ npm test
# in folder backend/ — the tests wipe the database they run against,
# so never point them at data you want to keep
$ npm run lint -- --fix
$ npm testMore in our contribution guideline. On Discord, introduce yourself at #introduce-yourself and mention @@Mentors to get onboard 🤓
Deployment
Networks run on Kubernetes, deployed with the Helm charts in deployment. A network's look and texts live in its own branding repository; stage.ocelot.social is the template.
Attributions
Locale icons made by Freepik from www.flaticon.com, licensed under CC 3.0 BY.
Browser compatibility testing with BrowserStack.
License
See the LICENSE file for license rights and limitations (MIT).






