https://github.com/qantrex/todo-ek
Ek fΓΌr SEW (ToDo App)
https://github.com/qantrex/todo-ek
Last synced: 2 months ago
JSON representation
Ek fΓΌr SEW (ToDo App)
- Host: GitHub
- URL: https://github.com/qantrex/todo-ek
- Owner: Qantrex
- Created: 2025-01-12T15:59:19.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-01-12T16:03:28.000Z (4 months ago)
- Last Synced: 2025-01-12T17:18:46.059Z (4 months ago)
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-dev.md
Awesome Lists containing this project
README
# Task Manager Application - Developer Guide
## π§ Overview
The **Task Manager Application** is a Java-based project that uses **Swing** for the GUI, implements file-based persistence with `.csv`, and provides task management features such as adding, editing, deleting, and categorizing tasks. It is designed for simplicity and efficiency.
---
## π Project Structure
The project is organized as follows:
```
src/
βββ Task.java // Represents a single task
βββ TaskCategory.java // Enum for task categories (WORK, PERSONAL, OTHER)
βββ TaskManager.java // Handles the task list and task operations
βββ FileManager.java // Manages saving/loading tasks to/from a CSV file
βββ TaskManagerUI.java // Swing-based GUI for the application
βββ TaskManagerApp.java// Main entry point of the application
```---
## β¨ Key Features
### 1. **Task Management**
- Each task is represented by the `Task` class with attributes:
- `String title`
- `boolean isComplete`
- `TaskCategory category`
- Task status toggling and edits update the in-memory task list and UI.### 2. **Persistence**
- Tasks are saved to and loaded from a `.csv` file (`tasks.csv`).
- Each line in the file represents a task with the format: `title,isComplete,category`.
- File operations are handled by the `FileManager` class using `BufferedReader` and `BufferedWriter`.### 3. **GUI**
- Built using Java Swing.
- Features include:
- `JList` for displaying tasks.
- Buttons for Add, Edit, Delete, and Toggle Complete.
- Keyboard support for navigation (`Arrow Keys`) and toggling task status (`Spacebar`).
- Styled using a Catppuccin-inspired theme with custom colors.---
## π§ How to Build and Run
### 1. **Prerequisites**
- Java Development Kit (JDK) version 8 or higher.
- A Java IDE (e.g., IntelliJ IDEA, Eclipse) or a terminal with `javac`.### 2. **Building the Project**
- Clone the repository:
```bash
git clone https://github.com/your-repo-link
cd task-manager
```
- Compile the source files:
```bash
javac src/*.java -d out
```
- Create an executable JAR:
```bash
jar cfe TaskManagerApp.jar TaskManagerApp -C out .
```### 3. **Running the Program**
- Run the program with:
```bash
java -jar TaskManagerApp.jar
```---
## π Testing
### 1. **Manual Testing**
- Verify basic operations:
- Add, edit, delete tasks.
- Toggle task status.
- Navigation with arrow keys and spacebar.
- Check `.csv` file contents after closing the application.### 2. **Unit Testing**
- Add JUnit tests for:
- Task creation and status toggling.
- File read/write operations in `FileManager`.
- TaskManager methods like `addTask` and `deleteTask`.---
## π¨ Catppuccin Theme Implementation
### Theme Colors:
- **Background**: `#1E272E`
- **Foreground**: `#DFE4EA`
- **Highlight**: `#FF9F43`
- **Button**: `#636E72`### Applying the Theme:
- Background and foreground colors are set for `JList`, buttons, and panels.
- Fonts are customized for a modern, aesthetic look.---
## π Contributions
Contributions are welcome! Follow these steps:
1. Fork the repository.
2. Create a feature branch:
```bash
git checkout -b feature-name
```
3. Commit your changes:
```bash
git commit -m "Add feature description"
```
4. Push the branch:
```bash
git push origin feature-name
```
5. Open a pull request.---
## π License
This project is licensed under the [MIT License](LICENSE).
For more details or issues, contact [[email protected]](mailto:[email protected]).