ProFed is a reference implementation of a federated professional social network.
The goal of this project is to build an open, scalable, and high-availability platform for professional networking that is not controlled by a single vendor, and that supports federation between independent installations.
ProFed aims to provide:
- Federated professional profiles
- Distributed job and opportunity exchange
- Decentralized identity and trust mechanisms
- High availability and horizontal scalability
- Replaceable infrastructure adapters (message bus, storage, API, etc.)
The architecture is intentionally modular and component-based, with a message-driven core that allows future high-availability deployments and multi-instance services.
This repository currently contains:
- Configuration framework (in progress)
- PostgreSQL-backed message bus (in progress)
- Component lifecycle management framework (in progress)
- Unit test infrastructure
- Development environment setup
Functional components are not yet implemented.
Planned development stages:
- Finalize core runtime framework
- Implement PostgreSQL message bus backend
- Implement first components (profile ingestion, API, scraper)
- Define protocol specification (MIT licensed)
- Add federation mechanisms
- Harden system for high-availability deployments
This reference implementation is licensed under:
AGPL 3.0 or later
The protocol specification and architecture documentation are licensed under:
MIT License
See CONTRIBUTING.md for details.
Canonical repository:
https://codeberg.org/GrayDurian/ProFed
Please open issues there.
GitHub mirror (automatically synchronized):
https://github.com/cdonat/ProFed
Issues should preferably be raised on Codeberg.
- Python 3.11 or newer
- uv (Python package manager)
Install uv:
curl -Ls https://astral.sh/uv/install.sh | sh
uv venv
uv pip install -e .[dev]
Activate environment:
source .venv/bin/activate
Run tests once:
./scripts/test.sh
Run tests continuously with visual feedback:
./scripts/watch-tests.sh
Additional documentation is located in the docs/ directory:
Please see CONTRIBUTING.md for contribution guidelines.