Origin is a middleware platform that securely shares sensitive data between disparate data sources using dynamically defined attribute-level access rules applied via stream processing jobs.
Origin is built as a microservices architecture with the following components:
- Frontend App (
app/) - Next.js React application providing the user interface - Hasura GraphQL Engine - GraphQL API data management layer with real-time subscriptions
- PostgreSQL Database - Primary data store for metadata and application data
- Lazy Lagoon (
lazy-lagoon/) - Go service for CSV/JSON data transformation and processing - XLSX Processor (
xlsx-processor/) - Go service for Excel file processing and transformation - Restructured (
restructured/) - Python service for PDF processing (supports docx and pptx via translation)- Gotenberg required by restructured for docx and pptx
- Steganography (
steganography/) - Node.js service for audit log reference data hiding
- Docker - For containerized services
- 1Password CLI - Install and sign into the 1Password CLI
- Get access to the Intlabs Dev Shared Vault
- Go 1.23 - For Go services
- Node.js 23 - For JavaScript/TypeScript services
- Just - command runner similar to
make
This project uses Just as a command runner to manage the complex multi-service development environment.
Install via Homebrew
brew install just # Complete setup - installs dependencies, runs migrations, and starts all services just setup# Start all services in detached mode just up # run a command from a specific service just run <service-name> [args...]# Stop and remove all containers just down# Follow logs for all services just logs # Follow logs for specific services just logs postgres graphql-engine# Install app dependencies and inject secrets just install-app # Run the Next.js development server just run-app# Run database migrations and apply Hasura metadata just migrate # Generate GraphQL types and hooks just codegen # Clean database and volumes just clean-hasura# Inject 1Password secrets into service environment files just inject-env-file <service-name>