Skip to content
/ Taskly Public

Taskly is a smart and intuitive app designed to help you manage tasks and events effortlessly. Whether you're planning daily to-dos, setting reminders for important deadlines, or organizing events, Taskly keeps you on top of everything.

License

Notifications You must be signed in to change notification settings

Bitxo92/Taskly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Taskly - Android Event Manager App

Android Java SQLite

Table of Contents

Features

Core Functionality

  • πŸ“ Task management (CRUD operations)
  • ⏰ Time-based reminders
  • πŸ”„ Data persistence
  • πŸ“± Responsive UI

Technical Highlights

  • Material Design components
  • RecyclerView with swipe gestures
  • SQLite database with helper class
  • AlarmManager for reminders
  • BroadcastReceivers for system events

Installation

Requirements

  • Android Studio Flamingo (2022.2.1) or later
  • Android SDK 33 (API Level 33)
  • Java 17

Setup Instructions

  1. Clone the repository:
    git clone https://github.com/Bitxo92/taskly.git
    cd taskly
  2. Import into Android Studio:
    • Select "Open an Existing Project"
    • Navigate to the cloned directory
    • Wait for Gradle sync to complete
  3. Build and Run:
    • Connect an Android device or start an emulator
    • Click "Run" (Shift+F10)
    • Select your target device

Project Structure

app/
β”œβ”€β”€ manifests/
β”‚   └── AndroidManifest.xml
β”œβ”€β”€ java/
β”‚   └── com.patino.todolistapp/
β”‚       β”œβ”€β”€ activities/
β”‚       β”‚   β”œβ”€β”€ AddTaskActivity.java
β”‚       β”‚   β”œβ”€β”€ EditTaskActivity.java
β”‚       β”‚   β”œβ”€β”€ MainActivity.java
β”‚       β”‚   └── SplashActivity.java
β”‚       β”œβ”€β”€ adapters/
β”‚       β”‚   └── TaskAdapter.java
β”‚       β”œβ”€β”€ database/
β”‚       β”‚   └── DatabaseHelper.java
β”‚       β”œβ”€β”€ models/
β”‚       β”‚   └── Task.java
β”‚       └── receivers/
β”‚           β”œβ”€β”€ BootReceiver.java
β”‚           └── TaskReminderReceiver.java
└── res/
    β”œβ”€β”€ layout/
    β”‚   β”œβ”€β”€ activity_add_task.xml
    β”‚   β”œβ”€β”€ activity_main.xml
    β”‚   └── activity_splash.xml
    └── values/
        β”œβ”€β”€ colors.xml
        β”œβ”€β”€ strings.xml
        └── styles.xml

Core Components

1. Database Helper

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "tasks.db";
    private static final int DATABASE_VERSION = 1;
    
    // Table creation SQL
    private static final String CREATE_TABLE = 
        "CREATE TABLE " + TABLE_TASKS + "(" +
        COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        COLUMN_TITLE + " TEXT, " +
        COLUMN_DESCRIPTION + " TEXT, " +
        COLUMN_TIMESTAMP + " INTEGER)";
}

2. Task Model

public class Task {
    private int id;
    private String title;
    private String description;
    private long timestamp;
    
    // Constructor and getters
}

3. Alarm Scheduling

public static void scheduleTaskReminder(Context context, long taskTime, String taskTitle) {
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    long reminderTime = taskTime - (10 * 60 * 1000); // 10 minutes before
    
    Intent intent = new Intent(context, TaskReminderReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
        context, 
        (int) taskTime, 
        intent, 
        PendingIntent.FLAG_IMMUTABLE
    );
    
    alarmManager.setExactAndAllowWhileIdle(
        AlarmManager.RTC_WAKEUP, 
        reminderTime, 
        pendingIntent
    );
}

Database Schema

Column Type Description
id INTEGER Primary key (auto-increment)
title TEXT Task title (required)
description TEXT Task details
timestamp INTEGER Unix timestamp (milliseconds)

API Reference

MainActivity Methods

Method Description
loadTasks() Loads tasks from database
enableSwipeToDelete() Configures swipe gestures
rescheduleAlarmsForAllTasks() Restores alarms on app start

DatabaseHelper Methods

Method Description
addTask() Inserts new task
getAllTasks() Retrieves all tasks
updateTask() Modifies existing task
deleteTask() Removes task

Usage Guide

Adding a Task

  1. Tap the floating action button (+)
  2. Enter task details:
    • Title (required)
    • Description (optional)
    • Due date/time
  3. Tap "Save"

Managing Tasks

Action Gesture
Edit Long-press
Delete Swipe left
View Normal tap

Notification Behavior

  • Triggers 10 minutes before due time
  • Includes vibration
  • Survives device reboots

Permissions

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>

Testing

./gradlew test
./gradlew connectedAndroidTest

Troubleshooting

Issue Solution
Alarms not firing Verify exact alarm permission
Database not updating Check for unclosed database connections
UI not refreshing Ensure notifyDataSetChanged() is called

Contributing

  1. Fork the repository
  2. Create your feature branch:
    git checkout -b feature/new-feature
  3. Commit your changes:
    git commit -m 'Add some feature'
  4. Push to the branch:
    git push origin feature/new-feature
  5. Open a pull request

Screenshots

image image image

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).

GPLv3 License

Key Permissions:

  • βœ… Commercial use
  • βœ… Modification
  • βœ… Distribution
  • βœ… Patent use
  • βœ… Private use

Main Requirements:

  • ❗ License and copyright notice must be included
  • ❗ Same license must be used for derivative works
  • ❗ State changes made to original code
  • ❗ Disclose source code

Limitations:

  • ⚠️ No liability
  • ⚠️ No warranty

For full license terms, see LICENSE file or read the GNU GPL v3.0 official documentation.

About

Taskly is a smart and intuitive app designed to help you manage tasks and events effortlessly. Whether you're planning daily to-dos, setting reminders for important deadlines, or organizing events, Taskly keeps you on top of everything.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages