awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
O

omcljs/om

0
View on GitHub↗
6,631 stars·352 forks·Clojure·13 views

Om

Om is a frontend state management library and reactive user interface framework that integrates ClojureScript functional programming with the React virtual DOM rendering engine. It provides a bridge to build responsive web interfaces where visual elements automatically update when underlying application data changes.

The project centers on a normalized state store that flattens complex data structures into a relational format. This data is accessed through a reader-based querying system, which decouples the user interface from the state by allowing components to declare specific data requirements that are resolved through a centralized read function.

State is managed via atomic mutations and transactions, ensuring that global application state transitions trigger targeted re-renders of dependent components. The framework also covers client-server data synchronization, identity-based data resolution, and the ability to render components to strings for server-side content delivery.

Features

  • ClojureScript-React Bridges - Integrates ClojureScript functional programming models with the React rendering engine to build reactive user interfaces.
  • Reader-Based State Querying - Evaluates specific expressions to extract targeted pieces of application state using a dedicated reading function.
  • Frontend State Normalization - Flattens complex nested data structures into a relational format for efficient storage and retrieval within the application state.
  • Data Value Normalization - Flattens complex data structures into a relational format and reconstructs them into trees for the interface.
  • Expression-Based Data Querying - Evaluates specific expressions to extract targeted pieces of application state using a dedicated reading function.
  • Frontend State Management - Implements a centralized state management architecture for handling data flow and synchronization in the browser.
  • State Mutations - Implements atomic state mutations to ensure global application state transitions trigger targeted re-renders of dependent components.
  • Atomic State Mutations - Implements atomic state mutations to ensure global application state transitions trigger targeted re-renders of dependent components.
  • Store Normalization Architectures - Maintains application data in a flat map using unique identities to prevent duplication and simplify updates.
  • Declarative Data Fetching - Specifies the exact data a component needs and manages the parameters used to fetch those updates dynamically.
  • Functional Reactive Programming Frameworks - Combines functional programming patterns with a reactive rendering engine to automatically update the user interface.
  • Identity-Based Data Resolution - Transforms flat data structures into hierarchical trees by resolving references between entities during the rendering phase.
  • Reader-Based Querying - Decouples the user interface from state by allowing components to declare data requirements resolved through a centralized read function.
  • State-to-UI Mapping - Decouples state from the visual layer by transforming raw application state into formatted data for UI display.
  • Global State Managers - Stores shared data in a central location so any component can access it regardless of its position in the tree.
  • Reactive UI Frameworks - Provides a framework for building interfaces that automatically update their visual state in response to data changes.
  • UI Components - Enables the creation of reusable UI components that encapsulate their own data requirements and identity resolution.
  • Virtual DOM Reconciliation - Maps a functional component tree to a real document object model using a diffing engine to update only changed elements.
  • User Interface Frameworks - Provides a functional API for interacting with a virtual DOM to create responsive web user interfaces.
  • Client-Server State Synchronization - Manages the synchronization and coherence between remote server state and local client caches.
  • Transactional Updates - Applies a group of data changes as a single unit to trigger updates across all dependent interface elements.
  • Dynamic Query Parameterization - Allows the parameters of a data request to be changed during execution to update displayed information.
  • Functional Components - Combines pure functional declarations with stateful lifecycle methods to build a reactive user interface hierarchy.
  • Data Merging - Combines new data fragments into the current application state and signals all affected components to refresh.
  • Client-Server State Synchronization - Coordinates data requests and updates using a reconciliation process that aligns local state with remote data sources.
  • Component State Management - Provides methods for managing component-level data and scheduling visual refreshes.
  • React Interface - Powerful interface for building complex React-based applications.

Star history

Star history chart for omcljs/omStar history chart for omcljs/om

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Om

These projects share indexed features with Om. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • day8/re-frameday8 avatar

    day8/re-frame

    5,532View on GitHub↗

    re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized, immutable database that serves as the single source of truth for the entire application state, enforcing a strict unidirectional data flow where events trigger state transitions and subsequent view updates. The framework distinguishes itself through a reactive signal graph and an interceptor-based middleware pipeline. By treating application logic as a sequence of data-driven events and declarative side effects, it decouples business logic from the view layer. This architectur

    Clojureclojurescriptre-framereact
    View on GitHub↗5,532
  • reagent-project/reagentreagent-project avatar

    reagent-project/reagent

    4,872View on GitHub↗

    Reagent is a framework for building web user interfaces using ClojureScript and React.js. It enables a functional programming approach to declarative UI design, where HTML structures and component hierarchies are defined using vector-based Hiccup syntax instead of JSX. The project differentiates itself through a reactive state management system based on atoms. It tracks which components dereference specific state atoms to trigger automatic re-renders and provides state cursors to isolate updates to specific paths of a larger state atom. It also includes utilities for wrapping native JavaScrip

    Clojureclojureclojurescriptfrontend
    View on GitHub↗4,872
  • facebook/reactfacebook avatar

    facebook/react

    245,669View on GitHub↗

    React is a JavaScript library for building user interfaces based on a component-driven architecture and unidirectional data flow.

    JavaScriptjavascriptuifrontend
    View on GitHub↗245,669
  • reactive/data-clientreactive avatar

    reactive/data-client

    2,031View on GitHub↗

    Data-client is an asynchronous state management library designed to synchronize server data with frontend applications. It functions as a normalized cache manager that maps complex API responses into structured, relational entities, ensuring data consistency across the entire application. By providing a unified communication layer, the library supports both REST and GraphQL, allowing developers to bind network data directly to user interface components through declarative hooks. The library distinguishes itself through a robust architecture for optimistic user interface development, where loc

    TypeScriptexpofetchhooks
    View on GitHub↗2,031
Compare all 30 related projects→

Frequently asked questions

What does omcljs/om do?

Om is a frontend state management library and reactive user interface framework that integrates ClojureScript functional programming with the React virtual DOM rendering engine. It provides a bridge to build responsive web interfaces where visual elements automatically update when underlying application data changes.

What are the main features of omcljs/om?

The main features of omcljs/om are: ClojureScript-React Bridges, Reader-Based State Querying, Frontend State Normalization, Data Value Normalization, Expression-Based Data Querying, Frontend State Management, State Mutations, Atomic State Mutations.

Which projects share features with omcljs/om?

Projects with overlapping indexed features include: day8/re-frame — re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized,… reagent-project/reagent — Reagent is a framework for building web user interfaces using ClojureScript and React.js. It enables a functional… facebook/react — React is a JavaScript library for building user interfaces based on a component-driven architecture and unidirectional… reactive/data-client — Data-client is an asynchronous state management library designed to synchronize server data with frontend… frejs/fre — This project is a concurrent UI library and virtual DOM framework. It functions as a state management system and… learnapollo/learnapollo — This project is an interactive learning resource and tutorial for implementing the Apollo GraphQL client. It provides…