13 dépôts
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 est un framework fonctionnel pour construire des applications monopages (SPA) en ClojureScript. Il fournit une base de données centralisée et immuable qui sert de source unique de vérité pour l'état global de l'application, imposant un flux de données unidirectionnel strict où les événements déclenchent des transitions d'état et des mises à jour de vue. Le framework se distingue par un graphe de signaux réactifs et un pipeline de middleware basé sur des intercepteurs. En traitant la logique applicative comme une séquence d'événements pilotés par les données et d'effets de bord déclaratifs, il découple la logique métier de la couche de vue. Cette architecture permet aux développeurs de gérer des transitions d'état complexes et des opérations externes via des fonctions pures, garantissant que les effets de bord sont exécutés par un interpréteur séparé plutôt que par des appels impératifs. Le système inclut une suite complète de capacités pour gérer l'architecture applicative, notamment la dérivation de données réactives, la réconciliation de vue basée sur les abonnements et la gestion d'état pilotée par les événements. Il prend en charge des flux de développement avancés tels que le traçage d'événements, la mise en point d'état et la possibilité de simuler (stub) des effets de bord pour des tests isolés. Le projet est conçu pour une intégration avec React, utilisant la réconciliation du DOM virtuel pour mettre à jour efficacement les interfaces utilisateur. Il fournit un ensemble robuste d'utilitaires pour gérer les préoccupations transversales, les graphes de flux de données complexes et coordonner les opérations asynchrones au sein d'un pipeline d'événements séquentiel et prévisible.
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.
Ce projet est un compilateur de feuilles de style CSS qui transforme le code source Sass en CSS standard. Il fournit le mécanisme principal de conversion des styles tout en implémentant les règles de syntaxe pour les navigateurs web et les applications. Le compilateur prend en charge un système de dépendances basé sur des modules qui utilise des espaces de noms dédiés pour assurer l'encapsulation et éviter les collisions de portée globale. Il inclut des moteurs spécialisés pour la conversion de couleurs multi-modèles et des calculs mathématiques avancés, incluant la trigonométrie et les logarithmes. Les capacités couvrent une large gamme d'outils de build et d'analyse, incluant la génération de source maps, la surveillance du système de fichiers pour la recompilation automatique, et la possibilité d'exécuter la compilation directement dans un navigateur web. Il permet également l'extensibilité via des fonctions personnalisées et des importateurs définis dans un langage hôte via un protocole de messagerie structuré. Les utilisateurs peuvent également effectuer une analyse statique en inspectant l'arbre de syntaxe abstraite pour analyser la structure du code et résoudre les dépendances sans effectuer une compilation complète.
Loads stylesheets as independent modules with dedicated namespaces to encapsulate variables and prevent collisions.
Ce projet fournit un modèle structurel pour organiser les applications React et TypeScript en découplant la logique métier des composants d'interface utilisateur et de l'infrastructure externe. Il implémente une architecture en couches qui isole les règles de domaine principales, garantissant que l'application reste indépendante des frameworks, bibliothèques ou implémentations de services externes spécifiques. L'architecture repose sur des principes d'injection de dépendances et d'inversion pour gérer les implémentations de services, permettant la modularité et des tests plus faciles. En utilisant un noyau fonctionnel et un shell impératif, le système sépare les effets secondaires de la logique métier pure, tandis que les contrats de type partagés et la sécurité de type stricte garantissent des structures de données cohérentes dans tous les modules de l'application. L'approche facilite la création de cas d'utilisation et d'entités de domaine agnostiques au framework qui peuvent être testés et maintenus de manière isolée. En définissant des interfaces abstraites pour les services externes et en implémentant des couches de traduction de données, le projet garantit que le code spécifique à l'infrastructure ne fuit pas dans la logique métier principale.
Structures application code using functional patterns to enhance predictability and testability.