Skip to content

EduGese/Task-Manager

Repository files navigation

Task Manager Icon

Task Manager

Version Angular Ionic Capacitor Platform MIT License Demo

Effectively manage your tasks, stay organized, and achieve your goals with Task Manager, a powerful and user-friendly Android application.

Features ✨

  • Effortless Task Management: Create, edit, or delete tasks with ease.
  • Detailed Task Organization: Assign names, descriptions, priorities (high, medium, low), tags (work, personal, study, etc.), and due dates (including time) to each task.
  • Reminders: Set reminders for upcoming tasks with options for 5 minutes, 1 hour, or 1 day before the due date. Local notifications will appear on your device to keep you informed.
  • Multiple Task Views: Manage your tasks efficiently with various views:
    • Pending Tasks: See upcoming tasks categorized as Past Due, Due Today, and No Due Date.
    • Completed Tasks: Review and track tasks you've marked as completed.
    • Calendar View: Visualize all tasks in a calendar format.
  • Mark as Complete: Accomplish tasks and mark them as completed (and viceversa) to remove them from your active task lists and disable reminders.
  • Theme Customization: Switch between dark and light themes to personalize your app experience (App takes device theme by default).
  • Offline Functionality: Work seamlessly even without an internet connection. The app stores your tasks locally using SQLite for reliable access.

Technologies & Libraries πŸ› οΈ

Core technologies

  • Angular ^18.0.0: Used for building the application logic
  • Ionic Framework ^8.0.0: Used for building the hybrid mobile app structure and UI components
  • Capacitor:
    • @capacitor/core: ^6.1.0 Provides core functionalities for native device access
    • @capacitor-community/sqlite plugin: ^6.0.0-alpha.1 (for SQLite database access)
    • @capacitor/android: ^6.1.0 (for Android platform functionalities)
  • java: for android build you need to install a recent version of Java JDK Development Kit

Development tools (Necessary)

Libraries

IDE's

  • VSCode (Recomended)
  • Android Studio (Required)

πŸŽ₯ Demo screen (Screen Recording)

Presentation

presentation.mp4

Task with notificartion

Task_with._notification.mp4

Screen shots

Icon app

Icon app

Empty Pending Tasks List

Dark Icon app Light Icon app

Empty Completed Tasks List

Dark Icon app Light Icon app

Pending Tasks List

Dark Icon app Icon app Light Icon app Icon app

Completed Tasks List

Dark Icon app Light Icon app

Sliding options

Mark task Icon app Delete task Icon app Delete modal confirmation Icon app

Task details

Dark Icon app Light Icon app

New task form

Dark Icon app Icon app Light Icon app Icon app

Calendar view

Dark Icon app Icon app Icon app Light Icon app Icon app Icon app

Local notification

Icon app

πŸ“¦ Clone and installation

1/ Clone repository

git@github.com:EduGese/Task-Manager.git

2/ Install dependencies

npm install

3/ You need to have installed in your local machine:

  • Android Studio
  • java: for android build you need to install a recent version of Java JDK Development Kit

πŸš€ Development server

ionic serve

πŸ› οΈ Build app

npm run build:native

πŸ€– Build for android

npm run ionic:android


πŸ—οΈ Architecture Overview

This application follows a layered hybrid mobile architecture using Angular 18 standalone components, Ionic Framework, and Capacitor. It features clear separation of concerns (presentation, service, data, and native integration layers) for maintainability and scalability. State management relies on RxJS BehaviorSubject for reactive updates, and the Service Layer encapsulates all business logic and SQLite database operations.

πŸ“‚ Folder Structure

  • src/app/pages: Main route-level pages (Home, Calendar, Completed Tasks, Tabs)
  • src/app/components: Reusable UI components (Task List, Task Form, Task Details)
  • src/app/services: Business logic and data services (Storage, SQLite, Notifications)
  • src/app/models: TypeScript interfaces/data models
  • src/app/upgrades: Version-controlled database migrations

πŸ’» Core Logic Example

// Task creation in StorageService
async addTask(task: Task): Promise<void> {
  const sql = 'INSERT INTO tasks (name, description, priority, tag, creationdate, duedate, notificationdaterange, notificationdate) VALUES (?, ?, ?, ?, ?, ?, ?, ?)';
  const params = [task.name, task.description, task.priority, task.tag, task.creationdate, task.duedate, task.notificationdaterange, task.notificationdate];
  const createdTask = await this.db.run(sql, params);
  if (task.notificationdaterange && createdTask.changes?.lastId) {
    this.notificationsService.scheduleNotification(createdTask.changes?.lastId, task.notificationdate, task.name, task.description, task.notificationdaterange);
  }
  await this.getTasks(); // Refresh the task list for all subscribers
}
  • Tasks are stored using parameterized SQL queries.
  • After each change, the app calls getTasks() to update the reactive state (BehaviorSubject) and all subscribed components.
  • Notifications are scheduled immediately after creating a new task if required.

🌟 Best Practices & Extensibility

  • Angular 18 Standalone Components: All UI components are standalone, no NgModules.
  • Reactive State Management: Always interact with tasks through services and observables, not directly in components.
  • Database Migration System: Never edit existing migration scripts, always version your schema changes.
  • Initialization: Never bypass the initialization flow - always let APP_INITIALIZER prepare critical services and DB.
  • Cross-Platform Coding: Always test new features both on web and native (SQLite WASM vs. native SQLite).
  • Modals & Forms: Use Ionic's Modal Controller with reactive forms and validators.
  • DI Structure: Singleton services via providedIn: 'root', bootstrap-level providers via bootstrapApplication.
  • Theming: Use Ionic dark mode and CSS variables. Dynamic styling is handled by TaskStylesService.
  • Contributing: See DeepWiki for extension guidelines and advanced plugin/model integration patterns.

πŸ§ͺ Testing & Quality

  • Unit test stubs are in place (Jasmine, Karma). Note: Full test coverage for business logic and database operations is a planned improvement.
  • Linting (ESLint) is configured.
  • Before contributing, run:
    npm run lint
    npm run test
  • See DeepWiki for more on testing strategy and continuous integration suggestions.

🐞 Troubleshooting & Common Pitfalls

  • To avoid issues with database initialization, always let the app fully bootstrap before user interaction.
  • For Android builds, ensure all plugin permissions are granted and devices are properly set up.
  • Never modify the DB schema directly - only make structural changes through the migration system.
  • When adding features that use SQLite, test both web and Android (WASM vs. native engines).
  • For help on error messages, advanced debugging, and DevTips, see the DeepWiki.

πŸ“š Advanced Technical Documentation

For detailed architecture diagrams, migration conventions, developer onboarding, and technical deep dives, please visit the DeepWiki.


πŸ”“ License

This project is licensed under the MIT License.

About

This Ionic 6 Angular Android app empowers you to manage tasks offline. Create, edit, mark tasks complete, and delete them. View pending and completed tasks in separate lists, and track deadlines with a calendar view. Set reminders with local notifications directly on your device - no internet connection required!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors