Milestone Intro

If tasks are about what needs to be done, milestones are about when something needs to be done by, or a date/time for an event, such as a client meeting, project deadline or the start/end of a phase of the project. As milestones are mainly about getting something done by a given time/date, they can easily be linked to task lists among other resources.

With milestones you can:

  • Create, edit and delete milestones
  • Track what milestones are upcoming, what ones are overdue and what ones have recently been completed
  • Track dependencies between milestones
  • Shift blocks of milestones back and forwards
  • Set optional times on milestones should you require that level of detail
  • Categorise milestones, as well as searching through them
  • View milestones in both list and calendar format (grid)
  • Comment on milestones, either to further clarify it’s aim, or to state why it was delayed.

As with everything else, milestones can also be linked to most other resources within the system, as well as it being auto linked to dependant milestones.

Tasks Intro

Tasks are all about tracking what’s been done and what needs to be done.

Now that you know what the project is about, and you’re up to date with all the latest information, you need to know what to do. This is where tasks come in. Tasks are essentially TODO lists, where you can:

  • Create, edit, delete and complete tasks
  • Assign tasks to users and see tasks assigned to you
  • Create nested lists where each sub lists is a large task, which needs to be broken into sub pieces to be tackled efficiently.
  • Un-complete tasks in case they weren’t actually completed
  • View when a task and list was completed and by whom
  • Set priorities for tasks, so you can see at a glance what needs to be done as soon as possible
  • Categorise lists of tasks, such as the type of work involved, the stage of the project etc
  • Comment on tasks
  • Track time spent on a task
  • Search your tasks, completed and pending

You will also be able to link tasks to other resources, so if a task is created in response to a ticket, you can see the ticket alongside the task, or if the task involves working on a file, the file can be linked to the task, so you have all the required resources rto hand when you begin working on a task.

Posted in Tasks. Tags: , . 1 Comment »

Messages Intro

Communication is key to the success of any project, not only between the company and the client, but within the team. The messages section lets you do just this, it lets clients and companies to send messages between themselves, as well as messages internal to the company.

The messages section acts as a centralised repository for all the messages sent during the project. By no longer having them scattered through countless email accounts spread across different users email systems, we can ensure all users know what’s going on, as everyone has the same information available to them. It will also be possible to send messages within the company on a project (just like you could send an internal email to your company) but the default is to be as open as possible.

Standard options such as sorting messages into categories will be available, and you can reply to a message just like you would with an email. A basic WYSIWYG editor will also be available, but will be heavily stripped so as to not take away too much from the content.

Open Thread

This post is for you to get in touch with me about anything you want (all I ask is it’s in some way related to the Project management System). If you have something to say which isn’t in direct response to something I’ve written about, this is the place to say it, so get commenting ;-)

MVC Architecture

Image taken from Blufusion.net

As I’ve mentioned previously, I will be using the MVC design pattern as implemented by CodeIgniter. The key principle behind the Model – View – Controller design pattern is the separation of code from the presentation.

The diagram on the right shows the application flow, which starts with a user request, such as loading a page. This loads the controller, which builds the page on the fly with the help of models, libraries and helpers before sending it to the browser as rendered HTML. Lets take a look at each parts role:

Model

These are responsible for data manipulation, most commonly as a result of interacting with a database. They can also read/write data to/from files, feeds, other web services etc. My using a models, it keeps all data processing such as My SQL in one place, making it easier to maintain.

View

This is what the end user sees. It contains HTML, CSS and JavaScript. These are static files with dynamic data passed in. The only processing and logic you should find here is presentational, such as for loops, basic if/else conditions etc.

Controller

This is where each request starts. It gets any dynamic data it needs from models (and libraries and helpers) before passing it into the view files. Business logic, data validation etc can be found here.

Libraries and Helpers

These are classes and collections of functions which can be used throughout the application. They simplify repetitive tasks such as form validation, image manipulation, file handling etc. These are generally called from the controller, although you can have view helpers, such as CodeIgniters HTML helper.

Projects Intro

A project is a temporary endeavour, having a defined beginning and end (usually constrained by date, but can be by funding or deliverables), undertaken to meet particular goals and objectives, usually to bring about beneficial change or added value.

The above definition of a project is taken from Wikipedia, and does a good job of summarising what a project is. At its most basic level, this application will help to complete these projects in an efficient manor by bringing together all the people involved in the project into a centralised system, where they can easily collaborate, share resources, track deadlines etc. What functionality is included as part of a project will be described in the appropriate sections, but I will outline some of the project specific functionality.

Projects can be nested

This is something which seems to be lacking from a lot of web based project management systems, but is requested by a lot of users. A project can have any number of sub projects, but each project can only have 1 parent (a top level project has no parent project).

Only one company and client account per project

At first, this may seem like a limitation, but this “limitation” combined with nested projects makes sense. If you have a project with 2 or more companies working on it, one of those companies will be leading the project. In this case, the lead company controls the top level project, and the second company is a sub project which has the parent company as its client. This even works for very complex project structures, as you can have the hierarchy of any width and depth, but at each level, there is always a company in charge of its sub hierarchy.

Projects, do it your way

Everyone manages their projects differently, so the PMS will not force a given system onto you, but aims to be as open as possible, so you can do it your way. One example of this is with deadlines, as mentioned in the opening definition, most projects are completed to a deadline, but not all of them, so this won’t be a required piece of information, although giving it will provide added value.

As mentioned earlier, the main purpose of the project is to act like a container, so it can group relevant data together, which will be discussed in more detail later.