Project Guidance
(See next Section for 
Business Requirements and 
Functional Spec)

We need a fixed quote for the system development described in the following section.
We prefer someone (refer to the initial CL ad) to provide very quick turnaround in PHP framework, ideally, CakePHP, on most of the functionality since most of it is basic CRUD with a few more involved screens, functions.
Though the requirements look quite detailed we really think the system is not very complex and we had someone develop the system in Access in 4 hours but we need someone to do in Web – we know it may be different.
To successfully apply for this project and to potentially win following ones you will need to:
-	specify a fixed quote for the specified functionality and allow for 20% requirements creep;
-	specify time span of the project;
-	specify the PHP framework; we prefer CakePHP; if else please explain your choice in great detail
-	specify Ajax / JavaScript framework (like jQuery) if you think one us going to be used and specify why;
-	write about your experience delivering well documented, easily maintainable systems that can grow with least pain.
  
Project Overview,
Business Requirements 
and 
Functional Design

Contractor Resource Planning

Status: WORK IN PROGRESS; NOT A FINAL VERSION


1.	Introduction
This is a very initial document describing the needs for a contractor resource planning / project management system, so any analysts and developers working on this need to further inquire on any incompleteness. Information on needs and requirements can be provided in timely fashion to optimize the efficiency of your effort.
2.	Intellectual Property Issues
All documents, correspondence, software and other carriers of Intellectual Property related to this project are private ownership of the client.
Full force of US and international law will be used to pursue offenders of the property rights.  
3.	Management Style
The development of this system is going to be managed in an Agile fashion. 
If the involved specialist are familiar with Agile this will be ideal. If not, at least a minimal review of the style may be needed. Short notes on this follow:
This system’s design and management to be done in Agile fashion means:
-	at first only very core, basic functionality will be specified and pushed for development;
-	further small but critical changes need to be worked on in an incremental and iterative fashion;
-	the main goal is small but complete pieces of functionality to be delivered to the customer, owner;
-	all final releases, versions of the software need to be complete and well documented so that additional resources will have access to knowledge on the system; the client will require that portability and readability of the code is present and standard frameworks and practices are used in development;
4.	System Business Environment Business Process Overview
4.1.1.	Purpose
Notice that this section only describes the business environment. Further sections will start introducing the actual system functionality requirements.
4.1.2.	Business Process
The Company implementing this solution schedules resources (persons) for projects with their clients.
They manage a large pool of construction specialists, further in this IT project referred to as Resources. 
The Resources in the business are recognized by their identity (info on their name etc is kept) and their skill level in particular skills. 
The Company industry positioning demands that the company offers to their customers Resources with specific skills and levels in these skills. So the company has a business component a list of skills.
The Company has Clients who own construction projects. The Company provides Resources for the Projects.
Projects are known by period – start date, end date, working hours, blank days and required skills.
The Resources in the business are managed by their Skills and their availability for Projects. Resources are considered available when they are registered with the Company and not scheduled for a Project already.
A manager at the company invites Resources for a project by identifying the dates and Skill requirements for a project and by looking at a list of Resources that are available for the project and are ranked by best satisfaction of the required skills.
The manager invites Resources (by phone, email).
Resources confirm their availability (by phone, email).
Regular reporting on status, availability, progression, estimated timesheets is being done.
4.1.3.	Business Components
The business components needed to be identified in this project are:
•	Provider Company 
•	Clients
•	Projects
•	Resources
•	Skills
4.1.4.	Business Component Relations
The following are relations between business components:
•	Resource has Skills
•	Resource is committed to a Project
•	Clients has Projects
4.1.5.	Business Transactions
The following business transactions are in the context of this project:
•	Manager invites a resource for a project
•	Resource confirms availability

