Factotum is a web application used to curate chemical exposure data from multiple sources. Factotum is the editor for the CPDat chemical exposure database.
ChemExpo is Factotum running in read-only mode for public access.
The wiki for the Factotum repository on GitHub contains documentation of various ages and validity.
Please ALSO READ:
- ./dashboard/tests/README.md
- ./dashboard/tests/system/README.md
- ./elastic_repo/README.md
- ./factotum-chemexpo-tools/chemexpo_user_guide/README.md
- ./factotum-chemexpo-tools/dashboard_news_html/README.md
Here's the architecture with components running in separate containers:
graph
User
subgraph Factotum
fact[Factotum:main<br/>Django app.]
cele[Factotum:celery<br/>Task runner]
beat[Factotum:celery-beat<br/>Periodic task runner]
ws[Factotum:service<br/>API,<br/>indexer]
fact <-->|search,<br/>infreq. re-index| Elastic
fact <-->|result cache| Redis
Redis <-.->|msg.<br/>broker| fact
Redis <-.->|msg.<br/>broker| cele
Redis <-.->|msg.<br/>broker| beat
Logstash --> Elastic
ws --> Logstash
end
fact <-->|data edit,<br/>lookup| MySQL
fact <-->|content,<br/>static files| User
MySQL -->|query.sql| Logstash
%% tweak graph layout
User ~~~ cele
The Factotum:*
components can run in separate containers, as shown
above, or in a single container, see template.env.
Runtime images:
factotum
A django / guincorn image for the main app.redis
An unmodified Redis image.factotum-elasticsearch
A customized Elasticsearch image.factotum-logstash
A customized Logstash image.
Development only images:
factotum-mysql-base
A modified MySQL 8 image.
Used to generate thefactotum-mysql-migrated
andfactotum-mysql-fixtured
images, see integtest/build_dbs.py.factotum-test
An image similar to the main app image, but with Selenium support. Docker compose service is calledfacttest
.
As there's no way to stop docker compose from starting all services, the
facttest
and factotum-mysql-base
services exit immediately with command: date
and restart: no
.
The United States Environmental Protection Agency (EPA) GitHub project code is provided on an "as is" basis and the user assumes responsibility for its use. EPA has relinquished control of the information and no longer has responsibility to protect the integrity, confidentiality, or availability of the information. Any reference to specific commercial products, processes, or services by service mark, trademark, manufacturer, or otherwise, does not constitute or imply their endorsement, recommendation or favoring by EPA. The EPA seal and logo shall not be used in any manner to imply endorsement of any commercial product or activity by EPA or the United States Government.