Hey all! In 2008, I launched http://www.priceplow.com - a Price Comparison engine for nutritional supplements. It's based on Drupal 5.

Since then, I've developed a supporting network of 35 sites (WordPress), and as you can imagine, I've learned a lot and have been able to go full-time with this business.

Now it's time to fix my baby up, and I'm wondering if I should stick with Drupal when I do a total rewrite, or go to some PHP MVC framework.

The more I look at it, the more I see that Drupal's capabilities are fine for my site, it's just my implementation and back-end that needs serious change.. as well as a more polished, professional look.

As a note, I WILL be hiring someone to help with this. I can code, but don't always do things efficiently. Feel free to buzz me with resumes if you think this is a good idea.

I've put together a large list of technology requirements, but I'm going to highlight the important things:

1. My own data tables with foreign key constraints.

This is the most important decision, if I choose Drupal.

I have product manufacturers (brands... ie Optimum Nutrition), product names (ie 100% Whey Protein), product categories (ie Whey Protein), and detailed sizes (ie 5lb). Each detailed product size has its own flavors (chocolate, vanilla, etc)... and each of those which have a boatload of ingredients. I am crazy about database sanity and non-duplicate info, and want to maintain foreign keys so if a product gets deleted, all of its sub-products do too.

As is right now, I'm using my own tables, and wrote my own modules to manage all of this. The backend is sloppily done though.

Could I possibly use Drupal's built-in tools, yet force Foreign Key constraints? Or do I need to develop my own "system" again? I'll definitely need a far better admin system than what I originally made.

2. User Authentication via Facebook Connect

I plan to have a Facebook App, and want that to be the ONLY way to let normal users to create accounts. Is this possible?

Logged-in Users will get exclusive data and subscription information to their favorite products.

However, I'd also like product manufacturers to be able to log in, perhaps I'd create them accounts, so that they could administer their products.

3. Open Database Connectivity

I'm going to have other non-Drupal tasks, both on and off the server, work with the database, both read and write operations.

This could be via an API (long term plan), calling my Drupal PHP code from outside of Drupal, or just making database calls externally (not preferred). Whatever works. I'm sure it's possible, I'm just not sure how cleanly it's possible.

In fact, one script will be calling in remotely from Python.

Later on, I want data pulled from an iPhone App. Things to think about...

4. Forum Integration with vBulletin

I want a forum, but I am pretty sure I want it to be vBulletin. Looks like this is handled... (http://groups.drupal.org/vbulletin) but will that work with Facebook and Drupal?

5. A Session-Based "Virtual Shopping Cart"

This is a must-have feature, but I have no clue how I'd approach it. Either steal code from Ubercart, or just develop some sort of session-based system. I'd like both logged-in and anonymous users to be able to add products to a cart, but this is NOT an e-commerce store. We'll simply add prices up with some custom queries.

I have a complete list of components, but I know that Drupal can handle them since I did most of them in Drupal 5. I'd love your thoughts on the above bullets.

Thanks! Looking forward to working with you all again here!
Berto

Comments

mradcliffe’s picture

Foreign keys

Drupal still doesn't support foreign key relations in the Schema API (although there is a 'foreign keys' key that does nothing). However there are ways of acting on database records, for instance hook_node_delete() and hook_user_delete() implementations will be called when a user or node account are deleted. This lets a module do other things as well.

User Authentication via Facebook Connect

Drupal for Facebook or Facebook Connect modules.

Open Database Connectivity

Your best bet is probably to look at developing some sort of Web Services via the Services API module. While you can connect to the database just fine, I think that would introduce too many points of entry (security).

Forum Integration with vBulletin

Yeah, that would do it. Most Drupal folk don't care about integrating forums, but there are successful implementations of forum software and Drupal. I talked to the guys who ran a web site called swtor a couple of years ago, and they talked about it.

A Session-Based "Virtual Shopping Cart"

I think you can use Ubercart or Drupal Commerce and just disable the checkout/payment process. They are both heavily based on the Rules module so you can create a rule work flow to create the order, and then process the orders manually by a store administrator.

Berto’s picture

Thanks mradcliffe!

So I've been working on my database this week, and have discovered that I really want to use postgresql (for parent/child / hierarchical queries using a recursive function).

I'll need to learn what the Schema API is. Currently, the site just has some of its own tables and modules that call custom SQL queries. Nothing really tied in via any Drupal API... and the site won't really need to create its own tables (or drop them) so I don't know if I'll need this.

Thanks for the Services API module. That's REALLY what I wanted but didn't know about. Wished I had that in D5!

I'm going to keep running through the database and eventually post some jobs. Exciting times.

Thanks again!

mradcliffe’s picture

Yay, Postgres! :-)

I made a conscious effort years ago to switch my dev. environment to postgres so I could better support it in my modules.

Berto’s picture

Hey all - I've posted a job looking for help on the database. My setup can't currently handle all features I want, and I'm pretty sure I'm doing a few things wrong, so I'm going to get someone good to look at it.

Since this site is going to be Drupal-based, it might be best if I got help from someone who knows Drupal.

Here's the job posting, but you can contact me directly as well if you want to help me out. I'm guessing it's 10-20hrs of work.

https://www.odesk.com/jobs/SQL-Database-Design-and-Normalization-Assista...

Thanks!
Berto