Skip to main content

Backend — Tech Stack

Repository: finmars-platform/finmars-core and finmars-platform/finmars-workflow

Overview

This document lists the technologies, libraries, and approaches used in the core and workflow backend.

Language

  • Python (primary language)

Frameworks & Runtime

  • Django (project structure with manage.py, templates)
  • Django REST Framework (DRF) (API layer)
  • Gunicorn (WSGI/ASGI server for running Django in production)

Dependency Management

  • Poetry (pyproject.toml present)
  • pip/requirements files for environments: requirements.txt, requirements-dev.txt, requirements-test.txt

Containerization & Local Orchestration

  • Docker (Dockerfile)
  • Docker Compose (docker-compose.yml)
  • Makefile for common dev ops (make migrate, make up, etc.)

CI/CD

  • GitHub Actions for build/test/deploy pipelines
  • Builds use the provided Dockerfile

Scripts & Tooling

  • Shell scripts for setup and maintenance: generate_env.sh, migrate.sh, import-sql.sh, graph.sh

Configuration

  • .env.sample for environment variables example
  • Standard Django settings (inside the project; details depend on env files)

Database

  • PostgreSQL 15

Storage (one of options)

  • S3 / Minio/ Azure Storages
  • Local File Storage
  • NFS Storage

Caching

  • Redis (used for caching)

Message Queue & Background Tasks

  • RabbitMQ (used for task queues)
  • Celery (used for background and scheduled tasks)

Authentication

  • Keycloak (mandatory integration for authentication)

Testing

  • Test requirements listed in requirements-test.txt (exact test tools depend on that file, e.g., pytest)

Libraries

The full list of libraries is declared in requirements.txt and pyproject.toml. These include (but are not limited to):

aiohappyeyeballs==2.6.1
aiohttp==3.11.18
aiosignal==1.3.2
alabaster==1.0.0
amqp==5.3.1
asgiref==3.8.1
async-timeout==5.0.1
attrs==25.3.0
azure-core==1.31.0
azure-storage-blob==12.14.1
babel==2.17.0
bcrypt==4.3.0
beautifulsoup4==4.13.3
billiard==4.2.1
boto3==1.37.17
botocore==1.37.38
celery==5.4.0
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.1
click==8.1.8
click-didyoumean==0.3.1
click-plugins==1.1.1
click-repl==0.3.0
coreapi==2.3.3
coreschema==0.0.4
cron-descriptor==1.4.5
croniter==6.0.0
cryptography==44.0.2
deepdiff==8.4.2
Django==4.2.22
django-celery-beat==2.7.0
django-celery-results==2.5.1
django-cors-headers==3.14.0
django-cprofile-middleware==1.0.5
django-crispy-forms==1.14.0
django-cuser==2017.3.16
django-filter==21.1
django-js-asset==2.2.0
django-modeltranslation==0.18.11
django-mptt==0.16.0
django-redis==5.4.0
django-rest-swagger==2.2.0
django-storages==1.14.5
django-timezone-field==7.1
django-tinymce==4.1.0
django_debug_toolbar==3.8.1
djangorestframework==3.15.2
djangorestframework-simplejwt==5.5.0
docutils==0.21.2
drf-yasg==1.21.10
ecdsa==0.19.1
et_xmlfile==2.0.0
factory_boy==3.3.3
Faker==37.1.0
filtration==2.3.0
flower==2.0.1
frozenlist==1.6.0
geoip2==5.0.1
gunicorn==23.0.0
humanize==4.12.2
idna==3.10
imagesize==1.4.1
inflection==0.5.1
ipcalc==1.99.0
isodate==0.7.2
itypes==1.2.0
Jinja2==3.1.6
jmespath==1.0.1
kombu==5.5.3
MarkupSafe==3.0.2
maxminddb==2.6.3
memory-profiler==0.61.0
msrest==0.7.1
multidict==6.4.3
numpy==2.2.4
oauthlib==3.2.2
openapi-codec==1.3.2
openpyxl==3.0.10
orderly-set==5.4.0
packaging==25.0
pandas==2.2.3
paramiko==3.5.1
pbr==6.1.1
pexpect==4.8.0
pillow==11.3.0
pprintpp==0.4.0
prometheus_client==0.21.1
prompt_toolkit==3.0.51
propcache==0.3.1
psutil==7.0.0
psycopg2-binary==2.9.10
ptyprocess==0.7.0
pyasn1==0.4.8
pycparser==2.22
pycryptodome==3.19.1
Pygments==2.19.1
PyJWT==2.6.0
Pympler==1.1
PyNaCl==1.5.0
pyOpenSSL==25.0.0
pyotp==2.7.0
pyparsing==3.0.9
python-crontab==3.2.0
python-dateutil==2.8.2
python-jose==3.4.0
pytz==2025.1
PyYAML==6.0.2
QuantLib==1.37
redis==5.2.1
requests==2.32.4
requests-oauthlib==2.0.0
rsa==4.9.1
ruff==0.11.6
s3transfer==0.11.5
sentry-sdk==2.26.1
simplejson==3.20.1
six==1.17.0
snowballstemmer==2.2.0
soupsieve==2.7
Sphinx==8.1.3
sphinxcontrib-apidoc==0.5.0
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-django==2.5
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
sqlparse==0.5.3
suds==1.2.0
tomli==2.2.1
tornado==6.5.0
typing_extensions==4.13.2
tzdata==2025.2
uritemplate==4.1.1
urllib3==2.5.0
vine==5.1.0
wcwidth==0.2.13
whitenoise==6.9.0
yarl==1.20.0

License

  • EUPL-1.2 (repository license)