A modern, federated social networking platform that breaks down the walls between social media instances
π₯ Watch Demo Video β’ π Documentation
Built with cutting-edge tech β’ Fully federated β’ Real-time updates β’ Modern UI/UX
Traditional social media platforms create isolated silos where users can't interact across different services. We built Social Distribution to solve this problem by creating a truly distributed social network where users from different instances can seamlessly connect, share content, and interact - just like email works across different providers!
π What makes us special:
- π True Federation - Connect with users across different servers
- β‘ Real-time Everything - Live updates, notifications, and interactions
- π¨ Beautiful UI - Modern glassmorphism design with smooth animations
- π Privacy First - Granular privacy controls for all content
- π± Mobile Ready - Responsive design that works everywhere
π¬ Click to Watch Full Demo Video
π Try it yourself!
| Frontend | Backend API | Admin Panel |
|---|---|---|
| React App | REST API | Django Admin |
| Modern UI/UX | Full API Docs | User Management |
πͺ Built with the best technologies for maximum performance and scalability
π Django 5.2.1 π Django REST Framework ποΈ PostgreSQL/SQLite
π Session Auth + CSRF π‘ ActivityPub Compatible π Federation Ready
π¨ Real-time Inbox πΌοΈ Binary Image Storage β‘ High Performance
Key Dependencies:
Django==5.2.1
djangorestframework==3.16.0
django-cors-headers==4.7.0
django-allauth==65.9.0
pillow==11.2.1
psycopg2-binary==2.9.10
gunicorn==21.2.0
βοΈ React 19.1.0 π TypeScript 5.8.3 β‘ Vite 6.3.5
π¨ Tailwind CSS 4.1.8 β¨ Framer Motion π Liquid Glass UI
π± Mobile-First π Real-time Updates π― Context State Mgmt
Key Dependencies:
react==19.1.0
typescript==5.8.3
vite==6.3.5
tailwindcss==4.1.8
framer-motion==12.18.1
react-router-dom==7.6.1
s25-project-black/
βββ backend/ # Django REST API
β βββ app/ # Main Django application
β β βββ models/ # Database models
β β βββ views/ # API endpoints
β β βββ serializers/ # Data serialization
β β βββ tests/ # Backend tests
β β βββ utils/ # Utility functions
β βββ project/ # Django settings
β βββ staticfiles/ # Collected static files
βββ frontend/ # React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components
β β βββ services/ # API service layer
β β βββ types/ # TypeScript definitions
β β βββ utils/ # Frontend utilities
β βββ dist/ # Production build
βββ docs/ # Project documentation
- β¨ Rich Posts with Markdown support
- πΌοΈ Image uploads and storage
- π·οΈ Smart categories and organization
- π Granular privacy controls
- π Trending content discovery
- π Advanced search capabilities
- π₯ Follow system with status tracking
- π Automatic friend detection
- π Likes & threaded comments
- π Real-time notifications
- π¬ Federated inbox system
- π― Personalized activity feeds
- π Node management and discovery
- π Cross-instance communication
- π‘ ActivityPub-compatible protocol
- π Push-based distribution
- π Remote following support
- π¨ Federated inbox delivery
- β¨ Liquid glass design (glassmorphism)
- π Dark/light mode support
- π± Fully responsive design
- π Smooth animations and transitions
- β‘ Fast performance and optimization
- π― Intuitive navigation
- Author: User accounts with federation support (extends Django's AbstractUser)
- Entry: Posts/content with visibility controls and multiple content types
- Follow: Follow relationships with status tracking (pending/accepted/rejected)
- Friendship: Computed mutual follow relationships
- Comment: Threaded comments on posts
- Like: Like interactions for posts and comments
- Inbox: Activity notification system for federation
- Node: Remote federated instance management
- Authors can follow other authors (local or remote)
- Entries belong to authors and support various content types
- Comments are linked to entries and authors
- Likes can target both entries and comments
- Inbox stores activities for activity distribution
- Nodes manage federated instance connections
π Python 3.11 π¦ Node.js 18+ ποΈ PostgreSQL π± Git
# Clone repository
git clone <repository-url> && cd s25-project-black
# Backend Setup (Terminal 1)
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
# Frontend Setup (Terminal 2)
cd frontend
npm install
npm run devAccess Points:
- π¨ Frontend: http://localhost:5173
- π§ Backend API: http://localhost:8000
- βοΈ Admin Panel: http://localhost:8000/admin
SECRET_KEY=your-secret-key
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
DATABASE_URL=postgres://user:pass@localhost/dbname
SITE_URL=http://localhost:8000
AUTO_APPROVE_NEW_USERS=TrueVITE_API_URL=http://localhost:8000
VITE_ENABLE_GITHUB_ACTIVITY=true
VITE_ENABLE_FEDERATION=trueThe backend provides a comprehensive REST API with the following key endpoints:
POST /api/auth/login/- User loginPOST /api/auth/signup/- User registrationGET /api/auth/status/- Check authentication statusPOST /api/auth/logout/- User logout
GET /api/entries/- List posts with filteringPOST /api/entries/- Create new postGET /api/entries/{id}/- Get specific post`PATCH /api/entries/{id}/- Update postDELETE /api/entries/{id}/- Delete post
GET /api/authors/- List authorsPOST /api/follows/- Send follow requestPOST /api/entries/{id}/likes/- Like a postPOST /api/entries/{id}/comments/- Comment on post
POST /api/authors/{id}/inbox/- Post to author's inboxGET /api/nodes/- List federated nodesPOST /api/nodes/add/- Add new node
For complete API documentation, see Backend API Documentation.
cd backend
python manage.py testcd frontend
npm run test
npx playwright test # E2E testsThe project is configured for Heroku deployment with automatic frontend building.
# Build process (automated on Heroku)
npm run heroku-postbuild- Set production environment variables
- Configure PostgreSQL database
- Set up static file serving
- Configure CORS for your domain
- Enable HTTPS
- Set up monitoring and logging
This project implements a simplified ActivityPub-compatible federation protocol:
- Create (entry): Distribute new posts to followers
- Follow: Send follow requests to remote authors
- Like: Share like activities across instances
- Comment: Federate comment activities
- HTTP Basic Authentication between nodes
- Node-specific credentials for cross-instance communication
- Session-based authentication for local users
- Fully Qualified IDs (FQIDs) for cross-node references
- Format:
http://{host}/api/{resource_path}/{uuid}
| π Docs | π₯ Media |
|---|---|
| Frontend Guide | Demo Video |
| API Reference | Project Spec |
π« Experience the future of social networking!
π₯ Watch Demo β’ β‘ Quick Start β’ π Explore Docs
Questions? Ideas? Contributions?
π Open an Issue β’ π‘ Start a Discussion β’ π€ Fork & Contribute
Making social media truly social, one federation at a time πβ¨
