bczsalba / uni-project-manager-cw

re-upload of my university coursework project manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Coursework 2 - a project manager tool

Compiling

  • Optimised production build
make build
  • Development build (non-stripped and includes address sanitizer)
make dev

Both commands compile to a single executable called pm in the bin/ directory.

Usage

  • Create a new project
pm create_project <project_name>
  • Add a new feature to the project
pm add_feature <feature_name>
  • Rename a feature
pm rename_feature <old_name> <new_name>
  • Create a tag
pm add_tag <tag_name>
  • Find a tag
pm find_tag <tag_name>
  • Run web server
pm serve <port: int>

NOTE: I recommend doing this in an empty directory to avoid clutter.

Once the server is running you can navigate to localhost:<port: int> in your browser to get an interactive web-page that can interface with projects on your local directory.

NOTE2: The web-server was tested on firefox and chromium, it might not work on other browsers, especially not ones based on the webkit engine as they handle sockets a bit differently.

Documentation

Run make docs to get automatically generated documentation. Then go to doc/html/ and run firefox index.html.

NOTE: you can replace firefox with your preferred browser

Implemented features

Must (up to 10% for each top level feature)

  • Be able to create basic file structure for project
  • Abort if requested project/feature name already exists under 'root' folder. Here 'root' does not mean the / root of the file system, but the folder from which the program is run.
    1. Requires checking existing file system for matching name
    2. Requires using branching (if) to exit program if necessary
  • Initialise git repository
    1. Should set up CSGitLab project etc.
  • Feature management
    1. Must implement a method of having a shorthand code for feature e.g. F1, F2.1..., stored in a file.
    2. Must implement lookup to facilitate getting path from shorthand code
    3. Should include setting up git branch as appropriate

Should (up to 10% for each top level feature)

  • Include mechanism for renaming features (subtrees)
  • Include mechanism for moving feature to new location in tree (folder hierarchy)
  • Output tree diagram - PBS or WBS (svg, using plantuml)
    1. Requires tree walk (iterative or recursive)
    2. Must exclude folders that start with a '.'
    3. Should use the plantuml tool
    4. Could implement from scratch (much harder, more marks)
  • Time/workload estimate information stored in files in subfolders
    1. Should have mechanisms for adding these from the program not just editing the files
    2. Should include subtrees costs in parent tree total
  • Time/workload added to output diagram
    1. Could also produce Gantt chart (using plantuml)

Could (up to 10% for each top level feature)

  • Output diagram includes links (when used in browser, for example)
    1. Should use plantuml to do this
  • Dependencies information across tree branches
    1. Must identify relevant other paths in tree to do this

Elite challenges ("Won't do" in MoSCoW terms) (up to 20% for each top level feature)

  • Guided work breakdown wizard (Slightly advanced, would require interactive questions/answer handling)
    1. Needs a number of sub-features, such as minimum time allocation threshold, user input parsing
  • Multi-user (Advanced, would require some form of permissions model)
    1. may be best done using a traditional SQL database, but can use flat files. Complex task.
  • Available as web application (Advanced, probably easiest creating a simple embedded server)
    1. sample code for simple communications between applications will be covered
  • GOAP recommendation of suitable pathway (Advanced, can use existing GOAP library, however)
    1. GOAP uses a 'heap' data structure

About

re-upload of my university coursework project manager


Languages

Language:C 66.7%Language:HTML 22.0%Language:Shell 8.3%Language:Makefile 3.0%