Skip to content

Instantly share code, notes, and snippets.

@mikeminutillo
Last active August 29, 2015 14:04
Show Gist options
  • Save mikeminutillo/da49042968d6d9f94709 to your computer and use it in GitHub Desktop.
Save mikeminutillo/da49042968d6d9f94709 to your computer and use it in GitHub Desktop.
High level DSL for describing architectures according to the model outlined in http://www.codingthearchitecture.com/2014/06/24/software_architecture_as_code.html
internal system techtribes.je
desc techtribes.je is the only way to keep up to date with the IT, tech and digital sector in Jersey and Guernsey, Channel Islands
uses Twitter
Gets profile information and tweets from.
uses Github
Gets information about public code repositories from.
uses Blogs
Gets content using RSS and Atom feeds from.
container Web Application
desc Allows users to view people, tribes, content, events, jobs, etc from the local tech, digital and IT sector.
tech Apache Tomcat 7.x
uses Relational Database
Reads from and writes data to
uses NoSQL Data Store
Reads from
uses File System
Reads from
container Content Updater
desc Updates profiles, tweets, GitHub repos and content on a scheduled basis.
tech Standalone Java 7 application
uses Relational Database
Reads from and writes data to
uses NoSQL Data Store
Reads from and writes data to
uses File System
Writes to
uses Twitter
Gets profile information and tweets from.
uses Github
Gets information about public code repositories from.
uses Blogs
Gets content using RSS and Atom feeds from.
container Relational Database
desc Stores people, tribes, tribe membership, talks, events, jobs, badges, GitHub repos, etc.
tech MySQL 5.5.x
container NoSQL Data Store
desc Stores content from RSS/Atom feeds (blog posts) and tweets.
tech MongoDB 2.2.x
container File System
desc Stores search indexes.
external person Anonymous User
desc Anybody on the web
uses techtribes.je
View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.
uses Web Application
View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.
external person Aggregated User
desc A user or business with content that is aggregated into the website.
uses techtribes.je
Manage user profile and tribe membership.
uses Web Application
Manage user profile and tribe membership.
external person Administration User
desc A system administration user.
uses techtribes.je
Add people, add tribes and manage tribe membership.
uses Web Application
Add people, add tribes and manage tribe membership.
external system Twitter
desc twitter.com
external system Github
desc github.com
external system Blogs
desc RSS and Atom feeds
view context techtribes.je
view containers techtribes.je
{
"softwareSystems": [
{
"type": "SoftwareSystem",
"containers": [
{
"technology": "Apache Tomcat 7.x",
"type": "Container",
"components": [],
"id": 2,
"name": "Web Application",
"description": "Allows users to view people, tribes, content, events, jobs, etc from the local tech, digital and IT sector.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes data to",
"sourceId": 2,
"destinationId": 4
},
{
"description": "Reads from",
"sourceId": 2,
"destinationId": 5
},
{
"description": "Reads from",
"sourceId": 2,
"destinationId": 6
}
]
},
{
"technology": "Standalone Java 7 application",
"type": "Container",
"components": [],
"id": 3,
"name": "Content Updater",
"description": "Updates profiles, tweets, GitHub repos and content on a scheduled basis.",
"location": "Internal",
"relationships": [
{
"description": "Reads from and writes data to",
"sourceId": 3,
"destinationId": 4
},
{
"description": "Reads from and writes data to",
"sourceId": 3,
"destinationId": 5
},
{
"description": "Writes to",
"sourceId": 3,
"destinationId": 6
},
{
"description": "Gets profile information and tweets from.",
"sourceId": 3,
"destinationId": 10
},
{
"description": "Gets information about public code repositories from.",
"sourceId": 3,
"destinationId": 11
},
{
"description": "Gets content using RSS and Atom feeds from.",
"sourceId": 3,
"destinationId": 12
}
]
},
{
"technology": "MySQL 5.5.x",
"type": "Container",
"components": [],
"id": 4,
"name": "Relational Database",
"description": "Stores people, tribes, tribe membership, talks, events, jobs, badges, GitHub repos, etc.",
"location": "Internal",
"relationships": []
},
{
"technology": "MongoDB 2.2.x",
"type": "Container",
"components": [],
"id": 5,
"name": "NoSQL Data Store",
"description": "Stores content from RSS/Atom feeds (blog posts) and tweets.",
"location": "Internal",
"relationships": []
},
{
"technology": null,
"type": "Container",
"components": [],
"id": 6,
"name": "File System",
"description": "Stores search indexes.",
"location": "Internal",
"relationships": []
}
],
"id": 1,
"name": "techtribes.je",
"description": "techtribes.je is the only way to keep up to date with the IT, tech and digital sector in Jersey and Guernsey, Channel Islands",
"location": "Internal",
"relationships": [
{
"description": "Gets profile information and tweets from.",
"sourceId": 1,
"destinationId": 10
},
{
"description": "Gets information about public code repositories from.",
"sourceId": 1,
"destinationId": 11
},
{
"description": "Gets content using RSS and Atom feeds from.",
"sourceId": 1,
"destinationId": 12
}
]
},
{
"type": "SoftwareSystem",
"containers": [],
"id": 10,
"name": "Twitter",
"description": "twitter.com",
"location": "External",
"relationships": []
},
{
"type": "SoftwareSystem",
"containers": [],
"id": 11,
"name": "Github",
"description": "github.com",
"location": "External",
"relationships": []
},
{
"type": "SoftwareSystem",
"containers": [],
"id": 12,
"name": "Blogs",
"description": "RSS and Atom feeds",
"location": "External",
"relationships": []
}
],
"people": [
{
"type": "Person",
"id": 7,
"name": "Anonymous User",
"description": "Anybody on the web",
"location": "External",
"relationships": [
{
"description": "View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.",
"sourceId": 7,
"destinationId": 1
},
{
"description": "View people, tribes (businesses, communities and interest groups), content, events, jobs, etc from the local tech, digital and IT sector.",
"sourceId": 7,
"destinationId": 2
}
]
},
{
"type": "Person",
"id": 8,
"name": "Aggregated User",
"description": "A user or business with content that is aggregated into the website.",
"location": "External",
"relationships": [
{
"description": "Manage user profile and tribe membership.",
"sourceId": 8,
"destinationId": 1
},
{
"description": "Manage user profile and tribe membership.",
"sourceId": 8,
"destinationId": 2
}
]
},
{
"type": "Person",
"id": 9,
"name": "Administration User",
"description": "A system administration user.",
"location": "External",
"relationships": [
{
"description": "Add people, add tribes and manage tribe membership.",
"sourceId": 9,
"destinationId": 1
},
{
"description": "Add people, add tribes and manage tribe membership.",
"sourceId": 9,
"destinationId": 2
}
]
}
],
"systemContextViews": [
{
"softwareSystemId": 1,
"description": null,
"type": "SystemContext",
"elements": [
{
"id": 1
},
{
"id": 10
},
{
"id": 11
},
{
"id": 12
},
{
"id": 7
},
{
"id": 8
},
{
"id": 9
}
],
"relationships": [
{
"sourceId": 1,
"destinationId": 10
},
{
"sourceId": 1,
"destinationId": 11
},
{
"sourceId": 1,
"destinationId": 12
},
{
"sourceId": 7,
"destinationId": 1
},
{
"sourceId": 8,
"destinationId": 1
},
{
"sourceId": 9,
"destinationId": 1
}
]
}
],
"containerViews": [
{
"softwareSystemId": 1,
"name": "techtribes.je - Containers View",
"description": "",
"type": "Container",
"elements": [
{
"id": 10
},
{
"id": 11
},
{
"id": 12
},
{
"id": 7
},
{
"id": 8
},
{
"id": 9
},
{
"id": 2
},
{
"id": 3
},
{
"id": 4
},
{
"id": 5
},
{
"id": 6
}
],
"relationships": [
{
"sourceId": 7,
"destinationId": 2
},
{
"sourceId": 8,
"destinationId": 2
},
{
"sourceId": 9,
"destinationId": 2
},
{
"sourceId": 2,
"destinationId": 4
},
{
"sourceId": 2,
"destinationId": 5
},
{
"sourceId": 2,
"destinationId": 6
},
{
"sourceId": 3,
"destinationId": 4
},
{
"sourceId": 3,
"destinationId": 5
},
{
"sourceId": 3,
"destinationId": 6
},
{
"sourceId": 3,
"destinationId": 10
},
{
"sourceId": 3,
"destinationId": 11
},
{
"sourceId": 3,
"destinationId": 12
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment