threepp
C++20 기반 크로스플랫폼 3D 라이브러리, 파이썬 바인딩 및 three.js 수준 API 제공
AI-powered Software Requirements Analysis (SRA) system that evaluates requirement quality, detects ambiguities, and suggests structured improvements for more reliable and complete SRS documents.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗SRA is an enterprise-grade, AI-orchestrated ecosystem designed to formalize the software requirements engineering lifecycle. By combining Large Language Model (LLM) reasoning with rigorous architectural standards, SRA transforms fragmented project visions into high-fidelity, production-ready technical specifications — in IEEE 830-1998, ISO/IEC/IEEE 29148:2018, Volere or Agile PRD form — and traces them back to the code that implements them.
| Resource | URL | Description |
|---|---|---|
| Live Application | sra-xi.vercel.app | Production frontend deployment |
| Architecture Guide | ARCHITECTURE.md | System architecture & design |
| Operations Manual | OPERATIONS.md | Deployment, backup & DR procedures |
| Contributing | CONTRIBUTING.md | Development setup & guidelines |
| Modernization Record | docs/MODERNIZATION.md | Findings, fixes, and deferred work from the latest audit pass |
Industry research, including PMI and other studies, indicates that a significant portion of project failures, often estimated between 30% and 50%, can be traced back to poor requirements engineering, including unclear documentation, semantic ambiguity, and stakeholder misalignment. SRA mitigates this risk by providing an automated, multi-layered validation and synthesis engine.
SRA operates on a proprietary 5-layer pipeline that ensures every requirement is processed through a rigid quality-control sequence.
graph TD
subgraph "Cloud Analysis Layer (SRA Platform)"
L1[<b>Layer 1: Strategic Intake</b><br/>Unstructured Input Mapping]
L2[<b>Layer 2: MAS Analysis</b><br/>PO, Architect, & Dev Agents]
L3[<b>Layer 3: Objective Review</b><br/>6Cs Audit & RAG Evaluation]
L4[<b>Layer 4: Refinement Hub</b><br/>Live Workspace & Diff Tracking]
L5[<b>Layer 5: Knowledge Persistence</b><br/>Semantic Indexing & Hybrid Search]
Reliability[(<b>Reliability Layer</b><br/>Stage Chaining, Checkpoints & Jittered Retries)]
L2 & L3 -.-> Reliability
end
subgraph "Local Execution Layer (CLI Toolkit)"
CLI["SRA CLI (@sra-srs/sra-cli)"] -->|Auth/Sync| L1
CLI -->|Reverse: codebase digest| L1
CLI -->|Verify| Code[(Local Source Code)]
Code -->|Verification Data| CLI
CLI -->|Push Traceability| L4
end
Stakeholder((Stakeholder)) -->|Raw Vision| L1
L1 --> L2
L2 --> L3
L3 -->|FAIL: Poor Score| L2
L3 -->|PASS| L4
L4 -->|Export| Artifacts[SRS Document, DOCX, DFD, Diagrams]
L4 --> L5
The pipeline runs entirely server-side and survives the browser being closed: work is checkpointed per stage, and an invocation that runs out of its serverless budget re-enqueues itself and resumes from the last checkpoint rather than restarting or truncating.
backend/src/formats/ and GET /api/formats.@xyflow/react with support for high-fidelity PNG Export.sra reverse reduces an existing codebase to a structural digest — interfaces, entities, module layout, dependencies — runs it through the same multi-agent pipeline, and proposes source links for the requirements it produces.sra check confirms links resolve; --deep re-checks that the linked files still carry the requirement's own identifiers, catching links that rotted as code moved.sra analyze and sra status --watch stream real pipeline stages over the platform's SSE channel, falling back to polling when live progress is unavailable.sync/push never write IEEE's sections into a Volere, ISO 29148 or Agile PRD document.sra doctor validates environment, credentials, connectivity, and whether a BYOK provider key is actually configured.SRA is engineered for stability, security, and enterprise-grade performance.
nodejs/nextjs) to mitigate security risks.Strict-Transport-Security and X-Frame-Options (DENY/SAMEORIGIN) enforcement.sanitizer.js layer to prevent data leakage to LLM providers.BaseAgent with a 6-minute timeout, jittered retries, and high-fidelity JSON parsing logs for stable long-form document generation.next/dynamic. Components like ResultsTabs and their individual sub-tabs are lazy-loaded to minimize initial JS payload and improve TBT.sitemap.xml and robots.txt generation for search engine discoverability.SIGTERM/SIGINT to ensure zero-downtime deployments.SRA leverages professional GitHub Actions for continuous quality assurance and operational excellence.
main, publishing optimized images to GHCR.bruno/) exercises the auth/project/analysis/settings routes against a real running backend on every PR, catching route-level regressions the Jest suite's mocked tests can't./api/health endpoint for deep system diagnostics (DB, AI Provider).| Component | Technology | Rationale |
|---|---|---|
| Frontend | Next.js 16.1.6 | App Router with standalone output for enterprise scalability. |
| Styling | Tailwind CSS v4 | Next-gen JIT engine for high-performance, responsive UI. |
| Backend | Node.js 24 LTS / Prisma 7 | Type-safe ORM for robust asynchronous data orchestration. |
| Database | PostgreSQL 16+ | High-concurrency persistence with pgvector RAG support. |
| Orchestration | Upstash QStash | Serverless job queue for reliable, long-running AI tasks. |
| LLM Engine | Multi-provider (Gemini default, BYOK OpenAI/Claude/Grok) | Gemini runs on the platform's own key for every user out of the box; users can add their own OpenAI, Claude, or Grok key in Settings and pick a provider + model per analysis. |
SRA uses Terraform to manage cloud infrastructure declaratively, ensuring reproducibility, disaster recovery, and version-controlled infrastructure changes.
All infrastructure configuration is defined in the terraform/ directory:
terraform/
├── main.tf # Provider & backend configuration
├── variables.tf # Variable definitions
├── vercel.tf # Vercel project resources
├── outputs.tf # Output values
├── terraform.tfvars.example # Configuration template
└── README.md # Detailed usage guide
Terraform manages the following infrastructure:
sra) and backend (sra-backend)Note: Environment variables are managed directly in Vercel dashboard to avoid storing secrets in Terraform state.
# Navigate to terraform directory
cd terraform
# Initialize Terraform
terraform init
# Preview infrastructure changes
terraform plan
# Apply changes (when ready)
terraform apply
For detailed Terraform usage, see terraform/README.md.
Ensure the following variables are defined in your infrastructure (see .env.example files in backend/ and frontend/ for details):
| Group | Key | Required | Description |
|---|---|---|---|
| Database | DATABASE_URL | Yes | Postgres connection string with transaction pooling (typically port 6543). |
| Database | DIRECT_URL | Yes | Direct connection string bypassing transaction pooler (typically port 5432) for Prisma migrations and heavy-duty database backup/restore operations. |
| Database | REDIS_URL | Optional | Redis connection string for rate limiting/caching. |
| AI (Gemini) | GEMINI_API_KEY | Yes | The only provider credential the platform holds, and it funds embeddings only. Embeddings are fixed to Gemini regardless of which generation provider a user picks, because the pgvector columns are one shared embedding space. |
| AI (Gemini) | RAG_SIMILARITY_THRESHOLD | Optional | Cosine similarity threshold for RAG retrieval matching, defaults to 0.25. |
| AI (models) | GEMINI_MODEL_NAME, GEMINI_UTILITY_MODEL_NAME, GEMINI_EMBEDDING_MODEL, GEMINI_EMBEDDING_DIMENSIONS | Yes (embeddings pair), otherwise default fallbacks | No model id is hardcoded in src/ — read from the environment via backend/src/config/models.js, so a retired model is an env edit plus a restart. GEMINI_EMBEDDING_DIMENSIONS must equal the vector(N) width in schema.prisma. Gemini is the only provider with a server-side default: the platform runs it for embeddings and internal utility calls. There is no OPENAI_MODEL_NAME/CLAUDE_MODEL_NAME/GROK_MODEL_NAME here — those are BYOK-only and must come from the user's own request. |
| AI (BYOK) | (none) | — | There are deliberately no platform OpenAI/Anthropic/xAI keys. Every generation-side call — generation, validation gate, auto-fix, alignment, refinement, feature expansion, diagram repair, graph extraction, RAG scoring — runs on the requesting user's own key, added via and stored encrypted (AES-256-GCM) per user. |
SRA is fully containerized for cloud-agnostic deployment. Our CI pipeline automatically publishes production-ready images to GitHub Container Registry (GHCR).
# Pull and run the latest images via Compose
docker compose up --build -d
http://localhost:3000 (Optimized Multi-stage Build)http://localhost:3001 (Next.js Standalone Build)The SRA toolkit operates cross-workspace for unified project control. See cli/README.md for the full command reference.
pnpm install -g @sra-srs/sra-cli
sra doctor # verify setup, credentials and provider keys
sra init # link this folder to an analysis
sra reverse # or: generate a spec from the code already here
sra check --deep --suggest # trace requirements to source
sra push # publish traceability back to the platform
SRA uses standard pnpm workspaces for monorepo management.
# Install dependencies across all workspaces
pnpm install
To configure local quality gating checks (which will run standard cleanups and monorepo linting automatically before every git commit):
# Install the pre-commit CLI framework
pip install pre-commit
# Install the git hooks defined in our .pre-commit-config.yaml
pre-commit install
# Optional: Run all quality checks manually against all files
pre-commit run --all-files
The backend holds the unit/contract/E2E suite; the CLI has its own. Both run natively on ESM Jest.
pnpm test:backend # backend unit, contract and E2E suites (MOCK_AI=true — no real model calls)
pnpm test:cli # CLI suite
pnpm test:all # both
# Initialize Identity & Data
pnpm run dev:backend
# Or run frontend and backend concurrently
pnpm run dev:all
SRA leverages professional GitHub Actions for continuous quality assurance and codebase health:
SRA/
├── .github/ # CI/CD Workflows (Lint, CodeQL, Stale)
├── .agent/ # Agent workflows and skill definitions
├── backend/ # API Engine & Node.js orchestration workspace
│ ├── prisma/ # Schema & Migrations
│ ├── src/ # Services, controllers, and core AI logic
├── frontend/ # Next.js 16 Application workspace
│ ├── app/ # Server-driven App Router
│ ├── components/ # High-fidelity React components
├── cli/ # SRA Toolkit npm workspace
├── terraform/ # Infrastructure as Code (Platform config)
├── docs/ # Documentation & Security policies
└── package.json # Root monorepo workspace definition
We welcome contributions from the community. Please review our Contribution Guidelines and Governance Policy for architectural context and coding standards.
To report vulnerabilities, please contact the security team via the repository's security advisory tab.
This project is licensed under the Apache License 2.0. See the LICENSE file for the full legal text.
| Async | QSTASH_TOKEN | Yes | Bearer token for Upstash QStash job publishing. |
| Async | QSTASH_SIGNING_KEYS | Yes | Signing keys for verifying QStash webhooks. |
| Auth | JWT_SECRET | Yes | Secret key for signing authorization tokens. |
| Auth | COOKIE_SECRET | Yes | Secret key for signed cookies. |
| Security | JWT_SECRET | Yes | Secret key for JWT signing. |
| Backup | BACKUP_ENCRYPTION_KEY | Yes | AES-256 key for encrypting database backups. |
| Backup | ENCRYPTION_KEY | Yes | Master key for field-level data encryption. |
| Backup | ENCRYPTION_SALT | Yes | Unique salt string for field-level encryption. |
| Backup | BACKUP_ENCRYPTION_SALT | Yes | Unique salt string for backup encryption. |
| Backup | BACKUP_DIR | Optional | Directory for backup storage (default: ./backups). |
| Backup | BACKUP_RETENTION_DAYS | Optional | Backup retention period in days (default: 30). |
| Social Auth | GOOGLE_CLIENT_ID | Optional | Google OAuth 2.0 Client ID. |
| Social Auth | GITHUB_CLIENT_ID | Optional | GitHub OAuth App Client ID. |