You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.8 KiB
2.8 KiB
Development
This document captures the development workflow, test expectations, and UI quality rules for Iron.
Setup
UV_CACHE_DIR=.uv-cache uv venv .venv
UV_CACHE_DIR=.uv-cache uv pip install --python .venv/bin/python -e '.[dev]'
npm install
Run Locally
npm run build
.venv/bin/python -m uvicorn app.main:app --reload
Open:
http://127.0.0.1:8000/app
Default development credentials:
username: admin
password: changeme-iron
Tests
Full suite:
.venv/bin/python -m pytest
Current expected result:
74 passed
Browser E2E:
.venv/bin/python scripts/ui_playwright_smoke.py
Real deployment acceptance against a live local OpenList + Iron environment:
.venv/bin/python scripts/real_openlist_suite.py
Optional focused scenarios:
scripts/real_openlist_acceptance.py: baseline upload, reconcile, download, direct WebDAV readscripts/real_openlist_chaos_acceptance.py: large file, range reads, forced remote recovery, OpenList flap, recycle-bin restorescripts/real_openlist_multi_backend_acceptance.py: multi-backend placement and enable/disable behaviorscripts/real_openlist_multi_backend_chaos.py: degraded multi-backend recovery and replica healing
Pytest E2E entry:
.venv/bin/python -m pytest tests/e2e/test_web_ui_playwright.py
UI Change Standard
Any meaningful Web UI change must be validated against a real running service.
Required workflow:
- build frontend assets with
npm run build - run
./.venv/bin/python scripts/ui_playwright_smoke.py - review screenshots in
output/playwright/ - fix layout, spacing, overflow, or interaction issues
- rerun the Playwright flow
The E2E flow currently covers:
- login
- files page render
- create folder
- upload text file
- authenticated file download
- upload image file
- authenticated inline image preview
- file storage replica inspector
- search
- uploads, recycle bin, storage batch checks, backend edit dialog, policies save, and jobs page render
- browser
/api4xx/5xx failures during the flow
Secrets
Backend credentials are encrypted before they are stored in SQLite. Local
development uses a default IRON_SECRET_KEY, but real deployments should set a
stable private value before creating S3 or WebDAV backends.
Runtime Artifacts
Do not commit:
.venv/.uv-cache/node_modules/output/.iron-storage/.iron-temp/.iron-cache/- local databases
- Python caches
Documentation Rules
- Keep
README.mdconcise and user-facing. - Keep contributor instructions in
CONTRIBUTING.md. - Keep coding-agent instructions in
AGENTS.md. - Keep deeper project docs in
docs/. - Use relative links in Markdown.
- Update docs when changing setup, commands, architecture, or user-visible behavior.