A curated list of best practices for Digital Public Goods — covering community, security, architecture, testing, and usability.
Establishes clear expectations for respectful and inclusive behavior within a software community.
Provides clear instructions for how to contribute to a project, ensuring consistency and quality in submissions.
Standardize contribution guidelines by providing pre-defined templates for reporting issues and submitting pull requests.
Store configuration variables and secrets in dedicated files to separate them from application code and simplify environment management.
Promote interoperability and long-term accessibility by using widely accepted, non-proprietary standards and file formats.
Enable automated, code-driven access to system functionality for seamless integration and scalability.
Track and manage modifications to code or documents by systematically recording changes and enabling collaboration through versioning tools.
Automates the process of building, testing, and releasing code changes to ensure rapid and reliable software delivery.
A versioning scheme that uses a three-part number to convey backward-incompatible changes, new features, and bug fixes.
Maintain clear version tags and detailed documentation for each software release to ensure traceability and user awareness of changes.
Measure the proportion of your codebase exercised by automated tests to identify untested areas and improve test effectiveness.
Write automated tests before implementing code to ensure functionality meets requirements.
Verify individual components and their interactions to ensure correct functionality and integration within the system.
Automate checks to ensure data and inputs meet required formats and criteria before processing.
Establish guidelines to ensure software is designed, developed, and deployed with security integrated at every stage.
Ensure that only verified users can access permitted resources and actions within the system.
Protects sensitive information by removing or masking personal identifiers from data sets to prevent identification of individuals.
Protects sensitive information by converting it into a secure, unreadable format accessible only to authorized users.
Ensure all external libraries and components are tracked, updated, and compatible to maintain software stability and security.
Require users to provide two or more forms of verification before granting access to systems or data.
A comprehensive inventory listing all components, libraries, and dependencies used within a software system to enhance transparency and security.
Provide a clear process for identifying, documenting, and communicating security weaknesses in software systems.
Isolates applications and their dependencies into lightweight, portable units to ensure consistency across different environments.
A software design approach where components communicate by producing and responding to events, enabling loose coupling and scalability.
An approach to designing applications as a collection of small, independently deployable services that communicate over well-defined APIs.
Design systems as independent, interchangeable components to simplify updates and long-term support.
A software design approach where all components and functionalities are unified within a single, tightly integrated codebase.
Design systems to efficiently handle increased load, users, or data without performance degradation.
Design each module or class to handle a distinct functionality, ensuring that each part of the codebase has one clear purpose.
An approach that structures applications as a collection of loosely coupled, reusable services that communicate over a network.
Ensures digital products are usable by people with disabilities through evaluation against accessibility standards.
Provide users with specific, easy-to-understand guidance when errors occur to help them resolve issues efficiently.
Assessing and comparing software solutions to determine their effectiveness and suitability for specific requirements.
An approach that prioritizes understanding and addressing the needs, behaviors, and experiences of people throughout the design process.
Design software to support multiple languages, regions, and cultural conventions for global usability.
Ensures consistency and efficiency in UI development by leveraging a centralized collection of reusable components and design standards.
Focuses on designing products and services by prioritizing the needs, preferences, and behaviors of end users throughout the development process.
Guidelines ensuring data is findable, accessible, interoperable, and reusable for both humans and machines.
Establishes clear policies and controls to ensure the privacy, security, quality, and ethical use of health data.
A set of guidelines to help organizations design and implement effective, inclusive, and sustainable technology solutions for development.
A set of five object-oriented design guidelines that promote maintainable, flexible, and scalable software architecture.
Provides global ethical guidelines for the development and use of artificial intelligence to promote human rights, inclusion, and sustainability.
Guidelines promoting open source, scalability, collaboration, and ethical use of technology for social impact.