Help me design a website + sex
July 15, 2006 7:07 PM   Subscribe

Web-design help? SQL server?

Ok: My employer has asked me to construct a website for our organization requiring the following:
1. Both a password-protected section and a publicly accessible section (the password-protected section would have various templates and forms available for download);
2. An associated email and addresses for each of 7 employees;
3. A form on which employees can give availabilities and request time off, which will be linked to some sort of central database;
4. It would also be linked to the aforementioned database such that data could be entered directly from various other linked PCs.

How would this be done? How difficult would this be?
posted by heavenstobetsy to Computers & Internet (9 answers total) 3 users marked this as a favorite
 
You might want to look at WebGUI, which should have facilities packaged for these things.

Perl, Apache, Linux, yadda yadda yadda...

Full disclosure: I *wish* I made any money off recommending it. It's just good.
posted by baylink at 7:25 PM on July 15, 2006


If you only have 7 employees, then building a web application for this is probably overkill. #2-#4 look like things that can be done in existing groupware, and will probably be done better than in a homegrown web application.
posted by beerbajay at 7:31 PM on July 15, 2006


I would need to know a little more about your development platform (i.e., Linux, Windows, et al.) before I could truly recommend any kind of comprehensive solution. From a technical perspective, your objective can be accomplished in one of many languages, including but not limited to ASP, JSP, PERL, and PHP.

As far as your SQL server is concerned, you will most likely end up with MySQL, Microsoft SQL Server, or PostgreSQL. They are all capable of accommodating your project requirements.

LAMP (a combination of Linux, Apache, MySQL, and PERL or PHP) is extremely popular right now, although (primarily older) versions of MySQL are frequently criticized for their lack of certain enterprise and other features. Most of the detractors are quick to recommend PostgreSQL as a free alternative. In your case, I wouldn't have any problems recommending MySQL.

Keep in mind that you will want to thoroughly research security, especially if you will be making any kind of confidential information available through your Web application. Web applications are, for example, frequently vulnerable to SQL injection exploits, which could allow an attacker to gain unauthorized access to anything stored in your database.

I suppose that the most pressing question is this: How much experience do you have as a Web developer? I'd also like to know whether you are looking to roll your own solution or locate software that has already been developed to serve your purpose. Best of luck in your endeavor!
posted by scoria at 7:32 PM on July 15, 2006


1. There are various off-the-shelf security packages. and there are various ways to go about providing security (at the webserver level, within a CMS system, etc.). You need to be careful to make sure the security is integrated such that it actually works.
2. For this you need a mailserver. There are a couple of standard unix packages for this, with various trade-offs. But with only 7 employees, this is something you could probably more easily off-load to a hosting provider.
3. Ok, well, you obviously need a database server, a database design, a front-end for employees to enter information and to display all employee availability to the boss, and some middleware to connect the front-end to the back-end. For 7 employees, does availability vary that much or need to be permanently recorded, such that you need to have a database rather than just calling the boss?
4. If you did this, you'd host it on the same server that hosts your website, and any PC which could reach the web could use your database (with the correct passwords, of course).

