You will be making a Perl or PHP application with mysql support for
managing projects. All forms and lists from this application have to use
ajax (we do not want to have full page reloads).You are free to design
the mysql database the way you think it's better for the project.
The application will work in the following way:
1) New projects have to be added to the system with the following fields:
Project name, Time Estimation, Function, Set of project steps, Assign Email, Project Leader,
Description
2) The Function,Set of project steps, Assign email and Project Leader are
pulldown menus witch means that we will need to have a simple web interface
to make basic create-delete-modify operations to each of them. For emails we
also need a way to add multiple emails in bulk. The Description will have to use
a html text editor like tinymce.
3) A special procedure we have for the "set of project steps", this is basically
a named list of steps that we have to take for a project like for example:
-------------------------------------
"General projects steps" is the name of the set and actual steps may be:
Owners order [add][delete][edit]
Project spec [add][delete][edit]
Review owner [add][delete][edit]
Prototype [add][delete][edit]
-------------------------------------
you notice the buttons we will need to add/delete/modify each step in that set
of steps.
4) Next you will have to implement a screen that is displaying an overview of all
projects and for each project we will display the following information:
Project leader, function set, email, Total steps, current step, time spend,
money spent, Action required by, Standstill, Waiting time int., Waiting time ext
and a link "go to project","move to archive". We need to be bale to sort the list
by any field ascending or descending.
Here you will get a few details about each field:
- Project leader: this is the person that is responsible for the project
- Function: this is the project function (it will be taken at project creation
from the pulldown menu)
- Set: this is the assign set for that project, this is to know
what steps we have to take for that project
- Email: this is a very important part of the application, each project
will receive its own emailadress like project1234 at somedomain.com. We will generate
500 emails in advance and when we add a new project the pulldown will display
the list with the 500 emails and we should be able to select an email from the list.
Reason for that: the emails for that project will appear automatically into the
application and we will have everything in one location, the parties involved in
that project will be able to use there own email client and not have to learn
to use any new application to collaborate with us. This means that all email
communication regarding this project will be sent to the project email address and
you need to implement a cronjob script that will pop that email account and download
all the emails into a mysql table. Take care about this part because it means that the
web interface must be able to open emails in different formats like text, HTML, with
attachments etc. (so you basically have to implement a full webmail client
application inside the project, but you will probably find some perl or PHP modules
that will help you in making this). Also a new email changes the status of the project
because the action from the other party is required, so the email is a trigger,
it is like in a chess game, where the clock runs for each party.
- Total steps: number for the steps for that set + the custom steps, it give and
overview of the total steps we take for that project
- Current step: it gives the name of the current step we are on right now
- Time spent: the time it takes since we created this project
- Money spent: the amount we spent until the "Curent step", this will be set manually
from project edit page
- Action required by: this show who has to take the next step, the project leader
or the party that will actually implement the project and it is controlled by the emails
that are send by both parties involved
- Standstill: it is when on a project for 48 hours none has done anything, means no
email activity for more then 48 hours. The standstill can be overwritten by ETA.
This is an alarm for the projectleader.
- Waiting time int./ext. => the total time it takes for a project leader (internal)
or for the party that will make the implementation (external)
- "go to project" link will open the projects details for that project, see bellow
- "move to archive" link will open a javascript link that will allow us to move a
project to the archive. The Archive will babisvaly look the same as the main list
except it will have a link "Reactivate" that will allow a project to be restoted from
archive and sent to main list.
5) Project details page will contain again the following fields:
Project leader, function set, email, Total steps, current step, time spend,
money spent, Action required by, Standstill, Waiting time int., Waiting time ext
- then under this we will have a list with all the Actions taken for that project
(This is actually the emails sent/received for that project, so this part is the email
client we talked at step 4)
- Under this we will have this project steps displayed in the following way:
steps that are already completed will appear in a green box, the current step in
Orange and the steps that are not started will have no box at all. Also from this
section we should be able to add a custom step for this project like for example:
"Review needed by tehnical consultant X".
- Next in the same page we will have the form for sending a new email for this
project, this will contain: a field "Email to" (and also the system should display a
pulldown with all the emails for that project and we should also have the option to
select an email from the list and not just type an email manulay), the Body for
the email, text only, and 2 buttons: "Send and stay in step" and "Send and next step".
From this we can actually set the next step for a project.
- Next part is a button: MAKE SUBPROJECT this will lead to the same new
project form as for a normal project except that this project will be marked as a
subproject for the main project.
- The last part is a section where we could upload files to this project, it will
dispay a form that will allow is to upload files and also a list with all uploaded
files with a delete link where we could delete the uploaded files.
So basically the application will contain the following sections:
1) Add/edit project
2) Projects overview list
3) Archive
4) Project details
5) Function,Set of project steps, Assign email and Project Leader editors
6) Email client (display emails and send emails)
7) Cronjob that will pop emails for each project and insert it to a mysql table
and save attachments on disk (the email attacments will not be inserted to mysql)
We will have no login screen, the users will login using normal apache autentification,
the application will be installed into an apache folder that is alredy
password protected. All tables that will display lists of data must allow us to
sort it by any of the fields and this should be made using ajax.
You will get more details regarding each screen of this application
once you begin the work.