20 repositorios
Mediator layers that decouple the domain logic from specific data source implementations.
Distinct from Backend Data Access Layers: Focuses on the repository as a mediator between layers rather than a generic backend data access layer.
Explore 20 awesome GitHub repositories matching data & databases · Repository Patterns. Refine with filters or upvote what's useful.
This project is a collection of reference implementations demonstrating recommended patterns for organizing code and managing data flow in Android applications. It provides structural examples of layered architecture, separating code into presentation, domain, and data layers to decouple business logic from data sources. The repository includes specific samples for implementing declarative user interfaces that automatically update their visual state based on underlying data changes. It further demonstrates how to manage object lifetimes and component dependencies to reduce boilerplate and sim
Uses a repository-based data access pattern to separate the presentation layer from local and remote data sources.
This project is an ASP.NET Core solution template and boilerplate that implements a clean architecture pattern for building enterprise applications and web API backends. It provides a standardized project scaffold designed to separate business logic from infrastructure and user interfaces to ensure high testability and low coupling. The project features a database agnostic structure that allows for switching persistence providers without altering core business logic. It includes a command line tool for enterprise application bootstrapping, enabling the automated generation of project structur
Abstracts data persistence behind a standard interface to decouple business logic from specific database technologies.
This is a reference implementation of Uncle Bob's clean architecture for Android, structured into distinct domain, data, and presentation layers. The project demonstrates how to organize an Android application around business use cases, keeping domain logic and entities free from framework dependencies. The architecture enforces dependency inversion through layered separation, where inner domain layers define interfaces that outer layers implement. This approach enables repository abstractions for data source switching, presenter-view separation for testable UI logic, and use-case composition
A pattern that decouples data sources from business logic by defining repository interfaces in the domain layer and implementing them in the data layer.
eShopOnWeb is a reference application for ASP.NET Core that demonstrates a sample e-commerce site. It serves as a template for building scalable services using domain-driven design to separate business logic from infrastructure and data access. The project implements a decoupled messaging pattern through a request pipeline to separate web controllers from application logic. It utilizes a repository pattern to abstract data persistence and isolate the core application logic from the specific database storage mechanism. The application covers a broad surface of web capabilities, including user
Utilizes the repository pattern to abstract data persistence and isolate domain logic from the database.
Doctrine ORM is a PHP object-relational mapper that connects application objects to relational database tables. It uses the data mapper and identity map patterns to decouple the in-memory object model from the database schema, allowing developers to manage data persistence without writing manual SQL. The project features a dedicated object-oriented query language and programmatic builder for retrieving data based on entities rather than tables. It implements a unit-of-work system to track object changes during a request and synchronize them via atomic transactions. The capability surface inc
Implements the repository pattern to encapsulate query logic and decouple the domain layer from data access.
This project is a boilerplate and template for Go applications implementing Clean Architecture. It provides a standardized project structure designed to organize code into decoupled layers, ensuring that core business logic remains independent of databases, frameworks, and user interfaces. The implementation focuses on a domain-driven design that utilizes dependency injection and the repository pattern to abstract data storage. It enforces architectural boundaries through internal package encapsulation and layer-based dependency inversion. The project includes a development toolchain that au
Decouples domain logic from specific data storage implementations through the repository pattern.
This project is a reference implementation of the Model-View-ViewModel pattern using Android Jetpack components. It serves as an architecture template and layering guide, dividing application code into view, domain, and data layers to ensure a unidirectional flow of dependencies. The implementation focuses on state management and configuration change handling. It demonstrates how to synchronize UI updates across multiple screens using shared state containers and preserves application state during transitions between portrait and landscape orientations. The codebase covers a broad surface of
Abstracts data sources into a single API to decouple business logic from network or local database implementations.
Tivi is a cross-platform application for discovering and tracking television shows, built with Kotlin Multiplatform and Compose Multiplatform to share its user interface across Android, iOS, and desktop platforms. The app follows the Model-View-Intent (MVI) architecture pattern, where user actions are modelled as sealed class intents that reduce into a single immutable state object, ensuring predictable and unidirectional data flow managed through Kotlin coroutines and StateFlow. The application uses Hilt for compile-time dependency injection and SQLDelight for type-safe local data storage, c
Combines Retrofit network calls with SQLDelight local caching for offline data access.
This project is a PHP library for implementing a spec-compliant OAuth 2.0 authorization server. It serves as an authentication framework for managing user identities and client authorizations, providing the necessary components to issue and validate access and refresh tokens. The server supports a wide range of standardized authorization flows, including authorization code exchange, device grants, implicit flows, and PKCE enforcement. It handles complex token lifecycles through refresh token rotation, scope management, and the use of asymmetric keys for signing digital tokens. The system pro
Uses the repository pattern to decouple domain logic from specific database implementations.
This project is a TypeScript-based private API SDK and automation framework for Instagram. It serves as a server-side toolkit for NodeJS that interfaces with undocumented API endpoints to programmatically manage profiles and automate account operations. The library focuses on mimicking authentic user behavior by simulating mobile application network traffic patterns and headers. It uses stateful session management to maintain authentication tokens and employs a sequence-based coordination model to execute complex workflows, such as multi-step media uploads. The framework covers several high-
Organizes low-level network requests into dedicated repositories to isolate raw API calls from business logic.
Hanami is a full-stack Ruby web framework and API platform designed for building maintainable applications. It centers on a modular web architecture that organizes software into independent slices to prevent monolithic growth and isolate functional units. The framework implements a clean architecture by decoupling business logic from persistence and request handling. This is achieved through a central dependency injection container for managing object lifetimes and a repository pattern mapper that separates domain entities from the persistence layer. The project further provides a Rack-compa
Uses the repository pattern to decouple domain entities from the persistence layer.
Este proyecto es una implementación de referencia de patrones de Domain-Driven Design, modelado de dominio funcional y coordinación de estado basada en eventos. Demuestra la aplicación de patrones de diseño estratégicos y tácticos para gestionar requisitos de negocio complejos. La implementación utiliza un modelo de dominio funcional con funciones puras y objetos inmutables para gestionar transiciones de estado y efectos secundarios. Cuenta con una arquitectura de Segregación de Responsabilidad de Comandos y Consultas (CQRS) para separar modelos de lectura y escritura, junto con coordinación basada en eventos para mantener la consistencia a través de límites de negocio autónomos. La base de código incorpora una arquitectura de monolito modular utilizando contextos delimitados (bounded contexts) y capas hexagonales para aislar la lógica central de la infraestructura. El aseguramiento de la calidad se maneja a través de una suite de desarrollo guiado por comportamiento (BDD) que refleja el lenguaje ubicuo para verificar escenarios de negocio y pruebas automatizadas que aplican restricciones arquitectónicas. El proyecto aplica estos patrones a un dominio de gestión de bibliotecas, cubriendo el mantenimiento del catálogo de libros, flujos de trabajo de circulación, validaciones de reservas y seguimiento de préstamos vencidos.
Uses repositories as a mediator layer to decouple domain logic from specific data source implementations.
Este proyecto es una implementación de referencia que proporciona una colección de ejemplos prácticos para patrones de acceso a datos y abstracciones de repositorios dentro del ecosistema Spring Data. Sirve como un escaparate integral para implementar capas de datos consistentes a través de varias bases de datos relacionales y no relacionales. El repositorio demuestra específicamente la persistencia multi-almacén integrando bases de datos relacionales, de documentos y vectoriales dentro de una única aplicación. Incluye implementaciones para búsqueda vectorial para gestionar embeddings de alta dimensión y búsquedas de similitud a través de diferentes tecnologías de bases de datos. Las capacidades adicionales cubiertas incluyen acceso a datos reactivo para operaciones no bloqueantes y flujos de datos asíncronos. El proyecto también proporciona orientación sobre la optimización de imágenes nativas para mejorar el rendimiento de inicio y el uso de memoria a través de la compilación anticipada (AOT). Los ejemplos ilustran además el aislamiento de datos multi-inquilino, el diseño de APIs de repositorios de datos y la integración de búsqueda geoespacial y de texto completo.
Implements repository mediator layers that decouple domain logic from specific data source implementations.
Este proyecto es una implementación de referencia y muestra arquitectónica de Domain-Driven Design (DDD). Sirve como una base de código que demuestra cómo alinear el diseño de software con un dominio de negocio específico para gestionar lógica de negocio compleja. La implementación funciona como un sistema de informes que recibe y procesa datos mediante payloads JSON. Utiliza un modelo de dominio estructurado para definir y automatizar flujos de trabajo de negocio y manejar cambios de estado. La arquitectura divide el sistema en capas de aplicación y dominio distintas, utilizando raíces de agregado (aggregate roots) para la consistencia y el patrón repositorio para el acceso a datos. Los servicios de aplicación coordinan tareas y delegan la lógica a los objetos de dominio para separar la infraestructura técnica de las reglas de negocio.
Utilizes the repository pattern to decouple domain business logic from the underlying persistence implementation.
LoopBack Next es un framework de API de Node.js utilizado para construir APIs REST y multiprotocolo. Funciona como una implementación de servidor OpenAPI que puede generar especificaciones legibles por máquina a partir del código o producir controladores e implementaciones de modelos a partir de especificaciones existentes. El framework se distingue por un contenedor central de inyección de dependencias y una capa de acceso a datos basada en el patrón repositorio. Esta arquitectura desacopla la lógica de la aplicación de la construcción de componentes y el almacenamiento persistente, permitiendo un sistema conectable donde las fuentes de datos y la lógica de negocio están aisladas a través de un sistema de conectores estandarizado. El proyecto cubre una amplia gama de capacidades, incluyendo control de acceso basado en roles con estrategias de autenticación conectables y la orquestación de servicios REST y SOAP externos. También proporciona herramientas para comunicación en tiempo real mediante endpoints WebSocket, validación de esquemas JSON y andamiaje (scaffolding) automatizado de proyectos a través de una interfaz de línea de comandos. El desarrollo está respaldado por un conjunto de herramientas CLI para arrancar aplicaciones, generar componentes de API y gestionar dependencias del proyecto.
Abstracts database logic through a repository layer to decouple business logic from persistent storage implementations.
Crawler4j is a multi-threaded Java web crawler and spider designed for high-volume web traversal and content extraction. It functions as a polite crawling framework that enables the discovery and indexing of HTML and binary content across multiple websites. The project distinguishes itself through a persistent crawling model that serializes session state to local storage, allowing the engine to resume indexing after a crash or interruption. It includes a politeness controller to regulate request frequency and delays, preventing server overloading and IP blocking. The system covers a broad ra
Uses the repository pattern to decouple crawling logic from the persistence of page metadata.
qksms es un cliente de SMS de código abierto para Android diseñado para enviar y recibir mensajes de texto y multimedia a través de servicios celulares. Sirve como una alternativa a las aplicaciones de mensajería predeterminadas, proporcionando una interfaz dedicada para la comunicación de texto móvil. La aplicación está construida como un mensajero Material Design, centrándose en una experiencia visual limpia a través de principios de diseño modernos. Permite la personalización de la experiencia de mensajería de Android reemplazando la interfaz predeterminada del sistema.
Employs the repository pattern to centralize data access logic between system providers and local caches.
Este proyecto es una biblioteca de patrones de repositorio para aplicaciones Laravel diseñada para desacoplar la lógica de negocio de las consultas a la base de datos y la implementación de almacenamiento. Proporciona una capa de acceso a datos estandarizada para aislar la lógica de la aplicación de la capa de almacenamiento subyacente. La biblioteca incluye un sistema de filtros de consulta que traduce los parámetros de las peticiones HTTP en filtros dinámicos de base de datos, criterios de búsqueda y lógica de ordenamiento. Cuenta con una capa de presentador de API para separar las estructuras de datos internas de las respuestas del cliente y un gestor de caché que actualiza automáticamente los resultados almacenados de la base de datos cuando se modifican los registros. Las capacidades adicionales incluyen una herramienta de línea de comandos para generar controladores, modelos y repositorios, así como clases de validación para aplicar reglas de negocio antes de que los datos sean persistidos.
Implements a repository pattern to decouple application business logic from the underlying storage implementation.
This project is a native Android mobile application and Wikipedia client designed for browsing and editing encyclopedia content through a mobile interface. It provides users with a dedicated way to access and search a crowdsourced knowledge base on Android devices. The application features integrated support for global accessibility through mobile localization and the ability to translate interface text into multiple languages. It also utilizes remote configuration to manage operational behavior and feature toggles via JSON files, allowing system settings and logging levels to be adjusted wit
Implements a repository layer that mediates between remote network APIs and local caching for offline access.
Este proyecto proporciona un boilerplate estructurado para construir APIs REST en Node.js, implementando principios de arquitectura limpia para aislar la lógica de negocio de frameworks externos y fuentes de datos. Sirve como plantilla para organizar servicios backend complejos mediante la aplicación de una estricta separación de responsabilidades entre entidades de dominio, infraestructura y capas de interfaz. La arquitectura se distingue por un diseño de servidor modular basado en plugins construido sobre el framework Hapi.js. Utiliza un contenedor de inyección de dependencias para desacoplar la lógica de negocio de las implementaciones concretas, asegurando que los servicios y adaptadores permanezcan intercambiables y testeables. Al emplear el patrón de repositorio, el sistema media entre los objetos de dominio y las capas de persistencia de datos, manteniendo la independencia de tecnologías de base de datos específicas. El framework cubre el ciclo de vida completo del manejo de peticiones, incluyendo enrutamiento, extracción de parámetros y serialización de respuestas. Organiza el código de la aplicación en capas distintas que reflejan los conceptos de negocio centrales, facilitando la mantenibilidad y escalabilidad a largo plazo de los servicios backend.
Mediates between domain and data layers using a collection-like interface for persistence.