You could do this by using Matt Raible's AppFuse, which is a sample working three-tier J2EE app, a front-end, middle-tier, and database, built using the Java Spring Framework. Out of the box, the sample app works, and already includes the ACEGI security modules, the Hibernate ORM, and some other Java packages to manage email and make the JSPs really easy to put together. Raible's AppFuse even includes some scripts that will build both middle-tier objects and their associated database tabes, given the right definitions. (Personally, I wouldn't allow a database to be automatically generated, but it might work for you.)

The drawback of this is that you'd need to gain at least a rudimentary understanding of how the Spring Framework works (and to a lesser degree ACEGI and Hibernate), you'd have to be able to write Java code, and you'd need a basic understanding of J2EE practices/principles. Without having used Spring before, I was able to get up to speed in it and Hibernate in a week or two (and could add real functionality even sooner, by monkey-copying), but I'd done J2EE before. (Spring's much much much nicer than using EJBs and JDBC. Much much much nicer and much easier; Spring and AppFuse both integrate and encapsulate a lot of well-thought-out implementations.)

I'd probably be able to put together all you want in a few weeks; how fast you could do it would depend on your proficiency in Java, your familiarity with J2EE on the one hand, and database design on the other. (But them, I'd likely charge correspondingly more than you, so it would likely balance out.) If you do decide to do it yourself, make sure you thoroughly test everthing, especially the security.
posted by orthogonality at 7:46 PM on July 15, 2006


Starting with the LAMP technology base described above (meaning a PC compatible machine or server, with appropriate processor, memory and disk, and the Linux/Apache/MySQL/PHP software (Ubuntu, or Debian), you can set this up if you can carefully follow cut and paste directions. It will help a lot if you understand basic Unix ideas such as home directory, and the use of a common shell such as bash.

Once you've installed and configured LAMP according to the directions above, you've basically got a Linux server with mail and Web capabilities that you can manage remotely via a Web interface from any kind of Web browser. You can then easily install CMS packages which give you a great deal of Web functionality. You can research, compare and "try out for free" a large number of open source CMS systems at OpenSourceCMS.org One of the most popular CMS packages you can see on that site (that would have all the functionality you need, and more) is Mambo, and there are many "forks" or variations of Mambo by different groups of developers that have improved or specialized functionality.

However, if you are a complete novice with Unix or Linux systems, and not familiar with Web systems in general, the whole process may be understandably daunting. You can do similar things on Microsoft Windows server packages, such as Small Business Server, but you have a significant cost of licensing, and probably no less steep a learning curve. In either case, you can hire much of the setup and configuration done, if you have the budget. On the LAMP platform, I'd guess you'd be looking at 1 to 2 days of setup time for a competent Linux administrator to put such a system together. On the Windows platform, possibly 2 to 3 days, using SBS. But you may also need additional tech time to document the setup to your satisfaction, and to train you on administrative, operational, and security tasks associated with running your own Web server.

Another, perhaps simpler way of doing things is to choose to operate from a shared server hosting account operated by a commercial Web hosting provider. Essentially, you are outsourcing the operation and maintenance of your Web server to the host, and paying for space, bandwidth and services you use. Your choices of platform and application packages are limited to what the host organization will support, but it is pretty easy to find LAMP based host organizations that will help you install and configure most of the tools discussed above. You can certainly also find Windows based host companies with equivalent capabilities.
posted by paulsc at 8:21 PM on July 15, 2006


Get an intro book on PHP/MySQL and it will probably take you a week to build the "request time off" app. Any intro book will also describe how to make a "must login to see stuff" area of a website (which you could call an intranet, and everyone that works there should be able to access it via their login from any browser).

Read up on your web host's documentation to make 7 email addresses. Most places make this quite easy.
posted by mathowie at 8:50 PM on July 15, 2006


Do you have a domain already? If you do, look at what your registrar has available when it comes to web space and email, or move the domain to somewhere that offers hosted web space and email - which should be most of them.

I am thinking something a little less intimidating than what others have suggested above, as it sounds like what you need is pretty basic.

You should be able to find a webhost that offers both domain registration, a hosted website space, hosted email, and access to a MySQL database. With a CMS like Joomla, e107, or Drupal installed, you could do items 1 and 3 really easily, using the MySQL database provided by your webhost. I'm not sure I get what you mean by #4, so maybe this is too simple of a solution?

That being said, security is always key when it comes to this kind of stuff, particularly if you are going to put anything sensitive on the web. If you are a total novice, maybe it would be better to pay a professional to do it. You should be able to find someone to implement something like what you are talking about for not that much cash.
posted by gemmy at 11:48 PM on July 15, 2006


Agree with gemmy. If you're asking, you're not ready to tackle the problems that come with setting up and running an email server, firewall, network server, web server, etc., etc. There's just too much that can go wrong too easily. And besides, you're still going to have to pay for bandwidth... might as well let a hosting company do the legwork for you (keeping your system up and operational).

Most hosting packages will have some tiered structure that includes an MySql database + 50 email addresses for $xx / mo. deal. Nearly all of them will have a web interface so you can configure directory security and the like.
posted by Civil_Disobedient at 3:08 AM on July 16, 2006


Yeah, if you have to ask then you really do need to find someone to help plan the project, let alone do the work.

What you're after is basically web hosting & email configuration, a CMS for the site, and some sort of intranet/groupware for employees. Try to find a small local firm with a solid portfolio who seem helpful (rather than the arrogant geek thing) and get your company to hire them. I'm all for people trying new things and learning as they go, but if you bodge together all those things yourself you're asking for trouble.
posted by malevolent at 4:48 AM on July 16, 2006


« Older How do I learn magic?   |   reading in Russian Newer »
This thread is closed to new comments.