As a side project, I'm developing a desktop app for project management, especially for students, self-employed, freelancers, etc. as a general purpose productivity tool, not from any business or industrial perspective. The idea is to create projects/goals/missions and break them down into individual milestones and tasks, and then keep tracking them as they are getting done.
If it takes off, I have other features planned too like embedded notes, tree view for brainstorming items, MCQ puzzles, quote of the day, etc. But for the core project-milestone tracking, this is what I've come up with so far in sqlite:
drop table if exists projects;
drop table if exists milestones;
drop table if exists tasks;
drop table if exists timesheet;
-- drop table if exists notes;
-- drop table if exists mindmaps;
-- drop table if exists mcq;
create table projects (
id integer primary key,
status text, -- (Pending/WIP/Complete)
name text, -- Learn to use Vim Editor
category text, -- (Work/Study/Other)
tags text, -- (Tech/PHP/Python/Emacs/Vim)
start_date datetime,
end_date datetime,
notes text
);
create table milestones (
id integer primary key,
project_id int references projects(id),
name text, -- Vim first steps
status text,
tags text
);
create table tasks (
id integer primary key,
milestone_id int references milestones(id),
name text, -- hands on with vimtutor
status text,
tags text,
weekly_hrs int, -- no. of hours to be spend on this task each week.
notes text
);
create table timesheet (
id integer primary key,
task_id int references tasks(id),
fdate datetime,
tdate datetime, -- tracked 60 minutes
notes text
);
-- @todo mcq/mindmaps/notes
The tracking will be done by the frontend desktop app I will code separately in Python using tkinter library. Can you suggest me any improvements in this?