Unofficial hobby project

.NET MAUI | C# | designed in XAML | Clean Architecture, Domain Driven Design (DDD) | Agentic Development

Global Penfriends,
imagined as an app.

A proof-of-concept for how a mobile application of the original Global Penfriends website could be realized.

16
chapters in the video tour
8
minutes of demo
4
platforms from one codebase

01Why

Why this app?

I enjoy using the platform. Three things bothered me – the app solves each of them.

No app

Website todayAccording to the FAQ there is no mobile app, only the website.

In the appA native app for Android and iOS from one C# codebase.

Notifications by email

Website todayNew messages arrive as an email – without sender or content.

In the appA push notification with the sender; one tap opens the chat.

Inbox without live updates

Website todayNew messages often appear only after a reload.

In the appInbox and badges update instantly.

02Tour

The video tour

Play the video or pick a chapter – the explanation and the original website for comparison appear with it.

01 / 16

Login Page

We can see the layout for a log-in page following the Email and Password authentication from Global Penfriends. For anyone interested in testing, a download button for the .apk is available at the bottom. To access the next pages, you can either go through the registration process or just use the hardcoded / pre-existing credentials: admin@globalpenfriends.com / Password123!

Original website for comparison

03Screens

Screens from the app

Stills from the demo video – the real app on an Android device, with test data.

04Tech

Under the hood

Built like a production app: clear layers, testable, with a swappable data source.

  1. PresentationMAUI views in XAML
  2. ViewModelsMVVM with CommunityToolkit.Mvvm
  3. ApplicationInterfaces and DTOs
  4. InfrastructureServices, secure storage, notifications
  5. DomainEntities and business rules

Projects

  • GlobalPenFriendsthe app (UI, view models)
  • GlobalPenFriends.Corebusiness logic, domain
  • GlobalPenFriends.UnitTestsxUnit, Moq, FluentAssertions
  • GlobalPenFriends.Testsintegration tests

Status

Proof of concept with mock data services. Phase 2 on the roadmap: a real API. Passwords hashed with BCrypt, tokens in Keychain/Keystore.

.NET 9.NET MAUIC#XAMLCommunityToolkit.MvvmDependency InjectionxUnitMoqFluentAssertionsBCryptKeychain / Keystore
Source on GitHub

05Download

Try it yourself

The app runs entirely locally with test data – no real accounts or messages are involved.

  1. Download the APK on your Android device and open it.
  2. Allow installs from this source once.
  3. Register a new profile or sign in with the demo credentials.
Download APKAndroid · 42 MB

iOS: the app is cross-platform, but there is no public iOS build.