Metadata-Version: 2.4
Name: abilian-sbe
Version: 1.1.15
Summary: Social Business platform (entreprise collaboration and information management)
Project-URL: Repository, https://github.com/abilian/abilian-sbe
Author-email: Abilian SAS <sales@abilian.com>
License-Expression: LGPL-2.0-or-later
License-File: LICENCE.txt
Requires-Python: <3.13,>=3.11
Requires-Dist: apscheduler<4.0.0,>=3.10.4
Requires-Dist: attrs>=24.2.0
Requires-Dist: babel
Requires-Dist: bcrypt
Requires-Dist: bleach[css]<7.0.0,>=6.2.0
Requires-Dist: blinker>=1.6.2
Requires-Dist: certifi
Requires-Dist: chardet
Requires-Dist: click>=8.1.3
Requires-Dist: closure==20161201
Requires-Dist: cssmin
Requires-Dist: defusedxml<0.8.0,>=0.7.1
Requires-Dist: deprecated
Requires-Dist: devtools
Requires-Dist: dramatiq-abort<2.0.0,>=1.1.0
Requires-Dist: dramatiq<2.0.0,>=1.15.0
Requires-Dist: filelock<4.0,>=3.15
Requires-Dist: flask-assets==2.1.0
Requires-Dist: flask-babel<1.1.0,>=1.0.0
Requires-Dist: flask-dramatiq<0.7.0,>=0.6.0
Requires-Dist: flask-login<0.7.0,>=0.6.3
Requires-Dist: flask-mail>=0.9.1
Requires-Dist: flask-migrate<4.1.0,>=4.0.5
Requires-Dist: flask-sqlalchemy==3.0.1
Requires-Dist: flask-super>=0.2.8
Requires-Dist: flask-talisman<1.2.0,>=1.1.0
Requires-Dist: flask-wtf==1.2.0
Requires-Dist: flask<3.1.0,>=3.0.2
Requires-Dist: gunicorn
Requires-Dist: html2text<2025,>=2024
Requires-Dist: hyperlink>=21.0.0
Requires-Dist: itsdangerous>=2.1.2
Requires-Dist: jinja2<3.2.0,>=3.1.3
Requires-Dist: jsmin
Requires-Dist: langid>=1.1.6
Requires-Dist: loguru<0.8.0,>=0.7.2
Requires-Dist: lxml
Requires-Dist: markdown<4,>=3
Requires-Dist: markupsafe<2.2.0,>=2.1.4
Requires-Dist: maxminddb
Requires-Dist: numpy<2.0.0,>=1.26.3
Requires-Dist: openpyxl
Requires-Dist: pandas>=2.2.0
Requires-Dist: pillow
Requires-Dist: psycopg2<3.0.0,>=2.9.9
Requires-Dist: pytest>=8.3.3
Requires-Dist: python-dateutil<3.0.0,>=2.8.2
Requires-Dist: python-dotenv>=1.0.1
Requires-Dist: python-magic
Requires-Dist: pytz
Requires-Dist: redis<5.0,>=4.6.0
Requires-Dist: sentry-sdk[flask]
Requires-Dist: sqlalchemy==1.4.35
Requires-Dist: svcs>=24.1.0
Requires-Dist: toolz
Requires-Dist: tqdm
Requires-Dist: validate-email
Requires-Dist: webassets==2.0
Requires-Dist: werkzeug<3.2,>=3.1.0
Requires-Dist: whoosh-reloaded<3.0.0,>=2.7.5
Requires-Dist: wtforms-alchemy==0.18.0
Requires-Dist: wtforms-sqlalchemy<0.5.0,>=0.4.1
Requires-Dist: wtforms==3.1.2
Requires-Dist: xlwt
Description-Content-Type: text/markdown

# About Abilian SBE

Build status: [![builds.sr.ht status](https://builds.sr.ht/~sfermigier/abilian-sbe/commits/main/ubuntu-lts.yml.svg)](https://builds.sr.ht/~sfermigier/abilian-sbe/commits/main/ubuntu-lts.yml?)

<!-- toc -->

- [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)

<!-- tocstop -->

## 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=<your 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 <some email address> <username>
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=<your secret key>
export FLASK_SQLALCHEMY_DATABASE_URI=postgres://localhost/sbe-demo # or whatever

export FLASK_SITE_NAME="<your site name>"
export FLASK_SERVER_NAME="<your server name>" # i.e. hostname www.mydomain.com...

# TBD (not checked)
export FLASK_MAIL_SERVER=<your email 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:

[![Deploy](https://www.herokucdn.com/deploy/button.svg)](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 :-)
```
