Inspect
Multi-tenant SaaS that digitizes textile QC inspections, designed and built end to end.
Inspectors move through guided photo loops for collar, seams, stitching, measurements, and packaging instead of paper checklists.
Acceptance sampling follows ISO 2859-1 AQL, so lot sizes and accept or reject thresholds are standardized, not guessed.
Every report is canonicalized, hashed, and signed with Ed25519, so a buyer can verify it was never altered without trusting the platform.
A hash-chained audit log and org-scoped role-based access keep each tenant separate and every change tamper-evident.
- Next.js 15
- NestJS
- Prisma
- PostgreSQL
- Redis
- Turborepo
// Inspect: multi-tenant SaaS digitizing textile QC inspections.
// One-line: quality inspections that leave a paper trail nobody can quietly edit.
import { Project } from '@/portfolio'
interface AuditEntry {
actor: string
action: string
timestamp: string
}
// Every audit entry links to the hash of the one before it.
// Edit an old entry and every hash after it stops matching, so the tampering shows up loudly.
function chainHash(prevHash: string, entry: AuditEntry): string {
return signEd25519(`${prevHash}:${entry.actor}:${entry.action}:${entry.timestamp}`)
}
export const inspect: Project = {
name: 'Inspect',
hook: 'Multi-tenant SaaS digitizing textile QC inspections, designed and built end to end.',
// Guided photo loops replace paper checklists across collar, seams, stitching, measurements, packaging.
// Acceptance sampling follows AQL (ISO 2859-1), so thresholds are standardized, not guessed.
// Reports are canonicalized, hashed, and Ed25519-signed: a buyer verifies them without trusting the portal.
// A hash-chained audit log and org-scoped RBAC keep each tenant separate and tamper-evident.
stack: ['Next.js 15', 'NestJS', 'Prisma', 'PostgreSQL', 'Redis', 'Turborepo'],
github: 'https://github.com/IjunaidI/Inspect-monorepo',
}