An open-source collection of software concept definitions. This repository aims to document common software concepts in a structured way to help developers and designers create better software.
A software concept is a reusable unit of functionality that:
- Is user-facing
- Has a clear purpose
- Can be understood independently
- Has well-defined behavior
- Is end-to-end (complete)
- Is often familiar to users
- Can be reused across applications
concepts/
authentication/ # Identity and access concepts
content/ # Content creation and management
organization/ # Organizational structures
collaboration/ # Sharing and cooperation
file-management/ # File operations
media/ # Media handling
communication/ # Communication patterns
commerce/ # E-commerce concepts
time/ # Time-related concepts
data/ # Data operations
security/ # Security patterns
social/ # Social interactions
gaming/ # Gaming mechanics
analytics/ # Analysis and reporting
document/ # Document handling
workflow/ # Process management
primitives/ # Primitive base concepts
Each concept is defined in an XML file with the following structure:
<concept iteration="XX">
<name>ConceptName</name>
<purpose>Clear statement of the concept's purpose</purpose>
<state>
<component code_name="stateName" code_datatype="type">description</component>
</state>
<actions>
<action>
<name>ActionName</name>
<precondition>required conditions</precondition>
<effect>state changes</effect>
</action>
</actions>
<operationalPrinciple>
Description of how the concept works in practice
</operationalPrinciple>
</concept>
106 CONCEPTS SO FAR!
- Check if the concept already exists
- Use the template from
templates/concept-template.xml
- Place the file in the appropriate category folder
- Ensure your concept meets all criteria
- Submit a pull request