TaSked is a web API and mobile application designed to streamline homework and assignment management for student groups. It serves as platform where students can manage their homework and track individually track progress.
TaSked is built entirely on the .NET stack
-
Task Management: Students within a group can add homework tasks. This ensures that all group members are aware of upcoming assigments.
-
Individual Progress Tracking: While tasks are shared within the group, each student can individually track their progress on these tasks.
-
Offline Capability: The app can function offline, syncing data when an internet connection is reestablished.
![](https://private-user-images.githubusercontent.com/76880171/344458908-0d661a5c-dace-4b92-b119-9cb45653db6f.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMDg3OTAsIm5iZiI6MTcyNDMwODQ5MCwicGF0aCI6Ii83Njg4MDE3MS8zNDQ0NTg5MDgtMGQ2NjFhNWMtZGFjZS00YjkyLWIxMTktOWNiNDU2NTNkYjZmLmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDA2MzQ1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2ZGQzNmZhNmE1NTVlNWI0N2IxNjFjNjNhOGIxYmEyNjIxZmU0Y2M5ZjdhY2I3YTgwY2I0NGQyN2YxOGU0OWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.5WlqeBavUoOJvjanJXyQ4PKoegTvZoSuY7lwPgXfaXo)
![](https://private-user-images.githubusercontent.com/76880171/344464426-a5d9d2b6-3e22-45c9-84f0-62fcb6a0ad67.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMDg3OTAsIm5iZiI6MTcyNDMwODQ5MCwicGF0aCI6Ii83Njg4MDE3MS8zNDQ0NjQ0MjYtYTVkOWQyYjYtM2UyMi00NWM5LTg0ZjAtNjJmY2I2YTBhZDY3LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDA2MzQ1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUyNDIyYzIxYjNmNjY2ZTA2MzdmNTA4MzJlZjIxYTMzNDIwOTBiMWFmMTIxOWZiYzA2ZjhiNzM1NGQzMWI1NTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.YEmOjCZ4vNbZ_8SpgVtLEBmyR1EKB60LPKY9m44rDL4)
![](https://private-user-images.githubusercontent.com/76880171/344464390-b4f6401d-0ab1-402f-8848-9aa79c154fc5.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzMDg3OTAsIm5iZiI6MTcyNDMwODQ5MCwicGF0aCI6Ii83Njg4MDE3MS8zNDQ0NjQzOTAtYjRmNjQwMWQtMGFiMS00MDJmLTg4NDgtOWFhNzljMTU0ZmM1LmpwZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIyVDA2MzQ1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVhZjE4NjQyM2NmYTM4MzdlNWUwNDYyOGY2NzM2ZDdiZThlMTgyMTE0NTRhMzE4YjZmZTRkMDFiYzNhNzQ1NWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.shRKmPAGJVgpbZ4wmxhs5hHFLQw3DnPPFwgd12k1Apo)
TaSked adopts a Domain-Driven Design (DDD) approach and utilizes shared domain models across both backend and frontend. This architecture ensures a consistent understanding of the problem domain throughout the entire application.
The TaSked API is the backend that powers the mobile application. It consist of the following layers:
- Houses the application services and use cases
- Contains Command and Query handlers (using MediatR)
- Defines DTOs (Data Transfer Objects)
- Specifies interfaces for infrastructure services
- Implements the infrastructure concerns
- Manages database context (Entity Framework Core)
- Handles external service integrations (like Firebase Cloud messaging)
- The ASP.NET Core Web API project
- Contains API controllers
- Manages service configurations
-
ASP.NET Core: The foundation of our API, providing a high-performance, cross-platform framework for building modern web applications.
-
Entity Framework Core: An object-database mapper for .NET, used for data access and management. It supports our Domain-Driven Design approach with features like rich mapping, change tracking, and migrations.
-
MediatR: Implements the mediator pattern, helping to reduce dependencies between objects and improving the separation of concerns in the application layer.
The mobile app depends on defined domain model and special TaSked api client library, defined in TaSked API project folder.
-
.NET MAUI (Multi-platform App UI): A cross-platform framework for creating native mobile and desktop apps with C# and XAML, allowing us to target Android, iOS, macOS, and Windows with a single codebase.
-
Reactive UI: A composable, cross-platform model-view-viewmodel framework, enhancing our ability to create reactive user interfaces.
-
Akavache: An asynchronous, persistent key-value store for .NET applications, used for local caching and offline capabilities.