13 repositorios
Architectural strategies for organizing code using functional patterns to enhance predictability and testability.
Distinct from JavaScript: Focuses on the architectural organization of JS code via FP, rather than general maintenance or specific testing tools.
Explore 13 awesome GitHub repositories matching software engineering & architecture · Functional Application Structuring. Refine with filters or upvote what's useful.
Functional-Light-JS is a JavaScript functional programming library designed to implement functional patterns within JavaScript applications. It serves as a toolkit for declarative data processing, immutable data management, and the construction of complex logic through higher-order functions. The library focuses on a pragmatic implementation of functional programming, providing utilities for curried argument application and function composition. It emphasizes the use of pure functions to calculate state updates and manage application data without side effects. The project covers broad capabi
Provides a structural approach to JavaScript applications using functional patterns to reduce side effects.
fp-ts is a TypeScript library that brings pure functional programming patterns to the language through algebraic data types, type class abstractions, and composable combinators. It provides foundational data types like Option for optional values, Either for typed error handling, and Task for lazy asynchronous computations, all designed to make invalid states unrepresentable and side effects explicit. The library is built on category theory concepts, offering type classes such as Functor, Applicative, Monad, Semigroup, and Monoid with lawful instances for common data structures. The library di
Provides applicative functor instances for combining effectful computations while preserving inner values.
Fantasy Land is a specification for algebraic interfaces in JavaScript. It defines a set of rules, naming conventions, and behavioral contracts for common functional programming structures to ensure consistent behavior and interoperability across the ecosystem. The project establishes a common language for defining computational contexts and data transformation interfaces. By providing a standard set of signatures, it enables different JavaScript libraries to work together through shared algebraic specifications. The specification covers a wide range of functional abstractions, including alg
Provides specifications for applying wrapped functions to wrapped values to manage computational contexts.
This project is a set of software engineering standards and architectural patterns for writing maintainable and refactorable TypeScript code. It provides a comprehensive guide for implementing clean code principles, focusing on the application of SOLID design and structural patterns to build decoupled systems. The framework prioritizes composition over inheritance and utilizes dependency inversion to reduce system coupling. It establishes standards for strict static typing and the use of read-only modifiers to ensure type safety and eliminate runtime errors. The guidance covers a broad range
Implements standards for writing small, single-responsibility functions to simplify maintenance and testing.
This project is a comprehensive functional programming curriculum and learning resource for Haskell. It provides sequenced educational paths and technical reference guides designed to take developers from beginner to advanced levels of proficiency. The project distinguishes itself through a deep focus on theoretical and technical foundations, offering detailed studies on type theory, category theory, and runtime internals. It includes a dedicated performance handbook for optimizing execution speed and memory management, as well as an ecosystem guide for managing development tools and editor c
Explains the use of applicative lifting to combine values from multiple effects using binary functions.
language-ext is a functional programming framework for C# that provides a suite of immutable data structures and monadic types. It enables the implementation of pure functional programming patterns, utilizing containers to manage side effects, optional values, and error handling. The library is distinguished by its advanced concurrency and state management tools, including a software transactional memory system and lock-free atomic references. It also provides specialized utilities for distributed systems, such as vector clocks for causality tracking and deterministic data conflict resolution
Intercepts failure states within effects to map them to success values or trigger recovery effects.
re-frame es un framework funcional para construir aplicaciones de una sola página (SPA) en ClojureScript. Proporciona una base de datos centralizada e inmutable que sirve como única fuente de verdad para todo el estado de la aplicación, aplicando un flujo de datos unidireccional estricto donde los eventos activan transiciones de estado y actualizaciones de vista posteriores. El framework se distingue por un grafo de señales reactivas y un pipeline de middleware basado en interceptores. Al tratar la lógica de la aplicación como una secuencia de eventos basados en datos y efectos secundarios declarativos, desacopla la lógica de negocio de la capa de vista. Esta arquitectura permite a los desarrolladores gestionar transiciones de estado complejas y operaciones externas mediante funciones puras, asegurando que los efectos secundarios sean ejecutados por un intérprete separado en lugar de llamadas imperativas. El sistema incluye un conjunto completo de capacidades para gestionar la arquitectura de la aplicación, incluyendo la derivación de datos reactivos, la reconciliación de vistas basada en suscripciones y la gestión de estado impulsada por eventos. Admite flujos de trabajo de desarrollo avanzados como el rastreo de eventos, puntos de control de estado y la capacidad de crear stubs de efectos secundarios para pruebas aisladas. El proyecto está diseñado para integrarse con React, utilizando la reconciliación del DOM virtual para actualizar eficientemente las interfaces de usuario. Proporciona un conjunto robusto de utilidades para manejar preocupaciones transversales, gestionar grafos de flujo de datos complejos y coordinar operaciones asíncronas dentro de un pipeline de eventos secuencial y predecible.
Registers new effect handlers to integrate external services, such as databases, logging providers, or browser APIs, into the application flow.
This project is a comprehensive set of architectural patterns, coding standards, and reference materials for AngularJS applications. It establishes a structural approach for separating business logic into injectable services and restricting document object model manipulation to directives. The guide provides a standardized framework for project organization through consistent naming conventions, directory hierarchies, and module structuring. It emphasizes the use of isolated scopes for component encapsulation and explicit array notation for dependency injection to ensure stability during code
Establishes a standardized framework for module structuring using consistent namespacing to organize large-scale applications.
Effector is a reactive state management library and data flow orchestrator designed for building complex, event-driven applications. It models application logic as a directed acyclic graph, where state updates and asynchronous side effects propagate automatically through declarative pipelines. By decoupling business logic from user interface layers, it allows developers to maintain state in independent containers that communicate via standard interfaces, ensuring the system remains framework-agnostic. The library distinguishes itself through its robust support for isolated execution scopes, w
Connects events, stores, and effects into atomic data flows that trigger updates based on state changes.
Effector is a reactive state management library designed for building complex, event-driven applications. It functions as a data flow engine that models application logic as a directed acyclic graph, ensuring that state updates propagate automatically through interconnected nodes. By utilizing atomic state updates and declarative unit composition, the library maintains data consistency and provides a predictable execution model for managing application state. The project distinguishes itself through its framework-agnostic architecture, which decouples business logic from user interface implem
Provides mechanisms to replace real side-effect implementations with custom handlers for isolated unit testing.
This project is a comprehensive guide and set of engineering standards for writing readable, maintainable, and scalable JavaScript code. It provides a framework for software architecture, refactoring patterns, and clean coding practices designed to improve codebase health and longevity. The guide emphasizes the application of SOLID principles and architectural strategies such as dependency inversion and the separation of concerns. It focuses on transforming complex conditional logic through polymorphism and refactoring, while promoting a transition from imperative loops to declarative functio
Implements guidelines for creating atomic functions that perform a single task to improve testability.
Este proyecto es un compilador de hojas de estilo CSS que transforma código fuente Sass en CSS estándar. Proporciona el mecanismo principal para convertir estilos mientras implementa reglas de sintaxis para navegadores web y aplicaciones. El compilador admite un sistema de dependencias basado en módulos que utiliza espacios de nombres dedicados para proporcionar encapsulación y evitar colisiones en el ámbito global. Incluye motores especializados para la conversión de colores multimodelo y cálculos matemáticos avanzados, incluyendo trigonometría y logaritmos. Las capacidades cubren una amplia gama de herramientas de compilación y análisis, incluyendo la generación de mapas de origen (source maps), monitoreo del sistema de archivos para recompilación automática y la capacidad de ejecutar la compilación directamente dentro de un navegador web. También permite la extensibilidad mediante funciones personalizadas e importadores definidos en un lenguaje anfitrión a través de un protocolo de mensajería estructurado. Los usuarios también pueden realizar análisis estáticos inspeccionando el árbol de sintaxis abstracta para analizar la estructura del código y resolver dependencias sin realizar una compilación completa.
Loads stylesheets as independent modules with dedicated namespaces to encapsulate variables and prevent collisions.
Este proyecto proporciona un patrón estructural para organizar aplicaciones de React y TypeScript desacoplando la lógica de negocio de los componentes de la interfaz de usuario y la infraestructura externa. Implementa una arquitectura en capas que aísla las reglas de dominio centrales, asegurando que la aplicación permanezca independiente de frameworks, librerías o implementaciones de servicios externos específicos. La arquitectura se basa en principios de inyección de dependencias e inversión para gestionar las implementaciones de servicios, permitiendo la modularidad y pruebas más fáciles. Al utilizar un núcleo funcional y un shell imperativo, el sistema separa los efectos secundarios de la lógica de negocio pura, mientras que los contratos de tipo compartidos y la seguridad de tipos estricta aseguran estructuras de datos consistentes en todos los módulos de la aplicación. El enfoque facilita la creación de casos de uso y entidades de dominio agnósticas al framework que pueden probarse y mantenerse de forma aislada. Al definir interfaces abstractas para servicios externos e implementar capas de traducción de datos, el proyecto asegura que el código específico de la infraestructura no se filtre en la lógica de negocio primaria.
Structures application code using functional patterns to enhance predictability and testability.