Skip to content

Code layout

Thomas edited this page Aug 20, 2021 · 1 revision

This article provides information about the source code and internal organization of TumblThree. It is recommended to start here if you want to contribute to the project.

High level overview

TumblThree is a Tumblr and Twitter blog backup application, which downloads photo, video, audio and text posts from a given tumblr/twitter blog. It is the code rewrite of TumblTwo, using the Win Application Framework (WAF) and C# with WPF and the MVVM pattern.

Projects and their role

Below is a short summary of the TumblThree.sln projects going from low to high level of the layered architecture.

  • RateLimiter: A C# port of Google's Guava RateLimiter.
  • WpfApplicationFramework: The Win Application Framework (WAF) is a lightweight Framework that helps you to create well-structured XAML Applications in WPF. It supports you in applying various architectural patterns:
  • TumblThree.Domain: The Domain Layer holding the data models and base classes.
  • TumblThree.Applications: The Application Layer containing the business logic of TumblThree.
  • TumblThree.Presentation: The Presentation Layer (GUI) part of TumblThree.

RateLimiter / WpfApplicationFramework

RateLimiter and WpfApplicationFramework are two libraries which are used by TumblThree. The former supports implementing a rate limiter that limits the amount of requests against the servers and its throughput and the other helps in creating a well-structured XAML Applications in WPF. We mainly use the architecture patterns and a few of its base classes.

TumblThree.Domain

This project contains the most basic data models and some common base classes used in the higher layers. It belongs to the domain layer.

TumblThree.Applications

The business logic (application layer) of TumblThree resides here. It holds the crawler, parser and downloader classes, higher-level data models, service classes and the GUI-related controllers, view models and view interfaces from the MVVM pattern. MVVM pattern [jbe2277]

TumblThree.Presentation

This project contains the GUI related things (presentation layer). It holds the views (MVVM pattern) as well as everything specifically platform related. Currently only Windows is supported. In theory, it should be possible to exchange this layer to make the application available on another operating system.

References