Bid for Back-End Development Job – PHP / CodeIgniter

I was approached to provide a bid for back-end development on a site that connects businesses with users who are searching for their specific service (at it’s core it’s a listing service like a job board—connecting people to content/products). The client doesn’t know exactly what they want but they can’t afford to go full-featured right off the bat. So, we’ll be using a staged approach. What I describe below is stage one.

The client is coming at this project from a perspective where they see a need in this industry and they’re trying to fill it. The other driver would have been if they were experiencing the demand directly (existing customers asking for the service…which isn’t happening). I mention this because it plays into how I bid the job. If the current demand was high and they were on a strict deadline to get this done I would have charged more.

I’m approaching this project as a learning experience. I’ve been playing with CodeIgniter for a while but I’m excited to utilize it for a project like this. The development environment would be left up to me because I would likely be working on the project from start to finish without any other back-end developers.

I’ve chosen to use PHP with CodeIgniter and MySQL (it’s what I’m most comfortable with at this point). The website is mostly data driven so there is quite a bit to develop for the back-end. The front-end is being developed by someone else so I can just plug and play.

To wrap my head around the project I did three things:
  1. Defined the database schema. I know this was probably unnecessary but it helped me understand exactly how large the project is.
  2. Defined the controllers and views. Basically, most of my time will be spent building the controllers and models. This helped me understand about how many of each I would be building.
  3. Talked to someone who has done these types of projects before.

There are 5 sections of the site and listed for each are their respective ‘views’ (these are the controllers I would use in CodeIgniter): HomeSearchContent,Manage and Admin. Unless otherwise stated each of the following views will query the database either a little or a lot (I understand a ‘view’ doesn’t query the DB but you get the point). The database will have about 16 tables with an average of 10 columns per table.

Home
  • Landing Page (static)
  • Vendors
  • Affiliates
  • Contact (just a simple form)
  • About (static)
  • Join (just a simple form)
Search
  • Find (search driven query or drop-down selections…using JS that I would have to add…the front-end guy isn’t up on JS)
  • Results (each result is a different campaign and will display a thumbnail photo, a description and the name of the company)
Content
  • Company Profile
  • Company Listing (kind of like a campaign)
Manage
  • List (just a list of links for management)
  • Company Profile  (full CRUD for 2 sets of info)
  • Regions (full CRUD for 2 sets of info)
  • Categories (full CRUD for 3 sets of info)
Admin (using an off-the-shelf system for CodeIgniter, ion_auth)
  • Users (full CRUD…it’s mostly developed when using ion_auth. I would just have to skin it).

As you can see the site is fairly basic. It won’t have a lot of flashy new JavaScript and, for the first stage, will basically just display data to the user. In the future we hope to implement a subscription management system, company login system, maybe user login too and ads. For stage one, the client will manually enter all the company and campaign info into the site (using the Manage section). I don’t think this is the best way to go because it would be much more time-effective to let the companies create their own profiles and campaigns. However, the need for low cost upfront out-weighed other considerations. I think the client might have a change of heart when they realize how much of their time it will take to maintain the site. Maybe I’ll create a separate bid that would add that functionality.

Since this was is my first project of this type I solicited some advice from someone I respect in the web dev community. He helped me talk through the different aspects of the dev process and how that would affect the bid. If you’re in a similar situation where you don’t know exactly what a project will take I recommend talking to someone you know who already does it.

I sent my bid to the front-end guy last night (he’s spear-heading the job) and he was pleased with the price. We’ll be talking with the clients in the next week or two to figure stuff out.

I want to tell you how much I bid this job for but I shouldn’t do it right now. I intend to blog about this experience whether I get the job or not so please check back for more details. I will explain my bid price later (maybe after the project is underway).

Some of this is newer to me so if you have some feedback I’m all ears.
Tweet me @KeithMon