https://github.com/abilian/abilian-sbe-monorepo
An experiment in making a monorepo for our SBE project
https://github.com/abilian/abilian-sbe-monorepo
Last synced: about 1 year ago
JSON representation
An experiment in making a monorepo for our SBE project
- Host: GitHub
- URL: https://github.com/abilian/abilian-sbe-monorepo
- Owner: abilian
- License: lgpl-3.0
- Created: 2021-09-16T14:53:26.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-05-06T16:38:38.000Z (about 1 year ago)
- Last Synced: 2025-05-06T16:47:27.719Z (about 1 year ago)
- Language: Python
- Size: 13 MB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/contributing.md
- License: LICENSES/CC-BY-4.0.txt
- Governance: docs/governance.md
- Roadmap: docs/roadmap.md
Awesome Lists containing this project
README
# About Abilian SBE
Build status: [](https://builds.sr.ht/~sfermigier/abilian-sbe/commits/main/ubuntu-lts.yml?)
- [Introduction to Abilian SBE](#introduction-to-abilian-sbe)
- [Key Features](#key-features)
- [Installation and Deployment](#installation-and-deployment)
* [Local (development)](#local-development)
* [Production](#production)
* [Configuration example](#configuration-example)
* [On Heroku](#on-heroku)
- [Development](#development)
- [License compliance](#license-compliance)
## Introduction to Abilian SBE
Abilian SBE (Social Business Engine) is a versatile platform designed for social business applications, particularly in the realm of collaborative or enterprise 2.0 business applications. It is ideal for creating enterprise social networks (ESN) and similar applications.
## Key Features
- **Community-Centric:** Focuses on 'communities' as collaborative spaces, offering services like document management, discussions, wikis, and user timelines.
- **Robust Foundation:** Built upon the `Abilian Core` project, which integrates Flask and SQLAlchemy, providing essential services.
- **Proven Track Record:** Reliably used by several major customers in production environments since mid-2013.
- **User-Centric Design:** Provides an intuitive and user-friendly interface, supporting rich profiles, conversation threads, and a social and content graph.
- **Extensibility and Flexibility:** Built with a platform approach, allowing for customization and easy extension through APIs, making it suitable for a wide range of business applications such as CRM, knowledge management, and e-learning.
- **Enterprise 2.0 Tools:** Incorporates core components of Enterprise 2.0, such as wikis, forums, mailing lists, document repositories, and activity streams, promoting collaboration and innovation within organizations.
- **Standards-Based Interoperability:** Supports ActivityStreams, OASIS CMIS (via Apache cmislib) for document management, and semantic web standards like JSON-LD, ensuring compatibility with existing enterprise systems and open standards.
- **Advanced Search and Tagging:** Features robust tagging and search capabilities to help users quickly find relevant content, improving knowledge sharing and capitalizing on collective intelligence.
- **Microservices Architecture:** Can be deployed as microservices, providing scalability and flexibility for modern enterprise environments.
- **Security and Identity Management:** Includes built-in services for identity management, security, and audit logging, ensuring compliance with enterprise-grade security requirements.
- **Document Management System (DMS):** Offers a simple yet effective DMS for organizations, integrated with collaboration tools such as forums and wikis, facilitating seamless document sharing and collaboration.
> [!NOTE]
> Join the Abilian SBE developer community and help shape the future of open-source enterprise collaboration! A first step would be to look at our **[Architecture Decision Records](notes/adrs) (ADRs)**—a collection of enhancement proposals where your expertise can make a real impact. Explore, discuss, and contribute your ideas and code enhancements to build the next generation of social business apps.
## Installation and Deployment
See also: [Installation Guide](docs/installation.md)
### Local (development)
You will need:
- Python 3.10 or more
- A running postgresql database (e.g. `createdb sbe-demo`)
- A redis server
- ImageMagick (for image processing)
- Poppler (for PDF processing)
- LibreOffice (for document conversion)
- Java (what?!? - yes, for Closure)
- Node + npm
- Some libraries: libpq (for Postgres), libjpeg, libxslt, libxml2, libffi, libssl, libmagic, libsqlite3, libbz2...
On Debian/Ubuntu, the following packages is a good starting point (TODO: check what is missing, what is not really needed):
```python
PACKAGES = [
# Build deps
"build-essential",
"python-dev",
"libpq-dev",
"libxslt1-dev",
"libjpeg-dev",
"libffi-dev",
"libsqlite3-dev",
"libbz2-dev",
# Server stuff
"postgresql",
"redis",
# Other deps (external tools)
"poppler-utils",
"imagemagick",
"libreoffice",
"default-jdk-headless",
# Other useful
"curl",
]
```
Now, create a virtualenv and install the app and its dependencies:
```bash
poetry shell
poetry install
npm install # or npm i
```
Set up the following environment variables (you may put these in a `.env` or `.envs` file and use an environment variable manager like [direnv](https://direnv.net/).
An example of configured `.env` is available: see `example_config/dot_env` file.
```bash
export FLASK_SECRET_KEY=
export FLASK_SQLALCHEMY_DATABASE_URI=postgres://localhost/sbe-demo # or whatever
# For development:
export FLASK_SERVER_NAME=127.0.0.1:5000
export FLASK_DEBUG=true
export FLASK_MAIL_DEBUG=1
# Same redis URL for all variables
export FLASK_REDIS_URI=redis://localhost:6379/0 # or whatever
export FLASK_DRAMATIQ_BROKER_URL=redis://localhost:6379/0
```
Then run:
```bash
flask db initdb # Or flask db upgrade if you already have a database
flask createuser admin
flask run
```
### Production
In production, you will need additionally:
- An email server (running locally on the server, e.g. like postfix, that's probably overridable)
```bash
# TBD: not sure if it's needed anymore
export FLASK_PRODUCTION = True
export FLASK_SECRET_KEY=
export FLASK_SQLALCHEMY_DATABASE_URI=postgres://localhost/sbe-demo # or whatever
export FLASK_SITE_NAME=""
export FLASK_SERVER_NAME="" # i.e. hostname www.mydomain.com...
# TBD (not checked)
export FLASK_MAIL_SERVER=
#export FLASK_MAIL_PORT : default 25
#export FLASK_MAIL_USE_TLS : default False
#export FLASK_MAIL_USE_SSL : default False
#export FLASK_MAIL_DEBUG : default app.debug
#export FLASK_MAIL_USERNAME : default None
#export FLASK_MAIL_PASSWORD : default None
# Same redis URL for all variables
export FLASK_REDIS_URI=redis://localhost:6379/0 # or whatever
export FLASK_DRAMATIQ_BROKER_URL=redis://localhost:6379/0
```
You can start the server with:
```bash
gunicorn 'abilian.sbe.app.create_app()'
```
If you are using a web server as a reverse proxy, for instance nginx, you can use the `proxy_pass` option to forward requests to the gunicorn server.
### Configuration example
A step-by-step configuration example using `honcho`, `.env` and `Python 3.12` is available in the `example_config` folder.
### On Heroku
Click on the button:
[](https://heroku.com/deploy?template=https://github.com/abilian/abilian-sbe-monorepo)
(Doesn't fully work - needs to be debugged).
## Development
See:
- [Development Guide](docs/development.md)
- [Contributing Guidelines](docs/contributing.md)
- [Roadmap](docs/roadmap.md)
- [Architecture Decision Records](notes/adrs)
- [Changelog](CHANGELOG.md)
## License compliance
As of `Tue Nov 5 08:50:20 CET 2024`, this project is compliant with the REUSE Specification version 3.2.
```
* Bad licenses: 0
* Deprecated licenses: 0
* Licenses without file extension: 0
* Missing licenses: 0
* Unused licenses: 0
* Used licenses: CC-BY-4.0, LGPL-3.0-only
* Read errors: 0
* Files with copyright information: 1712 / 1712
* Files with license information: 1712 / 1712
Congratulations! Your project is compliant with version 3.2 of the REUSE Specification :-)
```