Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kishnahai0806/SteelWorks/llms.txt

Use this file to discover all available pages before exploring further.

By the end of this guide you will have a fully functional SteelWorks dashboard running on your local machine, connected to a seeded PostgreSQL database, and accessible in your browser at http://localhost:8501. The whole process takes under ten minutes if you already have the prerequisites installed.
1

Verify prerequisites

SteelWorks requires Python 3.13, Poetry, and Docker Desktop (running). Confirm all three are available before continuing:
python --version
# Python 3.13.x

poetry --version
# Poetry (version 2.x.x)

docker info --format '{{.ServerVersion}}'
# e.g. 27.x.x
If any command is not found, install the missing tool before proceeding:
2

Clone the repository and install dependencies

Clone SteelWorks from GitHub, change into the project directory, install the Python dependencies with Poetry, and then install the Playwright browser binaries used by the end-to-end test suite:
git clone https://github.com/kishnahai0806/SteelWorks.git && cd SteelWorks
poetry install
poetry run playwright install
poetry install creates an isolated virtual environment and installs all runtime and development dependencies declared in pyproject.toml, including Streamlit, SQLAlchemy, pg8000, sentry-sdk, pytest, and the Playwright test runner.
3

Create your .env file

SteelWorks reads its configuration from a .env file in the project root. Create the file and set DATABASE_URL to your PostgreSQL connection string:
DATABASE_URL=postgresql+pg8000://user:pass@host:5432/dbname
The connection string must use the postgresql+pg8000:// driver scheme. If you have a URL that starts with postgres://, postgresql://, or postgresql+psycopg://, SteelWorks normalizes it automatically — but using the explicit form avoids any ambiguity.To enable Sentry error monitoring, add the optional SENTRY_DSN variable:
DATABASE_URL=postgresql+pg8000://user:pass@host:5432/dbname
SENTRY_DSN=https://examplePublicKey@o0.ingest.sentry.io/0
Leave SENTRY_DSN blank or omit it entirely to run without Sentry.
Never commit .env to version control. The file is listed in .gitignore by default. Keep your credentials out of your repository history.
4

Initialize the database

Apply the schema DDL and load the seed data into your PostgreSQL instance using psql. The $DATABASE_URL variable is substituted from your shell environment (or pass the connection string directly):
psql $DATABASE_URL -f db/schema.sql
psql $DATABASE_URL -f db/seed.sql
schema.sql creates all required tables (calendar_weeks, production_lines, issue_types, lots, production_runs, production_issues). seed.sql populates them with representative sample data so the dashboard has something to display on first launch.
5

Launch the dashboard

Start the Streamlit development server from the project root:
poetry run streamlit run streamlit_app.py
Streamlit will print the local URL to the terminal. Open it in your browser:
http://localhost:8501
You should see the Operations Issue Metrics dashboard with week and production-line filter controls, an issue summary table, an affected lots table, and CSV download buttons.
No database? No problem. If DATABASE_URL is not set in your environment, OperationsMetricsService falls back to built-in in-memory data — 2 weeks (2026-W03 and 2026-W04), 2 active production lines (Line 1 and Line 4), and 6 issue occurrences — so you can explore every part of the dashboard UI without provisioning PostgreSQL at all. Simply skip Steps 3 and 4 and run the app; it will start and serve the fallback dataset automatically.
For a full reference of all supported environment variables — including SENTRY_DSN, TEST_DATABASE_URL, and APP_LOG_LEVEL — see the Configuration page.

Build docs developers (and LLMs) love