Files
Lynkedup-Node-Backend/README.md
2025-12-16 22:26:18 +05:30

7.0 KiB

LynkedUp Platform

Mobile-first SDK-based application suite with enterprise-grade security and offline-first capabilities

CI Status License

🏗️ Architecture Overview

LynkedUp is built as a PNPM monorepo with Nx orchestration, featuring:

  • 📱 Mobile-First: React Native applications with native security integrations
  • 🔐 Security by Default: Hardware-backed cryptography, DPoP, SQLCipher encryption
  • 📴 Offline-First: 100% functional offline with conflict-free synchronization
  • 🎯 SDK-First Modularity: Independent, composable SDKs with strict boundaries
  • 🛡️ Policy-Aware: Fine-grained ABAC via Permit.io/OPA
  • 🏢 Multi-Tenant: Organization-level encryption keys and data isolation
graph TD
    A[LynkedUp Pro App] --> B[Feature SDKs]
    A --> C[Core SDKs]
    D[LynkedUp Foundation] --> B
    D --> C
    
    B --> E[@feature/auth<br/>@feature/tasks<br/>@feature/messaging]
    C --> F[@core/security<br/>@core/storage<br/>@core/sync<br/>@core/policy]
    
    F --> G[Native Layer<br/>SQLCipher • Secure Enclave • StrongBox]
    C --> H[GraphQL BFF<br/>Node.js • Permit.io • PostgreSQL]

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • PNPM 8+
  • React Native development environment
  • Xcode (iOS) / Android Studio (Android)

Installation

# Clone and install dependencies
git clone https://github.com/lynkedup/monorepo.git
cd lynkedup-monorepo
pnpm install

# Initialize development environment
pnpm nx run-many -t build

Development

# Start SDK playground for development
pnpm dev:playground

# Start LynkedUp Pro app
pnpm dev:pro

# Run tests across all packages
pnpm test

# Run only affected tests (recommended)
pnpm affected:test

📦 Package Structure

lynkedup-monorepo/
├── apps/
│   ├── lynkedup-pro/           # Primary React Native app
│   ├── lynkedup-foundation/    # Foundation variant
│   ├── api-bff/               # Node.js GraphQL BFF  
│   └── sdk-playground/        # SDK development sandbox
├── packages/
│   ├── core/                  # Tier 0: Infrastructure SDKs
│   │   ├── security/          # Hardware-backed crypto, DPoP
│   │   ├── storage/           # Encrypted RxDB/SQLCipher
│   │   ├── sync/              # Offline-first synchronization
│   │   ├── policy-client/     # ABAC policy evaluation
│   │   └── trust/             # Device posture & risk assessment
│   ├── feature-auth/          # Tier 1: Authentication
│   │   ├── domain/            # Pure business logic
│   │   ├── data/              # Repository implementations
│   │   └── ui-rn/             # React Native components
│   ├── feature-tasks/         # Task & project management
│   ├── feature-messaging/     # Unified messaging backbone
│   └── shared/                # Common utilities & types
└── tooling/                   # Development tools & mocks

🔐 Security Features

  • Hardware-Backed Keys: iOS Secure Enclave & Android StrongBox
  • DPoP Authentication: RFC 9449 sender-constrained tokens
  • Contextual Encryption: Organization-specific data encryption keys
  • Cryptographic Erasure: Remote data destruction via key deletion
  • Device Attestation: Apple DeviceCheck & Play Integrity integration
  • Policy-Driven Access: Real-time ABAC enforcement

📴 Offline Capabilities

  • Local-First Storage: Encrypted SQLCipher with reactive queries
  • Durable Outbox Pattern: Reliable offline mutation queuing
  • CRDT Synchronization: Conflict-free collaborative data
  • Optimistic UI: Immediate feedback with eventual consistency
  • Policy Caching: Local ABAC evaluation with server enforcement

🛠️ Development Workflow

Module Boundaries

The monorepo enforces strict architectural boundaries via ESLint rules:

  • Domain Purity: Domain layers cannot import infrastructure
  • Vertical Isolation: Features cannot depend on other features
  • Layered Dependencies: UI → Data → Domain → Shared

SDK Development

Each SDK follows clean architecture principles:

  1. Domain Layer: Pure TypeScript business logic
  2. Data Layer: Infrastructure adapters (RxDB, GraphQL, native modules)
  3. UI Layer: React Native components and screens

See individual SDK playbooks in packages/*/README.playbook.md.

Testing Strategy

  • Unit Tests: High coverage for business logic (Jest)
  • Contract Tests: GraphQL schema compliance (MSW)
  • Integration Tests: Cross-SDK interactions
  • E2E Tests: Complete user flows (Detox)

📋 Available Scripts

# Development
pnpm dev:playground          # SDK development sandbox
pnpm dev:pro                # LynkedUp Pro app
pnpm dev:foundation         # LynkedUp Foundation app

# Quality Assurance  
pnpm build                  # Build all packages
pnpm test                   # Run all tests
pnpm lint                   # Lint all packages
pnpm typecheck              # TypeScript validation

# Affected Operations (CI/CD)
pnpm affected:build         # Build affected packages
pnpm affected:test          # Test affected packages
pnpm affected:lint          # Lint affected packages

# Release Management
pnpm changeset              # Create changeset
pnpm changeset:version      # Bump versions
pnpm changeset:publish      # Publish to NPM

🚢 Release Management

This monorepo uses Changesets for versioning and publishing:

  1. Create Changeset: pnpm changeset
  2. Version Bump: pnpm changeset:version
  3. Publish: pnpm changeset:publish

Only SDK packages are published to NPM. Applications are deployment artifacts.

🧪 CI/CD Pipeline

  • SLSA Level 3: Supply chain security with signed provenance
  • Nx Cloud: Remote caching for optimal build performance
  • Affected Testing: Only test/build changed packages
  • Semantic Versioning: Automated version management
  • Security Scanning: Dependency and code vulnerability checks

📚 Documentation

  • Architecture: docs/architecture.md
  • Security Model: docs/security.md
  • SDK Playbooks: packages/*/README.playbook.md
  • API Reference: Generated from TypeScript types
  • GraphQL Schema: apps/api-bff/schema.graphql

🤝 Contributing

  1. Create Feature Branch: git checkout -b feat/scope-description
  2. Follow Conventions: Conventional Commits with proper scopes
  3. Add Changeset: pnpm changeset for public API changes
  4. Quality Gates: Pre-commit hooks ensure code quality
  5. Pull Request: Title should match commit convention

📄 License

Copyright (c) 2024 LynkedUp Platform. All rights reserved.

This software is proprietary and confidential. Unauthorized copying, distribution, or use is strictly prohibited.