How clswhre/mango works
Mango is a WPF place-management desktop app. The user works through the main window’s tabs: they add categorized places, browse visited and planned places, select a place to view or edit details, and inspect statistics or weather. PlaceStore is the shared state boundary; SQLite provides persistence, while the weather service supplies external conditions and forecasts. The graph includes documented statistics and tab capabilities, but their implementation and some view-model wiring were not sampled, so those links are limited to documented responsibilities.
Main entry points: PlaceStore.cs Place store · MainWindow.xaml Main window · MainViewModel.cs Main coordinator · LeftPanelViewModel.cs Place entry logic
Components 21
WPF interface
- Application startup
OOPWPFProject/App.xaml.cs - Main window
OOPWPFProject/Views/MainWindow.xaml - Place entry panel
OOPWPFProject/Views/LeftPanel.xaml - Place content tabs
OOPWPFProject/Views/MainContent.xaml - Place details control
OOPWPFProject/Views/PlaceDetailsControl.xaml
Presentation logic
- Main coordinator
OOPWPFProject/ViewModels/MainViewModel.cs - Place entry logic
OOPWPFProject/ViewModels/LeftPanelViewModel.cs - Place list logic
OOPWPFProject/ViewModels/MainContentViewModel.cs - Details and editing
OOPWPFProject/ViewModels/Tabs/DetailsTabViewModel.cs - Statistics tab
OOPWPFProject/ViewModels/Tabs/StatisticTabViewModel.cs - Weather tab
OOPWPFProject/ViewModels/Tabs/WeatherTabViewModel.cs
Place domain
- Place model
OOPWPFProject/Models/Places/Place.cs - Place categories
OOPWPFProject/Models/Places
Place state and storage
- Place store
OOPWPFProject/Store/PlaceStore.cs - In-memory manager
OOPWPFProject/Store/EntityManager.cs - SQLite storage
OOPWPFProject/Services/DB/SQLiteStorage.cs - Local places database
OOPWPFProject/Services/DB/SQLiteStorage.cs
External services
- Weather service
OOPWPFProject/Services/Weather/IWeatherService.cs - Weather API client
OOPWPFProject/Services/Weather/WeatherApi.cs
Other components
- User
- OpenWeather
Connections 28
- User → Main window: uses
- Application startup → Main coordinator: creates
- Application startup → Weather API client: creates
- Application startup → Main window: shows
- Main window → Main coordinator: binds
- Main window → Place entry panel: hosts
- Main window → Place content tabs: hosts
- Place content tabs → Place details control: shows
- Main coordinator → Place entry logic: coordinates
- Main coordinator → Place list logic: coordinates
- Place entry panel → Place entry logic: binds
- Place content tabs → Place list logic: binds
- Place details control → Details and editing: binds
- Place entry logic → Place store: adds places
- Place entry logic → Place categories: creates category
- Place list logic → Place store: reads selection
- Place list logic → Place model: tracks visit state
- Details and editing → Place store: edits or deletes
- Details and editing → Place model: updates fields
- Statistics tab → Place store: summarizes places
- Weather tab → Place store: reads selection
- Weather tab → Weather service: requests weather
- Place store → In-memory manager: manages places
- Place store → SQLite storage: persists places
- SQLite storage → Local places database: reads and writes
- Weather API client → OpenWeather: requests conditions
- Weather API client → OpenWeather: downloads icons
- Weather service → Weather API client: implemented by