5.	Business Requirements
5.1.	Functional Requirements
More or less this application implements a small subset of the functionality of a project management tool.
The system accessible only by registered users with user ID and password. User access permissions are managed by function – ACL security is implemented.
Resources represent persons with names, address, phones, emails, etc.
Resources have skills. A skill list is maintained independently and resources can be assigned different level of each skill.
Projects have a start day, business hours, and blank days (as days in the week or specific calendar days).
Projects belong to clients. Clients are companies.
Resources, skills, projects, clients need to be maintained by simple CRUD.
In addition to CRUD of the master data the following less trivial functionality is needed.
Skills of resources are maintained on the Resources’ profile edit screen. For every resource a table of all skills are displayed and a user can select a level of 0 – 10 on every skill.
Assigning persons to project by offering a list of resources by interactive selection of skill set and by availability (not booked for other projects).
Setting business hours and blank days for project.
Communicating (by email) to resources they have been invited to projects.
Receiving communication from resources by email confirming they accept an invite to a project.
Receiving communication from resources by phone, manually, confirming they accept an invite to a project.
5.2.	Non Functional Requirements
•	PHP framework; ideally CakePHP
•	Ajax framework if needed;
•	Easy to back up code settings and database
•	Easy to restore in a brand new environment
•	Good code documentation / commenting
•	Good out of the code documentation. A brand new company needs to be able to pick up documentation, install the system (PHP code and SQL load) and be able to use it and maintain it off the manual. You can specify separate price for this if you think this is a substantial part of your quote.
6.	Functional Overview
The Contractor Resource Planning system will manage information about: 
•	Provider company – name, address, notes
•	Resources – first name, last name, phone1, phone2, phone3, email1, email2, email3, photo, comments, attachments, active/inactive.
•	Skills – name, level (1 – 10), active/inactive
•	clients – name, description, notes, contact person, contact person number, contact person email, pm, pm phone, pm email, executive1, executive1 phone, executive1 email, so on for executive2, executive3, active/inactive
•	projects – name, address, notes, client, start date, business hours (may be tricky; can be 8am – 12pm, 1pm – 6pm, may be by day), blank days (as day of the week or specific dates) – the tricky hours and blank days may be quoted separately
•	assignment of resources to projects
•	notification of resources about project invitations
•	schedules 
•	etc.
6.1.	Main Functions
•	User Authentication
•	ACL security
•	User Activity Tracking and Audit
•	Maintain all Main Business Components
•	For a Project, list available Resources, sort by the Project’s skill requirements, at the bottom also list and sort non-available resources (manager may decide to invite them too)
Notice that a Project ha working hours and blank days. For a Resource to be available it is enough that they are available those hours/days. They may work on another project in parallel.
•	Select candidate Resources – these Resources will stay as candidate Resources for this Project.
•	Invite Candidate Resources
Send email or SMS to some of the candidate resources that the manger decides; option to say “send invitation to all”.
•	Get confirmation manually. Manager receives a call from candidate Resource and books him for the Project.
•	Get confirmation electronically. Invited candidate resource sends back email. System automatically books him/her.
•	Produce screen inquiries and reports on schedules by:
Project
Calendar item – day, week, month, year
Timeline utilization
Resource
7.	General Design Guidance
7.1.	Basic Software Development Directions
The application need to implement the base functionality in very simple web, screen style with no excessive requirements for styling for now. But development should be done in most modern style of UI where full use of CSS is done, as much as possible style based and tables design (to rational extent), so that styling can be applied later through style sheets.
7.2.	Platform
PHP, MySQL, Web
7.3.	Frameworks
Proper study and recommendation should be made for the PHP and JavaScript frameworks to be used.
Adherence to commonly recognized frameworks is strictly required.
Currently preferred frameworks are CakePHP for PHP and jQuery for JavaScript.
7.4.	Initial Development
Initial development should deliver the above mentioned basic functionality while keeping things simple and efficient. 
Constant observation needs to be made for allowance for future development of the product. Specific attention to be paid to multiple provider companies.
Successful delivery of specified requirements will lead to follow up projects to expand the system.
