Looking for someone to develop a light-weight, single-user, GUI (Windows) based application for making estimates for contracted work (in the siding industry). Some of the bigger features are: inventory grid, client database, outlook-style project scheduling, skins (ie "office" and "on the field with bigger buttons for touch screen") and an auto-updater.
Language isn't really important, but I'm expecting C# or C++, though others will be considered - it is important that the program is lightweight and fast. No preference for the back-end and I might consider paying for proprietary databases if it's worth it.
The following are "older" specifications for this project. I would like to discuss the features, layouts, and ideas with a coder before finalizing these.
Siding Master is a stand-alone Graphical User Interface (GUI) application that will have low system requirements and small size. It is intended to “computerize?? and automate the many tasks that siding contractors go through on a daily basis. The following features are currently anticipated:
· Supplies and materials tracking (pricing ??" material and labor, sizes, sale units, etc.).
· Estimate preparation sheet (replacing the traditional paper spreadsheet “how much of what??) with printable estimates and warehouse orders.
· Clients and contacts database.
· Crews & Outlook-style job scheduling.
The most detail-intensive section is the supplies and materials tracking and how it is used in the estimate preparation, because it requires multiple item types, such as nails, sidings, or trim, or just individual items, which are measured and sold differently. The main point of the program is to be very user-friendly, straightforward, and intuitive.
# High-Level Overview
## General Layout
The application will have an Outlook-Style workspace, with a complete menu at the top, commonly used navigation on the left, and the current active workspace in the middle. Unlike Outlook, however, it will use “tabbed-browsing?? style working panel, where the user can see the list of the currently opened views (such as the clients, project, and materials lists all at once), as well as same views multiple times (such as opening multiple client records) (QuickBooks-style).
All the customer data must be saved in an easily-accessible and portable place. All images and documents must be stored on the local file system for manual access. Currently, 2 options are viable, although possibilities will be considered:
1. Transparent lightweight real-time database that will ship with the product (preferred)
2. “Data files?? that are saved on a regular basis as the user is using the program.
Currently the application is only intended to support Windows XP+ compatible machines, so anything that’s Windows-specific is OK, such as shipping .NET with the product. There are no future plans for supporting other platforms.
Tablet PC GUI compatibility is also expected, as the product will be used in the field a lot. Ideally, there would be two modes, such as the “office?? and the “field?? mode, where the “field?? mode would make the buttons significantly larger (for touch-screen ease), and the fonts and tables a lot bigger and more visible. The “office?? mode would be intended for a standard office use, such as data-entry and record searching.
# Sections Detail
## Client List
This section would simply contain a grid with columns such as client ID, name, phone, etc., which should be easily customizable. There should be an option to quick-add a client by filling out just a few fields in the grid, or a “Complete Add??, which would bring up a “Client View?? (more on that later) and allow more detail to be filled in. There will also be a “Search Filter??, where if some text is entered; it only shows client that have names or other fields that match the filter. That filter should be clearly marked with a big red “X?? whenever the text is entered, so the user can easily find it and turn it off. “Recent Searches?? drop-down should also be supported.
## Client View
Whenever a client record is double-clicked, it would bring up a “Client View,?? which would contain a large number of fields for the customer information to be filled in (such as billing address, shipping address, fax, website address, notes, etc).
The client view would be a split-pane, with the bottom portion containing a tabbed panel with a number of tabs; currently only 2 are planned:
· Documents: this view will contain an “Explorer?? ??" styled list of files that can be attached to this client.
o A user would be able to double click any of them to run them, as they would in explorer, or, alternatively, right click -> View in Explorer, which would open up an explorer with the selected file in focus.
o The user would be able to add clients by either clicking the “Add File?? button or by drag-and-dropping a file from explorer onto this view.
§ The application should have adaptive controls, so if multiple client views are open, the user would be able to drag-and-hold the file over a window or a window tab, which would zoom into that window, and then drag-and-hold over the “Documents?? tab (in case a different tab is selected), which would focus on that view.
o “Remove File?? button would also be supported.
o “Search Files?? feature would be implemented, which would preferably bring up the Explorer’s built-in search engine (which should be easy to accomplish, considering that all the files will be organized in normal folders).
· Projects: this would be a grid similar to the “Clients List??, with a list of Projects that belong to this client. Similar features, such as searching and adding would also be implemented.
## Project View
This view would be opened whenever the user double clicks a project in the Client View’s “Project?? tab. The form would be very similar to the “Client?? view, with a list of files attached to this project at the bottom, and some usual fields, such as project name, address, notes, etc.
Besides the list of files, there will also be the following tabs (all of which have their own sections in this document):
· Materials List ??" list of materials used for this project.
· Cost Breakdown ??" pricing of materials, labor, and adjustments that can be made by the user.
· Estimate ??" printable & editable estimate for the project.
· Warehouse Request ??" printable & editable list of materials.
· Payments History ??" a simple tracking of payments received from the customer.
Inventory is the “initial?? list of materials that can later be retrieved when making estimates in project. It’s not a full-fledged inventory & stock-keeping system ??" there isn’t even a quantity/item. Instead, this is a list of
1. Item names, descriptions, and images.
2. Item measures (in what quantities the items are measured and sold).
3. Item relationships (if you want shingles, you’ll want nails).
4. Item pricing (material and labor).
Inventory should be presented similar to the item list ??" as an editable sortable grid of items, where you can add and delete new items. A search filter is also required. Whenever an item is double clicked, an “Item View?? window associated with that item will be open.
## Item View
Item view will be a horizontally split panel; the top part will contain item’s standard fields, such as name, description, units of measure, units of sale, pricing, etc.; the bottom part will contain a tabbed view with tabs such as “images?? and “related items.??
One of the tricky parts about items is the unit of measure-sale combinations that they allow for. Here are a few examples:
· Nails are measured by the unit, but sold in boxes; there are a 1000 nails in every box, and the box costs $25.
· Shingles are measured by square feet and are sold in bundles; each bundle covers approximately 25 square feet and costs $80.
· Trim (special case) is measured in linear feet and is sold in boards of 8’, 10’, 12’, 14’, 16’, or 18’, with different length boards bearing their own costs.
· Caulking is measured in linear feet and sold in tubes; a tube accommodate 100 linear feet and costs $15.
There might be other special cases, but this outlines the general idea. All of these relationships need to be easily modified and created by the user.
“Related Items?? tab is an important feature that allows us to link different items together for later use when creating estimates. The idea is simple ??" to cover a 100 square foot section we would need: 100 square feet of shingles, nails, covering tape, and caulking. It’s inefficient for the estimator to enter all of these by hand, so we need to link them like so:
1. For every 5 square feet of shingles we need 20 nails.
2. For every square foot of shingles we need square foot of covering tape.
3. For every 10 square feet of shingles we need 15 linear feet of caulking.
All of these relationships must be easy to create and edit for the user.
# Project View Section Detail
## Materials List
This is the view where the actual on-the-field action happens. This is intended to replace the traditional paper spreadsheet of “Materials & Quantities?? that most estimators would use.
This view needs to be able to accommodate for different item types (as outlined in the “Inventory?? section) and their differences.
[TODO: More info on this section]
## Cost Breakdown
This section would allow the user to play with final labor prices, waste percentages, and additional markups.
These sections are a work in progress.