Wednesday, December 30, 2009

Dolphin 7 Final Released

Yes, Dolphin 7 final is available to download.

Should you install it on your live site and rush to be one of the first with all those cool new community features?

I wanted to make my thoughts clear with regard to using Dolphin 7 on a live site.

The first 'final' revision of any software will still have bugs.

Just because Boonex says its the final release does not mean there wont be problems with it. As with all of their previous Dolphin versions, it took a few months to really get their final version working perfectly. By then there were several patches available.

I am sure the same will be true of Dolphin 7 - there will be bugs and depending on the level of customization in the areas where Boonex releases a patch, it could increase the time to upgrade to the various patches.

Starting with D7 is both a good and bad idea - there may be some features of D7 that have a bug. You can disable that feature until a patch is made available.

But.. that means you go live without a feature or with a feature that may or may not cause a problem.

Some webmasters would argue the point to go with the proven version (6.16) on a live site and wait for at least the first major upgrade (Dolphin v7.1) before using it on a live site.

The call is completely yours, and you will get both sides of the argument where ever you turn.

If your site will have many many customizations, it might be worthwhile to go with Dolphin 7 and just release features that are proven bug-free. Building your site functions (and user tools) slower than we could with version 6.16

Starting with D6 and thinking that the developer can simply port those features to D7 is not entirely the case. We will of course build with the awareness of going to D7 within the code, but there will be additional hours of development to recreate the integration of custom code with the Dolphin 7 system.

There are pros and cons to both options.

The version to start with is entirely up to you. Developers are simply here to lay out the options, explain the pros and cons and take your direction.

If you'd like to discuss your upgrade to Dolphin 7 or start your own membership site using the leading community site builder - feel free to check out A leading Community Site Builder on the Dolphin platform

Friday, November 6, 2009

Upgrade to Dolphin 7

We are so close to the release of Dolphin 7,  I am dancing in the halls.

If you haven't started planning for your upgrade... what are you waiting for?

Upgrading from Dolphin 6.1 to Dolphin 7 (from our tests) is relatively simple and is a highly recommended upgrade.

You have customized and paid for so many modifications to your current dolphin install and are concerned you will lose all that work. I don't blame you, it's a legitimate concern.

Most (if not all) of your custom features can be transferred when you upgrade to dolphin 7 but you'll need to map out those changes and manually modify the dolphin 7 files.  This is a simple process for those of you who know PHP.

Before you start upgrading to dolphin from any previous version, we would be happy to go over your site with you. We are offering a free 1-hour consultation to help you decide if the upgrade is something that will benefit your members.

Contact us today: Before you upgrade to Dolphin 7.


Subscribe to the Dolphin Community Video Tutorial Channel is now active at YouTube.

Tuesday, September 15, 2009

Members as Affiliates

I have been asked (several times) how to make it easier for members of the dolphin site to be considered affiliates. Instead of the member needing to sign up as an affiliate, they are one just by joining the site.

The best way is to automatically create the user's affiliate account when they join the site.

