Cosmoslide is a federated platform for sharing presentations and microblogging, built on the ActivityPub protocol. It combines the social aspects of microblogging with PDF presentation sharing, allowing users to share knowledge while maintaining ownership of their content.
- Federated microblogging - Share posts across the fediverse
- PDF presentation sharing - Upload and share PDF files up to 200MB
- PDF preview - In-browser PDF viewing with native browser controls
- S3-compatible storage - Works with Cloudflare R2, AWS S3, or any S3-compatible service
- ActivityPub support - Compatible with Mastodon, Pleroma, and other federated platforms
- Magic link authentication - Secure, passwordless login
- User-owned content - Your data stays with you
- Node.js 22+
- PostgreSQL 16+
- pnpm package manager
- Docker & Docker Compose (recommended)
# Clone the repository
git clone https://github.com/yourusername/cosmoslide.git
cd cosmoslide
# Install dependencies
pnpm install
# Set up environment variables
cp .env.example .env
# Edit .env with your actual values
# Run with Docker (recommended)
docker-compose up
# Or run locally
pnpm devAccess the application at:
- Admin Panel:
http://localhost:3004 - Backend API:
http://localhost:3000 - V1 Frontend:
http://localhost:3001 - PostgreSQL:
localhost:5432 - Redis:
localhost:6379
# 1. Set up environment variables
cp .env.example .env
# Edit .env with production values (DB password, domain, etc.)
# 2. Build and run production containers
docker-compose -f docker-compose.prod.yml up -d --build
# 3. Check logs
docker-compose -f docker-compose.prod.yml logs -fProduction services will be available at:
- Admin:
https://admin.cosmosli.de - API:
https://api.cosmosli.de - V1:
https://v1.cosmosli.de - V2:
https://v2.cosmosli.de(coming soon)
For detailed deployment instructions, see Production Deployment Guide.
- Design Document - Architecture and roadmap
- Federation - ActivityPub implementation details
- Contributing - How to contribute
- NestJS - Backend framework
- Next.js - Frontend framework
- Fedify - ActivityPub implementation
- PostgreSQL - Database
- TypeScript - Language
pnpm dev # Start development servers
pnpm build # Build for production
pnpm test # Run tests
pnpm lint # Lint codeCosmoslide implements the ActivityPub protocol for federation:
- WebFinger:
/.well-known/webfinger - Actor endpoint:
/@{username} - Inbox/Outbox:
/@{username}/inbox,/@{username}/outbox
We welcome contributions! Please see our Contributing Guide for details.
Copyright (C) 2025 Cosmoslide Contributors
Licensed under the MIT License.
