As a follow-up to my recent post called Aligning software architecture and code, this is the first in a series of short posts that will look at the code behind the techtribes.je website that I recently open sourced on GitHub. The posts will also show examples of some simple software architecture diagrams based upon the C4 approach (context, containers, components and classes) that is described in my Leanpub e-book called Software Architecture for Developers. There's also a short introduction on InfoQ called Agile Software Architecture Sketches and NoUML. As with anything, let's start at the start.
The techtribes.je website provides a way to find people, tribes (businesses, communities, interest groups, etc) and content related to the tech, IT and digital sector in Jersey and Guernsey. At the most basic level, it's a content aggregator for local tweets, news, blog posts, events, talks, jobs and more. Here's a context diagram that provides a visual summary of this.
The purpose of the website is to:
- Consolidate and share local content, helping to promote it inside and outside of the local community.
- Encourage an open, sharing and learning culture within the local community.
The techtribes.je website has three types of user:
- Anonymous: anybody with a web browser can view content on the site.
- Authenticated: people/tribes that have content aggregated into the website can sign-in to the website using their registered Twitter ID (if they have one) to modify some of their basic profile information.
- Admin: people with administrative (super-user) access to the website can manage the people, tribes and content that is aggregated into the website.
There are three types of systems that techtribes.je integrates with. These are represented by dashed grey boxes on the context diagram.
- Twitter: profile information and tweets from people/tribes are retrieved from Twitter for aggregation into the website. Twitter is also used to allow people/tribes to sign-in to techtribes.je with their Twitter ID.
- GitHub: summary information about code repositories is retrieved from GitHub if people/tribes have registered a GitHub ID.
- Blogs: content from blogs written by people/tribes is retrieved via RSS or Atom feeds for aggregation into the website.
The next blog entry will look at the high-level software architecture and the major technology choices.