(R)equirements (x) … and much more TO (D)ocuments (x) ... and much more
This project was primarily a test designed to explore the limits of agentic coding. Once those limits became apparent, it was necessary to restart the project—with a greater focus on the data model and its ease of customization - that is why this project is being archived. See RxD3 for how it is going on.
RxDx is a tool for structured engineering work across the full lifecycle of requirements and related artifacts. It supports the creation, refinement, linking, and traceability of content ranging from informal notes to formal requirements, specifications, tests, tasks, and risk items.
Artifacts can be incrementally refined without losing their relationships or history.
Combined with project management - both in parallel classic (plan-driven) as well as agile.
The system is intended as an entry point for SPEC Driven Development. Open source, easy to start with Docker, all results can be exported as simple documents (docx, xlsx, pdf) for use in a paper-based quality management system. Or you can stay in the system and enjoy all the benefits of paperless working.
More on these topics, including short training courses, can be found here
- Management of content, requirements, specifications, tests, tasks, and risks
- End-to-end traceability across artifacts (Tracability-Matrix)
- Agile working/project management, and classic project management management presentations (both in parallel)
- Project-Knowledge-Base and project journaling
- Basis for verification, validation, and impact analysis
- Design Review and Risk Management integrated
- Document exports for downstream QM and compliance processes
- AI assisted
- Different frontends
- Standard Web frontend for "normal" work (Graph view, Kanban, Gantt, ...)
- WebXR frontend for a more immersive remote Team-Work (3d Graph-View)
- Email for communicating upcoming tasks (outgoing) as well as documentation of project progress (incoming emails) and documentation of additional project-related emails (todo lists, minutes, ...)
- Mobile timesheet-app for tracking working times
- Documents (Design Documents, FMEA Sheets, Invoices, ... )
The original idea was driven by the desire to be able to implement everything in mind maps: requirement management, project management, risk management. There are already approaches for everything, but I haven't seen any that are truly unified (and the way I imagine them).
The second wish was to be able to use this system in VR as well — with the goal of being able to work really well remotely and in a distributed manner. The vision is to be able to discuss and plan requirements, results, and projects in virtual rooms using an immersive graph representation (based on some sci-fi films) of the “minds” (nodes).
With the use of AI and coding agents, and seeing how well they write specifications, it became clear that this is a must-have in RxDx (formulating requirements was sometimes the most difficult part for my employees). However, in small chunks that can be further developed (refined), are understandable and therefore implementable, and can be supplemented with risks and tasks for implementation.
Further requests: Project progress should not be laboriously recorded in meetings—I think Task-Juggler's approach of recording this using an email system is very good. I think this approach, alongside a time tracking app for cell phones and a ticket system—which can be used as alternatives—is a good addition. The same goes for the option of work in an agile manner—I have actually always implemented this in my projects—I broke down the next steps for/with my team until they were able to implement the challenge at hand, and in this way we achieved the goals we had set. However, I only realized how powerful and systematizable (with a definition of ready and done) this approach is when I implemented projects in an agile manner using requirements management software. And, as aside effect, subteams got more "empowered".
Ultimately, requests such as the following arose: let's create an automated LIMS so that important records relating to defined acceptance criteria are immediately available in a database for further evaluation (complete traceability from requirements to work instructions with acceptance criteria and data collected in production) - or - use the recorded data to create invoices immediately - or - work items should be able to be commented on and signed, just like documents - a template system that new projects don't have to be entered from scratch - or - a work-flow system - or - the email system could also be expanded so that, for example, meeting minutes can be integrated immediately as a project knowledge base and assigned to to-do lists - and so on ...
Mock / early preview
The current version represents an early stage of development and is intended to demonstrate structure, concepts, and workflows rather than feature completeness.
- User Authentication & Authorization: Role-based access control with digital signatures
- Requirements Management: Versioned requirements with complete audit trails
- Knowledge Graph: Apache AGE-powered graph database for relationships
- Risk Management: Risk analysis with failure chain visualization and FMEA export
- Test Management: Verification and validation tracking
- Document Generation: Automated PDF, Excel, and Word document generation
- Dual Interface: Standard web UI and immersive 3D/VR interface (WebXR)
- Local LLM Integration: Privacy-first AI assistance with LM-Studio
- Mobile Time Tracking: React Native app for time recording
- Python 3.11+ with FastAPI
- PostgreSQL 17 with Apache AGE extension
- SQLAlchemy async ORM
- Pydantic for validation
- uv for package management
- React 18+ with TypeScript
- Zustand for state management
- react-flow for 2D graph visualization
- React Three Fiber (R3F) for 3D/VR
- Vite for build tooling
- Docker & docker-compose v2
- nginx reverse proxy
- PostgreSQL with Apache AGE
- Docker and Docker Compose v2
- Python 3.11+ (for local development)
- Node.js 20+ (for local development)
- uv (Python package manager)
git clone <repository-url>
cd RxDx
# Copy environment file
cp .env.example .env
# Edit .env with your configuration
nano .env# Start all services
docker compose up -d
# View logs
docker compose logs -f
# Check status
docker compose psServices will be available at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/api/docs
- Nginx: http://localhost:80
# Initialize database schema
docker compose exec backend uv run python -m app.db.init_schemaOpen your browser to http://localhost
cd backend
# Install dependencies
uv sync
# Run development server
uv run uvicorn app.main:app --reload
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov=appcd frontend
# Install dependencies
npm install
# Run development server
npm run dev
# Run tests
npm test
# Build for production
npm run build# Start only PostgreSQL
docker compose up postgres -d
# Connect to database
docker compose exec postgres psql -U rxdx -d rxdx
# View Apache AGE graphs
docker compose exec postgres psql -U rxdx -d rxdx -c "SELECT * FROM ag_graph;"
# Reset database
docker compose down -v
docker compose up postgres -d
docker compose exec backend uv run python -m app.db.init_schemaRxDx/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── api/ # API endpoints
│ │ ├── core/ # Configuration
│ │ ├── db/ # Database
│ │ ├── models/ # SQLAlchemy models
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── services/ # Business logic
│ │ └── utils/ # Utilities
│ ├── tests/ # Backend tests
│ ├── Dockerfile
│ └── pyproject.toml
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── stores/ # Zustand stores
│ │ ├── services/ # API clients
│ │ └── types/ # TypeScript types
│ ├── Dockerfile
│ └── package.json
├── nginx/ # Nginx configuration
├── docker-compose.yml # Docker orchestration
└── .env.example # Environment template
Key configuration options in .env:
# Database
POSTGRES_USER=rxdx
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=rxdx
# Backend
SECRET_KEY=your_secret_key_here
ACCESS_TOKEN_EXPIRE_MINUTES=30
# LLM (Optional)
LLM_ENABLED=false
LLM_STUDIO_URL=http://localhost:1234/v1See .env.example for all available options.
RxDx includes comprehensive logging and monitoring capabilities for debugging and system health tracking.
Configure logging via environment variables:
# Backend Logging
LOG_LEVEL=INFO # DEBUG, INFO, WARN, ERROR, CRITICAL
LOG_DIR=logs # Log directory path
LOG_MAX_BYTES=104857600 # Max log file size (100MB)
LOG_BACKUP_COUNT=14 # Number of backup files to keep
# Frontend Logging
VITE_LOG_LEVEL=INFO # DEBUG, INFO, WARN, ERRORBackend logs: backend/logs/app.log
- Structured JSON format in production
- Pretty console format in development
- Automatic rotation at 100MB
- Keeps 14 backup files (~7 days)
Frontend logs: Console output (browser environment)
- Structured logging with session tracking
- Request ID tracing for API calls
All API requests include a unique X-Request-ID header for end-to-end tracing:
// Frontend automatically adds request ID
logger.info('API request', { requestId: 'abc-123' });
// Backend logs include the same request ID
logger.info('request_completed', request_id='abc-123', duration_ms=45.2);Monitor system health:
# Basic health check
curl http://localhost:8000/health
# Comprehensive readiness check (includes database status)
curl http://localhost:8000/api/v1/health/readyResponse includes:
- Database connectivity status
- Graph database connectivity status
- Response time for each check
Automatically clean old log files:
# Run cleanup script (removes logs older than 7 days)
./scripts/cleanup-logs.sh
# Add to crontab for daily cleanup at 2 AM
0 2 * * * /path/to/rxdx/scripts/cleanup-logs.sh# View backend logs
tail -f backend/logs/app.log
# View logs in Docker
docker compose logs -f backend
# Search logs for specific request
grep "request_id=abc-123" backend/logs/app.logcd backend
# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=app --cov-report=html
# Run specific test file
uv run pytest tests/test_auth.py
# Run property-based tests
uv run pytest -k "property"cd frontend
# Run all tests
npm test
# Run with coverage
npm test -- --coverage
# Run specific test
npm test -- WorkItem.test.tsx# Build all services
docker compose -f docker-compose.yml -f docker-compose.prod.yml build
# Start in production mode
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d- Place SSL certificates in
nginx/ssl/ - Update
nginx/nginx.confwith SSL configuration - Restart nginx:
docker compose restart nginx
- Backend README
- Frontend README
- Database Setup
- API Documentation (when running)
# Check PostgreSQL is running
docker compose ps postgres
# View PostgreSQL logs
docker compose logs postgres
# Test connection
docker compose exec postgres pg_isready -U rxdx# Verify AGE extension
docker compose exec postgres psql -U rxdx -d rxdx -c "\dx age"
# Check graph exists
docker compose exec postgres psql -U rxdx -d rxdx -c "SELECT * FROM ag_graph;"# View backend logs
docker compose logs backend
# Restart backend
docker compose restart backend
# Check health
curl http://localhost:8000/health# View frontend logs
docker compose logs frontend
# Restart frontend
docker compose restart frontend
# Rebuild
docker compose up frontend --build- Fork the repository
- Create a feature branch
- Make your changes
- Run tests
- Submit a pull request
Apache License 2.0
For issues and questions:
- GitHub Issues: [repository-url]/issues
- Documentation: [documentation-url]