Skip to main content
2 of 2
edited tags
J_H
  • 42.3k
  • 3
  • 38
  • 157

Database schema for project management app

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?

Prahlad Yeri
  • 517
  • 1
  • 6
  • 14