Sistema completo de trazabilidad para cannabis medicinal e industrial, diseñado para Argentina con arquitectura preparada para expansión global.
nodoweed/
├── contracts/ # Smart contracts (Solidity + Hardhat)
├── backend/ # API REST + Indexador (NestJS + Prisma)
├── frontend/ # Dashboard web (Next.js)
└── infra/ # Infraestructura AWS (Terraform)
- Semilla → Flor → Extracto → Producto Final
- Registro de genéticas con certificación INASE
- Clasificación por quimiotipo (1, 2, 3)
- Lotes con múltiples análisis cromatográficos
- 2-3 análisis cromatográficos por lote (hasta 500g)
- Certificación automática si THC consistente (delta ≤ 1%)
- %THC promedio certificado en blockchain
- Recetas médicas por quimiotipo (1=THC, 2=Mixto, 3=CBD)
- Pacientes solo acceden a productos autorizados
- Privacidad: IDs hasheados, sin datos personales on-chain
- Hooks para integración con Zero Knowledge Proofs
- Verificación de credenciales internacionales sin datos personales
| Contrato | Descripción |
|---|---|
RoleRegistry |
Gestión de roles (BREEDER, GROWER, LAB, REGULATOR, MEDICAL, ONG) |
GeneticsRegistry |
Registro y aprobación de genéticas |
BatchToken |
ERC-1155 para lotes de productos |
LabTestRegistry |
Resultados cromatográficos |
BatchCertificationRegistry |
Certificación de lotes |
PrescriptionRegistry |
Recetas médicas por quimiotipo |
OngDispense |
Dispensación con control de acceso |
cd contracts
npm install
cp .env.example .env
# Editar .env con tu private key
# Tests
npm run test
# Deploy a Fuji testnet
npm run deploy:fujicd backend
npm install
cp .env.example .env
# Editar .env con DATABASE_URL y direcciones de contratos
# Base de datos
npm run db:push
npm run generate
# Desarrollo
npm run devcd frontend
npm install
# Crear .env.local con NEXT_PUBLIC_API_URL
npm run devcd infra/terraform/envs/dev
cp terraform.tfvars.example terraform.tfvars
# Editar terraform.tfvars
terraform init
terraform plan
terraform apply| Método | Endpoint | Descripción |
|---|---|---|
| POST | /genetics |
Registrar genética |
| GET | /genetics/:id |
Ver genética |
| PATCH | /genetics/:id/approve |
Aprobar genética |
| POST | /batches |
Crear lote |
| GET | /batches/:id |
Ver lote con tests |
| POST | /labtests |
Registrar test |
| POST | /certifications/:batchId |
Certificar lote |
| POST | /prescriptions |
Emitir receta |
| POST | /dispense |
Dispensar producto |
- Breeder registra genética con quimiotipo
- Regulador aprueba genética
- ONG crea lote de flor/producto
- Laboratorio registra 2-3 análisis cromatográficos
- Regulador certifica lote (THC promedio)
- Médico emite receta con quimiotipo autorizado
- ONG dispensa producto (solo quimiotipo autorizado)
- Ley 27.350 (Argentina)
- No almacena datos médicos sensibles on-chain
- IDs de pacientes hasheados
- Preparado para credenciales ZK internacionales
- Blockchain: Solidity 0.8.24, OpenZeppelin, Hardhat
- Backend: NestJS, Prisma, PostgreSQL, ethers.js
- Frontend: Next.js 14, React Query, TailwindCSS
- Infra: AWS (ECS Fargate, RDS, CloudFront), Terraform
MIT
- Fork el repositorio
- Crear feature branch
- Commit cambios
- Push y crear PR
Desarrollado por NoDoWeed ONG 🌿