Coder Social home page Coder Social logo

aawadall / pyprojman Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 1.0 143 KB

Command-line Based Project Management Application written in Python

Home Page: https://aawadall.github.io/PyProjMan/

License: MIT License

Python 100.00%
project-management python 100-days-of-code contributions-welcome beta-release travis-ci beta pull-requests learning-by-doing learn-to-code

pyprojman's Introduction

PRs Welcome First Timers

Join the chat at https://pyprojman.slack.com

PyProjMan

Commandline Based Project Management Application, written in Python. Codetree

PyProjMan is currently under redesign phase! This might push delivery date for Beta release.

Build Status

Note that some of those badges takes up to 6 hours to update

Metric Shields Notes
Better Code BCH compliance
Codacy Codacy Badge
Kiuwan Kiuwan Kiuwan
Code Beat codebeat badge
Travis CI Travis CI

It is partially started to practice coding in python, and partially to overcome some challenges I personally faced when using existing Project Management Tools. The main goal of this tool, is to allow users to script in project tasks, instead of manually writing things in a spreadsheet and eye-balling the resulting GANTT chart.

I wanted this project to collect data from users (after getting their consent), and teach a mathematical model patterns collected, such that a mature version of this application would figure out the context of a certain project, and then suggests tasks to be added to the project plan. In addition to providing a more realistic execution time frame. So, instead of requiring an experienced project manager, with experienced team to properly estimate when this project will be completed, the tool will use its collective wisdom, gathered from other projects (failed and successful) to propose change in numbers, in time frame and even cost.

In addition, exposure to large number of projects, would allow the tool to figure out project contexts, and propose tasks that were not considered as part of the original project plan.

Usage

To run PyProjMan

  1. download the project

git clone https://github.com/aawadall/PyProjMan.git

you can also download it as zip file

  1. run the following command

python py_proj_man.py

Contribution

This project is in deep need for contributors, in development, artwork, system design, testing, and documentation. If you are interested, please check out contribution guidelines

You can also have a look at the Wiki pages of this repo

pyprojman's People

Contributors

aawadall avatar burhania2 avatar codacy-badger avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

burhania2

pyprojman's Issues

Project Statistics

Create project statistics by traversing tasks and printing its details, while calculating running totals and averages

Identify Tasks

Keep track of common tasks, with common task context, with small standard deviation in execution time (both planned and actual duration)
and keep it in a central registry to train an expert system to suggest sub tasks based on the current task
If a similar context is found, and the appropriate switches were on, the task adviser would suggest some sub-tasks based on its experience, and if the user approves or declines such addition, the model is updated centrally with user decision to alter the model

Drag and Drop

If UI is enabled, allow drag and drop for organization

Design UI to Task connection

Define a proxy object to decouple tasks, time elements, etc. from the UI, such that a UI will only handle parsing commands and translating them into calls to this proxy object, that in turn will call those commands

User Friendly Task ID

Define user friendly Task IDs, such that users can identify tasks while manipulating them using the text UI

User Object

Define a user object, used for audit trail, credential validation, statistics, and access rights

ProjMan to handle Cyclic Relations

ProjMan should look for prerequisites in a task including itself, or prerequisites in task having current task as a prerequisite to itself.
same applies to dependants
This is part of housekeeping

Create UI Object

Create a User Interface Object, currently text based to do simple tasks:

  • Create Task
  • List Tasks
  • Assign values to attributes
  • Inquire on specific task attributes
  • Tasks summary

Define Time Statistics

In the Project Statistics object, define time statistics in terms of:

  • Planned
    • Average
    • Optional Worst Scenario
    • Optional Best Scenario
  • Actual

All should have

  • Start Time (As the minimum starting time of all tasks in range)
  • End Time (as the maximum ending time of all tasks in range)
  • Duration (as the difference between starting and end time defined above)

Create API Class

This class is to sit between core components and outside world, e.g. UI, external applications, web application, reporting service, etc.

ProjMan Adds Parents

ProjMan can add a parent (prerequisite) to a root, making it the root task instead

Calculate Dates/Duration from one another

Automatically calculate the third component from the known 2

  • Calculate End Date from Start Date + Calculation
  • Calculate Start Date from End Date - Duration
  • Calculate Duration from End Date - Start Date

ProjMan object (Hollow)

Create a Project Manager object, with a single root Task
Such object would do the following:

  • Have one root Task
  • Does house keeping tasks
  • Handles Time calculations
  • Handles cyclic relations
  • Handles reports

API Calls should call methods for this object

This task should be broken down into smaller ones

ProjMan list Tasks

ProjMan to return a list of all Tasks starting from Root down to last Task

Implement Uncle Bob's Estimation Technique

Instead of a single figure for the estimated duration of a task, collect:

  • Worst Scenario estimated time
  • Best Scenario estimated time
  • Average estimated time

to use the formula Uncle bob suggested,

Estimated Time = (Worst Scenario + Best Scenario + 4 * Average) / 6

Track difference between planned and actual duration

Collect data from users while planning and executing a project, so that we have average difference between planned and actual time allocated per task.

Try to keep this value for future advising users, by building a collective experience model

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.