a4b224da8ebb48da08e5a48ca8651f540c1fe781
Azurian Software Factory (ASF)
From Requirement to Production, everything is contextualized, traceable and AI-accessible.
ASF is an AI-native, multi-tenant Software Factory delivered as a SaaS platform.
It creates a persistent contextual and traceability layer connecting the complete software lifecycle:
Requirement → Architecture → Task → Code → Commit → Pull Request → Build
→ Test → Deployment → Runtime → Incident → Feedback
Central principle: Everything is an Artifact.
🏗️ Repository Structure
ASF is organized as a monorepo:
ASF/
├── AGENT.md ← AI engineering rules (MANDATORY READ)
├── README.md ← This file
├── docker-compose.yml ← Local infra (Mongo, Rabbit, Redis, MinIO)
├── .env.example ← Environment template
│
├── docs/
│ ├── architecture/ ← Architecture overviews, diagrams
│ ├── adr/ ← Architectural Decision Records
│ └── api/ ← API documentation
│
├── frontend/
│ └── asf-web/ ← Next.js + React SaaS frontend
│
├── services/
│ ├── asf-core/ ← FastAPI: orgs, projects, artifacts, jobs, audit
│ ├── asf-context/ ← Context engine, artifact traversal
│ ├── asf-ai/ ← AI Gateway: model abstraction, routing
│ └── asf-worker/ ← RabbitMQ consumers / async jobs
│
├── packages/
│ ├── asf-domain/ ← Shared Pydantic domain models
│ ├── asf-events/ ← Event schemas (RabbitMQ payloads)
│ └── asf-connectors/ ← External system integration interfaces
│
├── infrastructure/
│ ├── docker/ ← Per-service Dockerfiles
│ └── scripts/ ← Dev / bootstrap scripts
│
└── tests/ ← Cross-service integration tests
🧱 Technology Stack
| Layer | Stack |
|---|---|
| Frontend | Next.js · React · TypeScript · Tailwind · shadcn/ui |
| Frontend+ | TanStack Query · React Flow · Zustand (sparingly) |
| Backend | Python 3.12+ · FastAPI · Pydantic · async/await |
| Database | MongoDB 7 (async driver) |
| Messaging | RabbitMQ 3.13 (events + job queues) |
| Cache | Redis 7 |
| Storage | MinIO / S3-compatible object storage |
| Testing | pytest (Python) · Vitest/Jest (TS) |
🚀 Local Development
Prerequisites
- Docker & Docker Compose
- Python 3.12+
- Node.js 20+
- pnpm or npm
1. Start infrastructure
cp .env.example .env
docker compose up -d
This starts:
- MongoDB on
localhost:27017 - RabbitMQ on
localhost:5672(management UI on:15672) - Redis on
localhost:6379 - MinIO on
localhost:9000(console on:9001)
2. Install backend packages
# Shared domain package
cd packages/asf-domain && pip install -e . && cd ../..
cd packages/asf-events && pip install -e . && cd ../..
cd packages/asf-connectors && pip install -e . && cd ../..
# Core service
cd services/asf-core && pip install -r requirements.txt && cd ../..
3. Run asf-core API
cd services/asf-core
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
OpenAPI docs:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Health: http://localhost:8000/api/v1/health
4. Install & run frontend
cd frontend/asf-web
npm install
npm run dev
5. Run workers (optional for full async pipeline)
cd services/asf-worker
pip install -r requirements.txt
python -m app.worker
🔑 SaaS Multi-Tenancy Model
Organization (tenant boundary)
└── Teams
└── Projects
└── Artifacts + Relationships + Jobs
Every tenant-owned record carries tenant_id. Cross-tenant queries are blocked at the service/repository layer.
🧩 Services Quick Reference
| Service | Purpose |
|---|---|
asf-core |
REST API · Organizations · Projects · Artifacts · Jobs · Audit |
asf-context |
Context assembly · Relationship traversal · Semantic search |
asf-ai |
AI Gateway · Provider abstraction · Usage metering |
asf-worker |
RabbitMQ consumers · Async job execution |
asf-web |
Next.js Enterprise SaaS UI shell |
🧪 Testing
# Python (all backend services + packages)
pytest packages/asf-domain/tests
pytest services/asf-core/tests
📚 Documentation
- Architecture overview: docs/architecture/
- Architectural Decision Records: docs/adr/
- API docs (auto): http://localhost:8000/docs
- AGENT.md (MANDATORY engineering rules for contributors): AGENT.md
🛡️ Security
- Never commit
.env, credentials, or private keys. - Never expose infrastructure connections to the frontend.
- All tenant-scoped queries are validated against authenticated context.
- Audit events are written for sensitive mutations.
🤝 Guiding Question
When contributing any feature, ask:
Does this improve the connection between software context, traceability, automation and AI?
If not — reconsider the implementation.
Languages
TypeScript
52.6%
Python
43.1%
Shell
2.9%
Makefile
0.5%
CSS
0.4%
Other
0.4%