ChronosMap Spatio-Temporal Weaver
A digital-archive navigator that replays history across map and timeline
ChronosMap is a cross-platform desktop app built with .NET 10 and Avalonia that projects historical events and archival records onto three linked dimensions: a map, a timeline, and a knowledge-relation topology graph. Dragging the timeline filters events by era, selecting a map pin expands its semantic links to people, places and organizations, and the app supports full create/edit/search plus JSON import and export.
Verified Demo Recording 1
Copied by the portfolio quality pass from existing project demo media.
Media overview
Browse the project screenshots and recorded walkthroughs.
Project links and demo readiness
live
Live Demo
Open the verified live demo when available, or use the internal run guide for manual demo preparation.
github
GitHub
Open the public repository when available, or review the source-access status captured by this case study.
video
Demo Recording
Open the demo recording when available, or use this section as the recording checklist for the project.
documentation
Project Docs
Open the project README when available, or use this case study as the documentation baseline.
Project overview
## Overview ChronosMap (the Spatio-Temporal Weaver) is a digital-archive navigator that presents historical events and records across three dimensions at once: a **map**, a **timeline**, and a **knowledge-relation topology graph**. Dragging the timeline surfaces era-matching events on the map, and selecting a node expands that event's semantic ties to people, places and organizations in the topology view. ## Architecture The app uses **.NET 10 + Avalonia UI 12** for a cross-platform desktop front end, following the MVVM pattern via **ReactiveUI / CommunityToolkit.Mvvm**. Back-end logic adheres to **Clean Architecture**, split into `Domain` (KnowledgeEntity, HistoricalEvent, KnowledgeRelation, HistoricalTimeRange and related models), `Application` (use cases such as TemporalQueryService and ProjectDocumentService) and `Infrastructure` (LocalProjectFileStore, JSON serialization). The map layer uses **Mapsui** over OpenStreetMap tiles to render event pins. ## Key Features - Timeline slider with auto-play 'time cruise' that filters events by era in real time - Clickable map pins kept in two-way sync with the detail panel and list - A hand-built 2D force-directed topology graph that colors nodes by relation type - Full CRUD forms, keyword/tag search, and native JSON import/export ## Maturity The project is a **working, in-progress prototype**: the core interactions (map, timeline, topology graph, CRUD, persistence) are implemented with a staged development history and xUnit round-trip tests, while the README and parts of the legacy-model migration remain to be completed.
My role
Solo developer (architecture, domain modeling, UI and data layer — full stack)
Problem
Conventional digital archives present records as static lists, making it hard to grasp an artifact's time, space and relationships at once, and offering no interactive way to explore historical context.
Solution
A clean, layered architecture (Domain / Application / Infrastructure) is wired to an Avalonia UI through MVVM (ReactiveUI). Mapsui overlays OpenStreetMap tiles with event pins, a timeline slider drives a TemporalQueryService for era-based filtering, and a hand-built trigonometric force-directed canvas renders knowledge relations.
Current outcome
A working prototype: map pins, timeline cruise playback, the relation topology graph, CRUD forms and JSON persistence are all functional, backed by a domain model and xUnit round-trip tests.
Highlights
- Three synchronized dimensions: map, timeline and knowledge topology
- Mapsui + OpenStreetMap real-time geo pins with click selection
- Clean Architecture split across Domain, Application and Infrastructure projects
- TemporalQueryService filters events by time range and filter mode
- Custom trigonometric force-directed graph for person/place/organization links
- Native JSON import/export with smart migration of legacy saves on startup
Engineering challenges
- Integrating Mapsui into Avalonia 12 and fixing pin styling plus two-way click binding
- Refactoring duplicate domain-type compilation and partial-method signature conflicts
Target users
- Portfolio reviewers and interviewers
- Technical readers who need a quick view of purpose, stack, and maturity
Technical highlights
- Detected technical signals: C#, .NET 10, Avalonia UI 12, ReactiveUI, CommunityToolkit.Mvvm, Mapsui, OpenStreetMap, xUnit, JSON Serialization
- README evidence exists and can support a fuller reviewed case study
- A public GitHub repository is not verified yet; the portfolio marks it as pending
Architecture
This case study is generated from the portfolio catalog pipeline using README, Git metadata, package/build configuration, and media signals. The final architecture narrative still needs source-level review. Current detected technology signals include: C#, .NET 10, Avalonia UI 12, ReactiveUI, CommunityToolkit.Mvvm, Mapsui, OpenStreetMap, xUnit, JSON Serialization.
Data flow
A public data-flow narrative is not fully reviewed yet. If the project includes data processing, AI pipelines, or backend APIs, the next pass should document input, processing, storage, and UI/output flow end to end.
Project structure
ChronosMap/ README.md # project documentation, when available source files # implementation reviewed by local audit package/build config # detected capability signals
Setup / Run guide
This project does not expose a verified runnable web command yet. Review the README/source tree and add exact install, run, test, and build commands before interview use. Build support was detected from project configuration. Run the repo-specific build command before publishing new screenshots or demos.
Future improvements
- Complete the production-quality README, screenshots, and demo recording
- Add architecture diagrams, data-flow notes, and key technical decisions
- Verify build/test status and update the portfolio release report
Interview notes
- State the current maturity and demonstrable scope first
- Focus on verified stack, source structure, and completed behavior
- Do not claim unverified deployment, video, or test coverage as finished
Next steps
- Flesh out the README and user documentation
- Fully migrate the legacy ArchiveEvent to the new domain model and expand test coverage