Skip to content

Core Web App#

Overview#

  • This is the user interface for the Open Brain Institute platform.
  • The primary objective is to empower users to create and manage virtual laboratories, enabling advanced exploration of neuroscience data, construction of computational models, execution of scientific experiments, and seamless interaction with virtual research environments.

Features#

Feature Description
Authentication & Authorization Secure user authentication and project-based access control using OpenID Connect via Keycloak.
Virtual Lab and Project Management Provision, configure, and manage virtual labs; organize workspaces into projects with dedicated resource and cost tracking.
Data Exploration & Experimentation Explore neuroscience data, build computational models, and run scientific experiments within virtual labs.
Dashboard & Activity Monitoring Centralized dashboard for monitoring labs, projects, costs, and system activities.
Cost & Usage Tracking Real-time integration with the Accounting Service for granular resource usage and cost analytics.
Payment Processing Stripe integration for secure, automated payment and subscription management.
AI Agent Interact with the platform using an integrated AI agent for enhanced productivity and support.
Documentation Embedded and linked user documentation for onboarding and support.

Service Endpoints and Integrations#

Environment Variable Service/Endpoint Description Example Value / URL
NEXT_PUBLIC_ACCOUNTING_BASE_URL Accounting Service API https://www.openbraininstitute.org/api/accounting
NEXT_PUBLIC_SMALL_SCALE_SIMULATOR_URL Small Scale Simulator API https://www.openbraininstitute.org/api/small-scale-simulator
NEXT_PUBLIC_CELL_SVC_BASE_URL Cell Service API (Circuit) https://www.openbraininstitute.org/api/circuit
NEXT_PUBLIC_THUMBNAIL_GENERATION_BASE_URL Thumbnail Generation Service https://www.openbraininstitute.org/api/thumbnail-generation
NEXT_PUBLIC_VIRTUAL_LAB_API_URL Virtual Lab Manager API https://www.openbraininstitute.org/api/virtual-lab-manager
NEXT_PUBLIC_NOTEBOOK_SERVICE_BASE_URL Notebook Service API https://www.openbraininstitute.org/api/notebook_service
NEXT_PUBLIC_OBI_ONE_URL OBI One API https://www.openbraininstitute.org/api/obi-one
NEXT_PUBLIC_MATOMO_URL Analytics (Matomo) https://openbraininstitute.matomo.cloud
NEXT_PUBLIC_AI_AGENT_URL AI Agent API https://www.openbraininstitute.org/api/agent/
KEYCLOAK_URL Authentication Provider (Keycloak) https://openbraininstitute.org/auth/realms/SBO

Technology stack#

Area Details
Framework Next.js v15.4 (TypeScript)
Testing Playwright (e2e), Vitest (unit)
Type Safety TypeScript
Error Monitoring Sentry (client/server)
Payments Stripe (payment processing)
CMS Sanity (content management)
Analytics Matomo (privacy-friendly analytics)
Containerization Docker
CI/CD GitHub Actions

Simplified Architecture Diagram#

graph TD
    Users([Users / Internet])
    PublicALB([Public Application Load Balancer])
    PrivateALB([Private Application Load Balancer])
    CoreWebApp([Core WebApp ECS Service])
    Keycloak([Keycloak ECS Service])
    CDN([CloudFront CDN])
    S3([S3 Bucket<br/>core-webapp-assets])

    %% User entry points
    Users --> PublicALB
    Users --> CDN

    %% Public to Private ALB
    PublicALB --> PrivateALB

    %% Private ALB routes
    PrivateALB --> CoreWebApp
    PrivateALB --> Keycloak

    %% CDN to S3
    CDN -->|OAC Access| S3

    %% CoreWebApp to CDN (for static asset URLs)
    CoreWebApp -.->|CDN URI in app| CDN

    %% CoreWebApp to Keycloak
    CoreWebApp -->|Auth API| Keycloak

Connectivity diagram#

Note: Server-side and client-side connections from core-web-app are grouped in separate groups for clarity. Server-side connections are based on value 1 in the matrix.xlsx ; client-side connections are services used from the client

flowchart LR
    Users([Users])
    PublicALB([Public Application Load Balancer])
    CoreWebApp([Core WebApp ECS Service])
    CDN([CloudFront CDN])
    S3([S3 Bucket core-webapp-assets])

    %% User entry points
    Users --> PublicALB
    Users --> CDN
    CDN -->|OAC Access| S3
    CoreWebApp -.->|CDN URI in app| CDN
    PublicALB --> CoreWebApp

    %% Server-side services cluster (vertical, minimal arrows)
    subgraph ServerSide["Server-side Service Integrations"]
        direction TB
        EntityCore([EntityCore Service])
        VirtualLabService([Virtual lab Service])
        Keycloak([Keycloak Auth Service])
    end

    %% Client-side services cluster (vertical, minimal arrows)
    subgraph ClientSide["Client-side Service Integrations"]
        direction TB
        MiniCircuit([MiniCircuit])
        ModelData([model-data-point-cloud])
        NeuroAgent([neuroagent])
        Notebooks([notebooks-service])
        OBIOne([obi-one])
    end

    %% Server-side connections
    CoreWebApp -->|Server-side API| EntityCore
    CoreWebApp -->|Server-side API| VirtualLabService
    CoreWebApp -->|OIDC Auth| Keycloak

    %% Client-side connections
    CoreWebApp -.->|Client-side| MiniCircuit
    CoreWebApp -.->|Client-side| ModelData
    CoreWebApp -.->|Client-side| NeuroAgent
    CoreWebApp -.->|Client-side| Notebooks
    CoreWebApp -.->|Client-side| OBIOne

    %% Custom styling for Accounting node
    class Accounting grayed;
    classDef grayed fill:#e0e0e0,stroke:#888,color:#222,stroke-width:2px;

Cloud Architecture#

CoreWebApp - Cloud Architecture