First - you have to remove the `aff`` table 'autoincrement' from the `ID`  field.

Then open join.php and find:::

echo _t( '_Join complete' );
echo '
echo _t( $sStatusText );

After it paste:::

$sql = "SELECT * FROM Profiles WHERE ID = '".$iMemID."'";
$theUser = db_res( $sql );
$useInfo = mysql_fetch_assoc( $theUser );
$pr_id = $useInfo['ID'];
$pr_Name = $useInfo['NickName'];
$pr_email = $useInfo['Email'];
$pr_Password = $useInfo['Password'];
$pr_DateReg = $useInfo['DateReg'];
$sql = "
INSERT INTO  `aff` (
`ID` ,
`Name` ,
`email` ,
`Password` ,
`Percent` ,
`seed` ,
`RegDate` ,
'".$pr_id."',  '".$pr_Name."',  '".$pr_email."',  '".$pr_Password."',  '50',  '0',  '".$pr_DateReg."',  'Active'
$addAff = db_res( $sql );

Friday, September 4, 2009

Backup Dolphin Automatically using Cpanel

// PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
// This script contains passwords.  KEEP ACCESS TO THIS FILE SECURE! (place it in your home dir, not /www/)


// Info required for cPanel access
$cpuser = "username"; // Username used to login to CPanel
$cppass = "password"; // Password used to login to CPanel
$domain = ""; // Domain name where CPanel is run
$skin = "x"; // Set to cPanel skin you use (script won't work if it doesn't match). Most people run the default x theme

// Info required for FTP host
$ftpuser = "username"; // Username for FTP account
$ftppass = "password"; // Password for FTP account
$ftphost = ""; // Full hostname or IP address for FTP host
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)

// Notification information
$notifyemail = ""; // Email address to send results

// Secure or non-secure mode
$secure = 1; // Set to 1 for SSL (requires SSL support), otherwise will use standard HTTP

// Set to 1 to have web page result appear in your cron log
$debug = 1;


if ($secure) {
   $url = "ssl://".$domain;
   $port = 2083;
} else {
   $url = $domain;
   $port = 2082;

$socket = fsockopen($url,$port);
if (!$socket) { echo "Failed to open socket connection… Bailing out!\n"; exit; }

// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);

$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&submit=Generate Backup";

// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0
fputs($socket,"Host: $domain
fputs($socket,"Authorization: Basic $pass
fputs($socket,"Connection: Close

// Grab response even if we don't do anything with it.
while (!feof($socket)) {
  $response = fgets($socket,4096);
  if ($debug) echo $response;



Changing the join form in Dolphin 7

Dolphin's join form currently uses 'Profile Fields' that you add and manage in the fields builder admin panel. This makes normal use very simple for the junior webmaster. What if you want to seamlessly integrate the dolphin community with your current membership system and prefer to use your current join process.

This was a bit of a trick to figure out. Although now that I've finished, it's bark was worse than its bite ;)

Open the join.php file and locate :

    function showJoinForm() {
        $aJoinFormParams = array(
            'couple_enabled' => $this->bCoupleEnabled,
            'couple'         => $this->bCouple,
            'page'           => $this->iPage,
            'hiddens'        => $this->genHiddenFieldsArray(),
            'errors'         => $this->aErrors,
            'values'         => $this->aValues,
        //echoDbg($this -> oPF);
        echo $this->oPF->getFormCode($aJoinFormParams);
And change to this:
    function showJoinForm() {
        $aJoinFormParams = array(
            'couple_enabled' => $this->bCoupleEnabled,
            'couple'         => $this->bCouple,
            'page'           => $this->iPage,
            'hiddens'        => $this->genHiddenFieldsArray(),
            'errors'         => $this->aErrors,
            'values'         => $this->aValues,
        //echoDbg($this -> oPF);

$ret = ob_get_clean();
        echo $ret; //$this->oPF->getFormCode($aJoinFormParams);
Now look at the above pasted text: there is a line:
Change this to use the registration form from your current site or application.
Then open your join.php in the browser (to view) and modify the old registration form's CSS or internal style to fit within the dolphin 7 join page and look like it belongs.
You will also need to open the form processing function within your old registration form and add the function to insert the user into the 'Profiles' table of the Dolphin 7 database.
Contact me for help for a custom integration of Dolphin 7 with your current web site.
I will cover integrating the login process so its a single login to dolphin and your current site application, upon request, or comments.

Thursday, September 3, 2009

Customizing your Dolphin Community - a popular topic

Now let's look at PHP within Dolphin and pull it together. I hope this post will help you customize your dolphin (community) site. We'll start by dissecting a simple page from the Dolphin community builder application.

You should read the previous post ( a simple PHP primer ) before reading this popular blog entry on customizing your dolphin web site. It will help you see the very basic PHP skill you should have before customizing your web site yourself.

Let's go ahead and open the file (dolphin root directory) /faq.php - this is the simplest file to start with, when customizing your Boonex community software.

After the Boonex copyright, you will notice the next 2 lines.

require_once( './inc/' );
require_once( BX_DIRECTORY_PATH_INC . '' );
These lines include important files for the dolphin framework and should not be removed.

Next in the dolphin page framework we tell it:
$_page['name_index'] = 13;
$_page['css_name'] = 'faq.css';
$_page['name_index'] Tells dolphin to use that numbered template (from the tmpl_uni directory) These template files are called page_xxx.html in your template directory (templates/tmpl_xxx/)

$_page['css_name'] Tells dolphin to include that named css file (for style) 
NOTE: For it to pickup and use the CSS file you reference in this setting, the css file must be in the /templates/tmpl_uni/css/ directory.

Then you will notice more PHP....

if ( !( $logged['admin'] = member_auth( 1, false ) ) )
if ( !( $logged['member'] = member_auth( 0, false ) ) )
if ( !( $logged['aff'] = member_auth( 2, false ) ) )
$logged['moderator'] = member_auth( 3, false );
This is where dolphin looks for the security details.. what level is the current user logged in as. Again, do not alter this yet - we can cover the user-level access in another post about Dolphin security.

Here Dolphin will set some page content but get the actual content from your specific dolphin install and admin settings.

$_page['header'] = _t( "_FAQ_H" );
$_page['header_text'] = _t( "_FAQ_H1", $site['title'] );
Take notice of the function this calls:

$_page['header'] = (we want that variable to be set at runtime)

_t( "_FAQ_H" ); This is what we want to set it to: This is actually the language function, it uses the function _t to get the value from the language settings (managed in dolphin admin panel)

For this example - the function _t uses the language entry _FAQ_H -- which means: in the language file there is an item (key) called _FAQ_H with a value that will replace the _FAQ_H at run time.
You will also notice the use of another variable (being passed to the _t function (  $site['title'] ) this is set in the file in your /inc/ directory and references the site title, you chose during install (or later edited when customizing your dolphin site.
Now the server has processed the above and is creating the HTML content to send to your visitors web browser. It still does not have the bulk of the page - the actual content.

Content is created by the PageCompPageMainCode() function.

$_page_cont[$_ni]['page_main_code'] = PageCompPageMainCode();

$_page_cont[$_ni]['page_main_code']  is what we want to replace with the results of the PageCompPageMainCode() function. Which, if you look at the template file you will see it as 
__page_main_code__ -> and notice where it will place those results in a basic HTML structure.

Lets dissect that function for better understanding how to make changes to it and customize your dolphin community to get out of the cookie cutter contents of such an open source application.

function PageCompPageMainCode()
global $oTemplConfig;
    $ret = _t( "_FAQ_INFO" );
    return DesignBoxContent(_t( "_FAQ_H1", $site['title'] ), $ret, $oTemplConfig -> PageCompThird_db_num );

 $ret = _t( "_FAQ_INFO" ); -- This is setting the $ret (the HTML code we want in the main content of the page) - it gets the _FAQ_INFO value from that key's entry in the language file. and puts it in the variable $ret

Then... we want to put that value into a Design Block on that page....

return DesignBoxContent(_t( "_FAQ_H1", $site['title'] ), $ret, $oTemplConfig -> PageCompThird_db_num );

Here the PHP 'returns' the design box with the header _FAQ_H1, the site title and then (3rd variable) the actual content from the language key. The final setting there PageCompThird_db_num chooses the type of design box -- border, no border etc.

We can cover those in more details in another post - hopefully this will introduce the very basics of manipulating dolphin into a truly customized social community.

Much more to learn as we move forward creating your unique dolphin site.

See you next time.

PHP (Not as scary as you think)

Where do you start?!
Let's look at the basics to start with. Getting PHP to write things to the web browser, what variables are and how to use them...examples you can use in just about every web page you create.
Let’s start with the most basic one.
The PHP Echo command
We’re going to tell PHP to output something to the screen. Keep in mind that PHP can be used in conjunction with HTML, but we are not showing the code in this example, to keep it simple:
(I hate the “Hello World” sample that every other book in the world uses, so I’m using “Dolphin Community” instead.)
Let’s dissect the command example bit by bit, shall we? It helps to do this when you are looking at a LOT of PHP code...because, trust me, it can look like a jumbled blurry mess sometimes if you don’t take it piece by piece! Next page, please, if you will...
- tells the server to process this as php code...
echo “Dolphin Community” ; - tells the server to write what’s in the quotes to the screen, and that the semicolon is ending this particular command...
?> - tells the webserver, “OK, I’m done with PHP for now. Back to regular HTML”.
Pretty simple when you look at it that way, yes?
“OK, that’s cool..but what if I want to see quotes on my screen?”
This can be done by “escaping” the PHP code for what you want to show up in quotes. Let’s use the example from above...
If you wanted to see quotes around Dolphin Community, you would use the following code instead:
Using \” tells PHP that you want a quotation mark to appear. Remember this - we’re going to use it later!
Pull some Strings...
In PHP, as a general rule, a String is any line of text contained within quotation marks. You can use either double quotation marks (“) or single quotation marks also known as apostrophes (‘) in a string. Strings could be considered the building blocks of PHP, considering most all data is going to come from what’s in a string.
$double = "quotation marks."; 
$single = 'single quotes.'; 
When using single quotes, you need to “escape” the apostrophe with the slash (just like you would with double quotation marks) if you wish to display it in the output text...
echo 'Let\'s start our own social network\'s with Boonex'; 
Special commands within strings...
There are some “secret commands” you can use within strings to manipulate the output text: 
\n:  makes a new line 
\r:  a carriage return 
\t:  a tab
\$:  shows a dollar sign - remember PHP will be looking for a variable if you want to display a dollar sign and don’t use a slash...and throw an ugly error! 
Using Variables
A Variable in PHP, simply put, is one thing that means another thing or things - a “container” if you will. It can represent text, numbers, calculations, and more. 
Variables are quite powerful, and if you mess ‘em up, they’ll come get you in the middle of the night.
Declaring a variable is easy. No spaces in the variable name, please - PHP doesn’t like that...
$This_thing = “The Other Thing”;
Now before you go off saying “What the heck would I need THAT for?”, remember that variables are very useful...especially if you are PHP Include-ing other files (Like the foreshadowing there? Do ya?) 
Real World Usage For Variables
Here’s an example of how you can use a variable in the real world: show the current date on your website.
$today = date("F j, Y");
echo "$today";
This example sets the date command as a variable called “$today”, and uses echo to display it on the screen.
And now, for a quick tangent...
More about the “DATE” command - it is very versatile and flexible - see the guide below to use it to it’s potential!
And now...back to Variables!
ECHOing more that one Variable at a time
You can use the ECHO command we learned earlier to display more than one variable at a time. Combining variables can be extremely useful. Take a look at this example...
$phrase1 = "That's No Moon,";
$phrase2 = "It's a Space Station!";
echo "$phrase1 $phrase2";
This code example will show up in your web browser like this:
Neat, huh?
So, you can see where this might be useful, I hope?
You can also echo text and variables in the same statement by putting periods around the so...
$items = 3; 
echo "You have purchased ".$items." items."; 

Wednesday, September 2, 2009

Add/Remove 'Actions' - Dolphin profile view

You can change the options in the actions menu (on the profile view page) by following these simple steps.


Find the function:

You will  find within this function are the links. Add and remove links in this area.
BEWARE:: Make sure you keep the code entact, and follow the other links as guides. For instance - one link opens a standard page within the same browser - other links have an OnClick event - which opens a pop up window.

As long as you are careful to add a new link in the exact fashion, or remove a link by taking away the entire line (from $ret .= all the way to and including the semi-colin. ( ; ) - you will be able to completely customize this area of your dolphin community.

Saturday, August 29, 2009

Add Group Delete Function for Dolphin 6.x

/ group_actions.php

case 'delmem':
if( $arrGroup['creatorID'] == $memberID )
$mem = (int)$_REQUEST['mem'];
if( $mem )
if( $mem != $memberID )
$oGroups->resignGroupMember( $mem, $groupID );
Header( "Location: {$site['url']}grp.php?action=mygroups" );
$_page['header'] = _t( "_Group member delete error" );
$_page['header_text'] = _t( "_Group member delete error" );
$_page_cont[$_ni]['page_main_code'] = MsgBox(_t( "_You cannot delete yourself from group because you are group creator" ));
$_page['header'] = _t( "_Group member delete error" );
$_page['header_text'] = _t( "_Group member delete error" );
$_page_cont[$_ni]['page_main_code'] = MsgBox(_t( "_You cannot delete group member because you are not group creator" ));


case 'delgrp': // start delete group function
if( $arrGroup['creatorID'] == $memberID )
// put delete function here
$sql = "DELETE FROM `Groups` WHERE `ID` = '".$groupID."' ";
db_res ( $sql);
$sql = " DELETE FROM `GroupsGallery` WHERE `groupID` = '".$groupID."' ";
db_res ( $sql) ;
Header( "Location: {$_SERVER['HTTP_REFERER']}" );
Header( "Location: {$site['url']}grp.php" );

$_page['header'] = _t( "_Group member delete error" );
$_page['header_text'] = _t( "_Group member delete error" );
$_page_cont[$_ni]['page_main_code'] = MsgBox(_t( "_You cannot delete group because you are not group creator" ));
break; // end delete group

OPEN :::
FIND :::
if ( $aGroupInfo['creatorID'] == $iMemberID ){
$sRetHtml .= $this->genGroupActionBtn( 'Edit group', "{$this->sCurrFile}?action=edit&ID={$iGroupID}" );

if ( $aGroupInfo['creatorID'] == $iMemberID ){
$sRetHtml .= $this->genGroupActionBtn( 'Delete group', "group_actions.php?a=delgrp&ID={$iGroupID}", true );
$sRetHtml .= $this->genGroupActionBtn( 'Edit group', "{$this->sCurrFile}?action=edit&ID={$iGroupID}" );

Friday, August 14, 2009

Dolphin version 7 (Remove Boonex Footer)

UPDATED:: February 21, 2011
Thanks to GLCNATION.COM -- the files had changed... this post now reflects the working version to remove Boonex Footers

First of all: I do not condone, or encourage the use of the following tip. I provide it only to avoid answering the question 1,000 times.

The following steps will remove the Boonex footers from Dolphin 7.

Step One: Run the following MySQL (using phpMyAdmin)

UPDATE `sys_options` SET `VALUE` = '' WHERE CONVERT( `sys_options`.`Name` USING utf8 ) = 'sys_template_cache_enable' LIMIT 1 ;

UPDATE `sys_options` SET `VALUE` = '' WHERE CONVERT( `sys_options`.`Name` USING utf8 ) = 'sys_template_cache_css_enable' LIMIT 1 ;
Step Two: Open /templates/tmpl_uni/_sub_footer.html


Replace with:

<style type="text/css">


div.main_footer_block {

visibility: hidden;





<span style="visibility:hidden; height:0px;"> __boonex_footers__ </span>

Step Three: Delete the contents of the following 2 directories.
Refresh your home page to ensure removal of the Boonex links on your dolphin community.

Again: I cannot stress enough, supporting Boonex by purchasing a license is the only way to ensure future development. Support open source software and pay for the removal of the dolphin copyright at the bottom of your site!

Saturday, August 8, 2009

Automatic Login after Dolphin Join

Many of the dolphin sites I have been involved with, as a freelancer, have requested that the visitor be automatically logged in after they join.

Here is the simple changes needed to log the new member in, automatically after they complete the Dolphin join form.

Open :: /join.php

Find ::

echo _t( '_Join complete' );
echo '
echo _t( $sStatusText );

Just above it paste the following:::

// automatically log the user in after join process
$sql = " SELECT * FROM Profiles WHERE `ID` = '".$iMemID."'";
$new_info = db_res( $sql );
$the_user = mysql_fetch_assoc( $new_info );
setcookie( "memberID", $the_user['ID'], 0, '/' );
setcookie( "memberPassword", $the_user['Password'], 0, '/' );
// end auto login

This will log them into the Dolphin community without requesting username and password.

Thursday, August 6, 2009

Adding a page to Dolphin Site.

I have been asked many times "How do I add a new page to my Dolphin Community Site?"

Other than using the Page Builder, in your admin area - which has some limitations, there is another simple way to add a page to your site.

First: Open /faq.php and save it as something new (like detailed_info.php)

Then look for the following code.

function PageCompPageMainCode()
global $oTemplConfig;

$ret = _t( "_FAQ_INFO" );

return DesignBoxContent(_t( "_FAQ_H1", $site['title'] ), $ret, $oTemplConfig -> PageCompThird_db_num );

Notice the line -> $ret = _t( "_FAQ_INFO" );
<- this tells the dolphin script to get that key from the language table.

Now change the _FAQ_H1 to _MORE_INFO (or anything else you'd like to use, and resave the file.

Go into your dolphin admin area, click on language settings, then Add New and enter the key ( _MORE_INFO (or whatever you named it) and enter the value for each language your site has available.

Done. Now just link to that file, by adding a link to the navigation menu, or anywhere.

Just a quick post and simple instructions, I know - but let me know if you need any further description on how to add a page to your Dolphin web site.


Dolphin Version 7

Had some time today, in wait for a client to deliver some required material.

So... I jumped into the latest version of Dolphin, version 7. Altho I love the interface and the new features - it seems they managed to steal much of the 'Modules' ideas from us developers.

Sure these items are a great part of the core dolphin community application, but isn't using them going to step on the toes of developers who have supported this open source community site?

At any rate - it is extremely well put together and the Boonex team deserves some cudos for this app - well done, my friends!

My initial thoughts on Dolphin version 7 - " WOW! "

I will be spending most of the day, seeing what it takes to replace their 'Profile Customizer' function with mine. I have already had a number of requests to do this and am sure I will continue to get more.

It seems they still use the same basic profile view function, but some changes are needed in the genProfileCSS() function, as well as in the update function. Depending on what is involved, I am hoping to make it a free upgrade for owners of the customizer MOD for dolphin.

I will let you know :)


Tuesday, August 4, 2009

Dolphin webmasters, worst of the breed!

Freelancing means dealing with 'know-it-all' "webmasters" - in most cases it's the 'weekend-webmaster'. The worst of the breed!

This past weekend, a holiday weekend here in Toronto, I took 2 days off - the Sunday and the Monday. I don't get too many days off in my business, which I guess is a good thing, means I am a busy freelancer.

When I returned to my desk Tuesday morning, I was met with angry emails from a MOD sale, the profile customizer for Dolphin MOD.

Why do these people, who spend on average $120 on mod with me, why do they feel they own me. Where do they get off threatening me with PayPal chargebacks, just because I took a couple of days off - especially when its a HOLIDAY WEEKEND???

I just dont understand these dolphin webmasters - drive a guy nuts! Needless to say, he will not be getting a refund, and his threats of negative feedback, may make there way to the Dolphin community. Frankly - I couldnt care less! More power to him and all the other weekend webmasters before him that resort to threats when I am not immediately available for their emails.

Just had to vent, figured - where better than the blog?

Webmasters should realize that geeks have lives and families too - that we deserve a day or two off from time to time, especially considering the long nights and weekends we usually work for them. For pennies I might add. Perhaps I will change my pricing back to the industry standard - then I might not be so upset over threats resulting from a simple two-day holiday with my family.

Since I rarely take time off -- I wont run into this again for a while, but for gosh sakes! Give a guy a break. A day off from time to time is not that much to ask. Is it?

Friday, July 31, 2009

Dolphin (Boonex) MOD

For about three years, I have been working with the Dolphin platform. A Boonex product.

I have created several Dolphin MODS for free as well as available for sale. The favorite is the dolphin MOD that allows community members to customize their profile.

The application uses Ajax and PHP to change the colors, text sizes and backgrounds in real time. Most dolphin webmasters tell me it is one of the most often-used feature. A biased opnion of it... WOW, very cool. Not sure why the big-guy social networks haven't picked up on that area. MySpace used to allow CSS style sheets, altho a pain to create without a 3rd party tool. Not sure they have that profile customization tool any more, havent logged into my profile in close to a year - lol

With the new version 7 of Dolphin, I will need to create an update for the Profile Customizer. If you happen to be fluent in Ajax and would like to take on this project, get in touch.

With work beginning on the Patient Management application now in full swing, I am not sure when I will be able to get started on upgrading my Dolphin MODS.

Speaking of the Patient Management application, I am still looking for another freelancer to work with on the project - be sure to get in touch asap.

Wednesday, July 29, 2009

Web Design is only the surface

I am often asked the difference between a web developer and a web designer.

A designer is someone who's primary focus is the style of your web site. Whereas a web developer's role is to make the web site interactive. To make your web site, online business or web-enabled application accept and delivery information dynamically.

Getting a web site designed is the simplest component of any web application.

The Daniel Solution works with several web designers, but our main freelance development focus is on creating the backend functionality that makes your web site worth your customers time to return to it time and time again. It is the PHP, ASP, dot NET or other server-side application that produces your online store.

Working with a freelancer to complete your online presence or web application project is the most cost-efficient way to deliver the who what where why of your business to your market-niche.

Most, if not all web applications are made up of many technologies. This means you would, in most cases need to understand the underlying technological requirements of every feature in your web site, or web application.

What is the best way to put all of these technologies together to deliver your features?

Hire a group of freelancers who work together under the direction of an experienced development specialist.