AcidWatch
Democratize and open up the discussion around CO2 impurities and provide a reliable resource for researchers, chemists, and industry professionals in the CCS domain.
https://github.com/equinor/acidwatch
Category: Emissions
Sub Category: Carbon Capture
Keywords
carbon-capture-and-storage ccs computational-chemistry hacktoberfest hacktoberfestivus impurities
Last synced: about 10 hours ago
JSON representation
Repository metadata
AcidWatch is a platform for modeling chemical reactions in CO2 streams, designed for researchers in CCS.
- Host: GitHub
- URL: https://github.com/equinor/acidwatch
- Owner: equinor
- License: mit
- Created: 2024-10-30T14:07:33.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-12T11:47:38.000Z (10 days ago)
- Last Synced: 2026-03-12T12:04:34.824Z (10 days ago)
- Topics: carbon-capture-and-storage, ccs, computational-chemistry, hacktoberfest, hacktoberfestivus, impurities
- Language: TypeScript
- Homepage: https://acidwatch.radix.equinor.com/
- Size: 2.56 MB
- Stars: 11
- Watchers: 1
- Forks: 3
- Open Issues: 37
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
README.md
AcidWatch
AcidWatch is a portal for tools that calculate and predict chemical reactions in
CO2 streams. It is essential for advancing and scaling carbon capture
and storage (CCS) technologies. The goal of AcidWatch is to democratize and open
up the discussion around CO2 impurities and provide a reliable
resource for researchers, chemists, and industry professionals in the CCS
domain.
Using
The production version of AcidWatch is found at https://acidwatch.radix.equinor.com/ . Some features require an Equinor account with appropriate accesses.
Developing
AcidWatch uses Python in the backend and Javascript in the frontend.
Additionally, some features require a reasonably up-to-data Java version. Ensure that you have Python 3.11 or later, Poetry, NodeJS and Java (eg. OpenJDK 21).
Backend
The backend is written using FastAPI and SQLAlchemy.
Using Poetry, install AcidWatch's backend using the following command:
poetry -C backend install
[!NOTE]
Here,-C backendinstructspoetryto enter thebackend/directory before
doing anything. If you enter thebackenddirectory (eg. viacd backend), you
can drop writing-C backendfor each command.
Then, run the backend in development mode using the following command:
poetry -C backend run acidwatch-api
To change the settings, first copy backend/.env.example to backend/.env and
then modify it to suit your needs.
To install and run a production build of the backend, refer to the backend
Dockerfile.
Explore the auto-generated REST API at http://localhost:8001/docs
SQLite
By default, AcidWatch uses an in-memory SQLite database. It requires no
additional installation or setup, but will reset whenever the backend is
restarted.
To enable a persistent SQLite database, set ACIDWATCH_DATABASE in
backend/.env file. For example, adding the following will create a test.db
file in the directory from which acidwatch-api is ran:
ACIDWATCH_DATABASE=sqlite:///test.db
[!TIP]
Database migration aren't applied to SQLite. If mysterious database errors
occur, delete your database file and restart.
PostgreSQL
AcidWatch uses a PostgreSQL database in production. Once you have access
First, ensure that the backend is installed with the pg (PostgreSQL) optional
dependency group. This installs the recommended SQLAlchemy driver:
poetry -C backend install -E pg
Then, set the ACIDWATCH_DATABASE as described in the SQLite section to the following:
# Over TCP/IP
ACIDWATCH_DATABASE=postgresql://[username]:[password]@[hostname]:[port]/[database]
# Over UNIX sockets
ACIDWATCH_DATABASE=postgresql:///[database]?host=[path]
# For example:
ACIDWATCH_DATABASE=postgresql://postgres:password@localhost:5432/acidwatch
AcidWatch uses SQLAlchemy's Alembic to handle migrations. Run poetry -C backend run alembic upgrade head to migrate the database to the current schema.
Don't have a postgres running? Here's a simple docker setup, that will create the necessary
database to work with the example above:
docker run -e POSTGRES_PASSWORD=password -e POSTGRES_DB=acidwatch -p 5432:5432 postgres
Other databases & related material
For other databases, refer to SQLAlchemy documentation on how to create
Frontend
The frontend uses Vite and React. Components are provided by the official
Equinor Design System React library.
# Copy the .env file
cp frontend/.env.example frontend/.env
# then install
npm -C frontend install
To run, ensure that the backend is running on port 8001 and then:
npm -C run dev
The application is now available at http://localhost:5173
Considerations
Debugging in Visual Studio Code
If using VS Code it is recommended to run backend in a different instances of VS Code. This will avoid a lot of hazzle configuring and running correct python virtual environment etc.
Deployment
GitHub Actions Workflows are used for building, testing and deploying AcidWatch to Radix.
Tests are run on every push, and deployment to dev environment are done on merge to main branch.
Deployment to test and prod environment are for now done manually in Radix console.
GitHub Codespaces
If someone fancies using codespaces and wants to break out of the tedious local setup then following steps can be followed.
1. Setup frontend
Open a terminal and write following commands to run frontend.
cd /frontend
npm run dev
2. Setup backend
Open another terminal and write following commands to enable virtual environment and then to run backend.
source venv/bin/activate .
python3 backend/src/acidwatch_api/__main__.py
3. Toggle port visibility
Kudos! Now frontend is running on port 5173, and backend is on 8001. Toggle the port for backend only to be public so its accessible by frontend.
4. Point to a different deployment environment
Now open source models can be run and tested. To point to a different instance of deployment (dev, prod or local) install-dependencies.sh can be updated.
Owner metadata
- Name: Equinor
- Login: equinor
- Email:
- Kind: organization
- Description:
- Website: http://www.equinor.com
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/525862?v=4
- Repositories: 484
- Last ynced at: 2023-03-29T04:51:37.290Z
- Profile URL: https://github.com/equinor
GitHub Events
Total
- Delete event: 199
- Member event: 4
- Pull request event: 390
- Fork event: 1
- Issues event: 212
- Watch event: 6
- Issue comment event: 198
- Push event: 622
- Gollum event: 1
- Pull request review event: 259
- Pull request review comment event: 174
- Create event: 204
Last Year
- Delete event: 124
- Member event: 2
- Pull request event: 250
- Fork event: 1
- Issues event: 139
- Watch event: 4
- Issue comment event: 157
- Push event: 413
- Gollum event: 1
- Pull request review event: 202
- Pull request review comment event: 158
- Create event: 132
Committers metadata
Last synced: 2 days ago
Total Commits: 578
Total Committers: 13
Avg Commits per committer: 44.462
Development Distribution Score (DDS): 0.766
Commits in past year: 384
Committers in past year: 11
Avg Commits per committer in past year: 34.909
Development Distribution Score (DDS) in past year: 0.68
| Name | Commits | |
|---|---|---|
| Harald Eggen | h****g@e****m | 135 |
| Muhammad Usama | 1****K | 125 |
| eq-sandkav | s****v@e****m | 88 |
| Lars Petter Hauge | l****e@g****m | 82 |
| Zohar Malamant | Z****M@e****m | 69 |
| Anna Kvashchuk | k****a@g****m | 37 |
| Fredrik Mellemstrand | f****l@e****m | 14 |
| Olve Maudal | o****m@e****m | 7 |
| snyk-bot | s****t@s****o | 7 |
| Sviatoslav Eroshkin | 1****e | 5 |
| Daniel Vieira | k****e@p****r | 4 |
| dependabot[bot] | 4****] | 4 |
| danielsantiago1002 | d****2@h****m | 1 |
Committer domains:
- equinor.com: 5
- poli.ufrj.br: 1
- snyk.io: 1
Issue and Pull Request metadata
Last synced: 2 days ago
Total issues: 116
Total pull requests: 207
Average time to close issues: about 1 month
Average time to close pull requests: 11 days
Total issue authors: 7
Total pull request authors: 12
Average comments per issue: 0.5
Average comments per pull request: 0.29
Merged pull request: 116
Bot issues: 0
Bot pull requests: 1
Past year issues: 72
Past year pull requests: 138
Past year average time to close issues: 16 days
Past year average time to close pull requests: 11 days
Past year issue authors: 7
Past year pull request authors: 9
Past year average comments per issue: 0.28
Past year average comments per pull request: 0.38
Past year merged pull request: 69
Past year bot issues: 0
Past year bot pull requests: 1
Top Issue Authors
- kvashchuka (54)
- haralde (30)
- SAKavli (17)
- pinkwah (7)
- lars-petter-hauge (4)
- fmell (2)
- Hardins (2)
Top Pull Request Authors
- SAKavli (45)
- haralde (45)
- lars-petter-hauge (30)
- UsamaEquinorAFK (28)
- pinkwah (19)
- kvashchuka (16)
- fmell (11)
- Hardins (5)
- Sviatose (4)
- olvemaudal (2)
- fhdiaze (1)
- dependabot[bot] (1)
Top Issue Labels
- bug (6)
- blocked (5)
- good first issue (3)
- frontend (2)
- v0.1 (2)
- epic (1)
Top Pull Request Labels
- dependencies (1)
- python (1)
Dependencies
- 762 dependencies
- @eslint/js ^9.13.0 development
- @types/plotly.js-basic-dist ^1.54.4 development
- @types/react ^18.3.11 development
- @types/react-dom ^18.3.1 development
- @types/react-plotly.js ^2.6.3 development
- @vitejs/plugin-react ^4.3.3 development
- eslint ^9.15.0 development
- eslint-plugin-react-hooks ^5.0.0 development
- eslint-plugin-react-refresh ^0.4.13 development
- globals ^15.11.0 development
- prettier ^3.3.3 development
- typescript ~5.6.2 development
- typescript-eslint ^8.10.0 development
- vite ^5.4.9 development
- @azure/msal-browser ^3.26.1
- @azure/msal-react ^2.1.1
- @equinor/eds-core-react latest
- @equinor/eds-data-grid-react latest
- @microsoft/applicationinsights-react-js ^17.3.4
- @microsoft/applicationinsights-web ^3.3.4
- @microsoft/mgt ^4.4.0
- @microsoft/mgt-msal-provider ^2.11.2
- @microsoft/mgt-msal2-provider ^4.4.0
- @microsoft/mgt-react ^4.4.0
- @tanstack/react-query ^5.59.16
- axios ^1.7.8
- plotly.js ^2.9.0
- plotly.js-basic-dist ^2.35.2
- react ^18.3.1
- react-dom ^18.3.1
- react-modal ^3.16.1
- react-plotly.js ^2.6
- react-router-dom ^6.27.0
- zustand ^5.0.0
- annotated-types 0.7.0
- anyio 4.7.0
- atomicwrites 1.4.1
- attrs 24.3.0
- azure-core 1.32.0
- azure-cosmos 4.9.0
- azure-identity 1.19.0
- certifi 2024.12.14
- cffi 1.17.1
- charset-normalizer 3.4.0
- click 8.1.7
- colorama 0.4.6
- cryptography 43.0.3
- exceptiongroup 1.2.2
- fastapi 0.115.6
- flake8 7.1.1
- flake8-bugbear 24.12.12
- h11 0.14.0
- httpcore 1.0.7
- httpx 0.27.2
- idna 3.10
- iniconfig 2.0.0
- mccabe 0.7.0
- msal 1.31.1
- msal-extensions 1.2.0
- packaging 24.2
- pluggy 1.5.0
- portalocker 2.10.1
- py 1.11.0
- pycodestyle 2.12.1
- pycparser 2.22
- pydantic 2.10.3
- pydantic-core 2.27.1
- pyflakes 3.2.0
- pyjwt 2.10.1
- pytest 6.2.5
- python-dotenv 1.0.1
- pywin32 308
- requests 2.32.3
- six 1.17.0
- sniffio 1.3.1
- starlette 0.41.3
- toml 0.10.2
- typing-extensions 4.12.2
- urllib3 2.2.3
- uvicorn 0.32.1
- flake8 ^7.1.1 develop
- flake8-bugbear ^24.10.31 develop
- pytest ^6.2.2 develop
- azure-cosmos ^4.9.0
- azure-identity ^1.19
- fastapi ^0.115.5
- httpx ^0.27.2
- msal ^1.31.1
- pyjwt ^2.10.1
- python ^3.9
- python-dotenv ^1.0.1
- requests ^2.32.3
- uvicorn ^0.32.1
- actions/checkout v3 composite
- actions/setup-node v3 composite
- python 3.11-slim build
- docker.io/library/node 22-bookworm-slim build
- docker.io/nginxinc/nginx-unprivileged alpine build
- actions/checkout v4 composite
- psf/black stable composite
- actions/checkout v4 composite
Score: 6.436150368369428