MiniGUI Project Challenge

120 views
Skip to first unread message

Grigory Filatov

unread,
Jun 7, 2025, 11:01:03 AM6/7/25
to Harbour Minigui
Hi Friends,

I've received the following task from ChatGPT.

Project Challenge: Task Tracker Pro

This challenge encourages you to apply advanced Harbour skills such as:

* Multi-level data structures (categories and tasks)
* Enhanced GUI components (tabs, filters, calendars)
* Persistence using DBF or optional JSON/INI
* Encapsulation with object-oriented design
* Optional: integrate notifications or export formats

---

🔧 Project Overview

Name: Task Tracker Pro
Goal: Create a personal task manager that lets users organize, view, and manage tasks under customizable categories.

---

✅ Requirements

Core Features

* Add, edit, delete tasks
* Assign tasks to a category
* Mark tasks as done/incomplete
* Set due dates with a calendar control
* Store data in tasks.dbf and categories.dbf

GUI Requirements (Using HMG or HBQt)

* Tabs or dropdown for selecting category
* Grid to display tasks for selected category
* Buttons for Add Task, Edit Task, Mark Complete, Delete
* Optional: checkbox for “Show Completed”

Data Fields

Categories (categories.dbf):

| Field | Type | Description   |
| ----- | ---- | ------------- |
| ID    | N    | Category ID   |
| Name  | C    | Category name |


Tasks (tasks.dbf):

| Field   | Type | Description               |
| ------- | ---- | ------------------------- |
| ID      | N    | Task ID                   |
| Title   | C    | Task title                |
| DueDate | D    | Due date                  |
| Done    | L    | .T. if completed          |
| CatID   | N    | Foreign key to categories |


---

🧠 Implementation Hints

* Use OOP to model Task and Category objects.
* Encapsulate data access in a TaskManager class.
* Use calendar/date picker control in GUI.
* Use color or icons in the task grid to indicate completed tasks.
* Use LOCATE, FILTER, or DBSEEK for filtering and sorting.

---

🔄 Optional Enhancements

* Export task list to CSV or JSON
* Add recurring task support
* Desktop notification on overdue tasks
* Drag-and-drop task sorting (advanced, for HBQt)
* Dark mode toggle via GUI theme

---

📁 Suggested Folder Structure


TaskTrackerPro/
├── src/
│   ├── main.prg
│   ├── task.prg
│   ├── category.prg
│   └── taskmanager.prg
├── data/
│   ├── tasks.dbf
│   └── categories.dbf
├── docs/
│   └── README.md
├── build.bat
├── TaskTrackerPro.hbp


---

📦 Deployment Goals

* Create an installer or portable zip
* Support first-time launch: create DBFs and default categories
* Handle missing data files gracefully with prompts
* Maintain platform portability (build for Windows and optionally Linux/macOS)

---

🏁 Project Challenge Summary

| Focus Area      | Technique to Apply                |
| --------------- | --------------------------------- |
| Data modeling   | Object-Oriented Programming       |
| UI Design       | HMG/HBQt controls and layout      |
| Storage         | DBF files with indexing/filtering |
| User Experience | Interactive controls, validation  |
| Packaging       | Deployment-ready application      |


---

🏆 Challenge Objective

> Deliver a fully working “Task Tracker Pro” desktop application using Harbour with a clean, tabbed or categorized interface, persistent data, and all major CRUD operations. Make it something you or a client could actually use.

---

📚 Suggested Skills Review Before Starting

* Arrays and DBFs
* OOP and methods (CLASS, DATA, METHOD)
* GUI controls: GRID, BUTTON, TEXTBOX, DATEPICKER
* Error handling (BEGIN SEQUENCE, __BreakBlock)
* File checking: IF !File("...")

---

You can see the appearance of my application in the images below:
light.png

dark.png

My question:
Will this app be interesting for beginners?

Your feedback is welcome.

Regards,
Grigory
main.prg

Marcos Jarrin

unread,
Jun 7, 2025, 12:43:45 PM6/7/25
to Harbour Minigui
Hello

The project looks interesting not only for beginners but for everyone, especially if you're going to use OOP.

Regards
Marcos

Ross McKenzie

unread,
Jun 8, 2025, 12:35:42 AM6/8/25
to Marcos Jarrin, Harbour Minigui

Hi Grigory. While I am still recuperating I thought that I would add some comments. This effort could form the basis of a Project Management tool if you added the dependencies of tasks upon each other and the resources required. For example, task 3 cannot start until task 5 is completed or person 6 is available. You could also have recurring tasks with their schedules for example vehicle servicing. Sorry if I have derailed your idea
Cheers Ross


--
Visit our website on https://www.hmgextended.com/ or https://www.hmgextended.org/
---
You received this message because you are subscribed to the Google Groups "Harbour Minigui" group.
To unsubscribe from this group and stop receiving emails from it, send an email to minigui-foru...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/minigui-forum/bb73dc53-591c-45a9-84cf-e3ee06f84a45n%40googlegroups.com.

Grigory Filatov

unread,
Jun 8, 2025, 5:38:18 AM6/8/25
to Harbour Minigui
Hi Ross.

> While I am still recuperating
I'm glad to hear about your recovering.

Thanks a lot for your feedback.

This is a class project and your ideas are more advanced.
Maybe someone will want to implement this.
My goal was to show only the basic features in this challenge.

Best regards,
Grigory

воскресенье, 8 июня 2025 г. в 06:35:42 UTC+2, ross...@gmail.com:
Reply all
Reply to author
Forward
0 new messages