I Need Help Making An App For My Company...

Discussion in 'Mac Programming' started by LinksAwakener, Jul 26, 2011.

  1. LinksAwakener, Jul 26, 2011
    Last edited: Jul 26, 2011

    LinksAwakener macrumors regular

    May 31, 2011
    If this is the wrong place to put this, please kindly guide me in the right direction. My questions aren't Mac-specific, but I'll be using a Mac and my app would definitely need to be Mac-accessible. In any case, I find users on this forum most helpful and knowledgable, yet not shy in enforcing tough love when necessary.

    I'm in a small pickle. A little more than a year ago I set up two servers for the company I work for. One Ubuntu server that handles email, FTP and web hosting, and a second Windows server that handles employee time and expenses. Both the email and time/expense system have web app access which I didn't develop, only installed. They now want me to set up a weblog which allows anybody to view it, certain people to upload/edit blogs, and a separate page that displays a contact list for employees only (superset of the editors).

    I can easily do this with [insert generic blog site here], but I would like to take this opportunity to impress my bosses by making a system myself (in my relatively limited free time) that I'll be able to add additional functionality to. So...I come here for help and opinions. Info on demographic: One of my bosses is Apple-exclusive (arguably my favorite boss), everybody else in the company is Windows and Blackberry/Android.

    Here's the plan: To develop a web app that has user profiles, including user icons if feasable. There would be at least two different account types, perhaps three: Admin/Publisher, Employee, General User. Publishers are allowed to add/edit blogs, and edit the contact list on another screen. Employees are able to view everything but not edit. General User would be able to view the blog only. Later down the line, I want to implement a forum using the same account data, and HOPEFULLY be able to replace the current webmail app.

    The potential problems: It has to be on a Linux server. I suppose I could put it on the Windows server, but that will kill the ability to access email as they are on seperate machines. Because there is a login system as well as blog entries, one way or another I would need to have persistent data...this would require access to the file system, correct? I want to be able to access this using an iPhone or Android phone, including posting blogs/forum threads (developing a second interface and releasing it on the App Store/Marketplace is no issue, I just don't want to cut off the potential by, for example, using Flash). The user account data and login method would need to be secure, not plaintext. Bonus roadblock--I'm not sure how current email and account data is stored for the email server...even though I set the server up. :eek: So I would need help figuring this out in order to replace the webmail app. This part, of course, is later down the road. I just wanted to ask it in case somebody knew the answer off the top of their head. If nobody here knows, later down the road I'll ask on a Linux forum, so no worries.

    The underlying questions: What IDE/language would be best to program this with? How would I access the file system, if required? Or better yet, how would I implement persistent data without accessing the file system? Are any other interfaces required, like PHP or SQL, and how do I know if the server supports this?
  2. holmesf, Jul 26, 2011
    Last edited: Jul 26, 2011

    holmesf macrumors 6502a

    Sep 30, 2001
    Sounds like you are in over your head. It also might not impress your bosses so much as make them angry at you -- because effectively you'll have implemented a system that ensures they can never get rid of you.

    Sounds like you want to store things in a database. It's unusual to store this sort of information using directories / files in the file system. Most servers have PHP and MySQL installed, but if you had to ask the question of how to know if they are installed, you probably aren't yet qualified to program this solution (sorry).

    Sounds like if you want good answers you need to break this down into simpler more atomic questions.

    Also sounds like you should post this in the web programming section. Once the backend is programmed then you can proceed to program the iOS / Android front ends at which point you could post in the iOS programming section.
  3. LinksAwakener thread starter macrumors regular

    May 31, 2011
    I appreciate your reply! I'm definitely not in over my head. I can just as easily fumble my way through this and in the meantime implement the existing blog websites like WordPress while I develop my own solution. I just thought I'd ask a few questions that would arise during my development--in case anyone would be able to answer them for me so that I don't have to fumble through it. How would this solution prevent my bosses from getting rid of me? Anyone they hire as my replacement will know how to manage this type of stuff--i.e. sysadmins, all I would have to do is create a second Administrator account on the blog software and delete mine. I can't imagine this would anchor me in place in any feasible way.

    I figured a database would be necessary (especially for the login system) I would just prefer to stay away from it as I don't see this software being large enough to need a database--we only have about 30 employees, and very few of them spend more time on a computer than absolutely necessary. But it's better to implement the right solution over the easy solution...besides there's a great deal more documentation pertaining to database access than there is file systems.

    Allow me to clarify a bit: I'm almost positive the server has PHP and MySQL on it (it IS a mail server after all), I just can't explicitly remember if I installed them or not. I am entirely able to go through the server to see which packages have been installed, I just wanted to see if there was an easier means of attaining this data. Don't worry about my qualifications--I'm more than sure I can handle it. I set up the server myself a little over a year ago, and I've had 99.7% uptime. I do appreciate your concern, I was just trying to clear a few things up before I took the leap. Sorry for sounding more ignorant than I am.

    Oddly enough, my post was moved into this forum by a mod.

    You asked for more atomic questions. Well, you answered two of the four items I asked, so the remaining questions would be: which IDE would be best to program with, and how would I interface with the database [originally file system]. The second question has plenty of documentation online I'm sure. I'm more concerned about the former question. Specifically, what language would you recommend I use to ensure I'll be able to see it using iPhones and Androids, and what would be the best software to use to program within?

    I'm hoping that's simple enough, but if not let me know!
  4. macking104 macrumors 6502


    Jan 14, 2003
    California, USA
    I worked 5 years at Safeway.com (home shopping) where we were stuck using custom built sales software. Problem was that we couldn't update the software to meet growing needs of the division and fix security craters.

    If you build your own webblog system instead of using more readily supportable commercial/public domain software, how will the company update it later? If you impress your boss, won't another company make you a sweeter offer? Then the bosses would be pissed if they can't get support for the system.
  5. LinksAwakener thread starter macrumors regular

    May 31, 2011
    I work for a company that contracts programmers out to different companies. My job is creating custom software for companies. If they're replacing me, they're hiring someone who's able to take it over. If they can't find able hands to support the software then they've already gone out of business.

    Also I doubt anybody but internal eyes are going to see the software so impressing other companies isn't really on the table. Nor do I have interest in going to other companies--for my own personal, confidential reasons.
  6. wlh99 macrumors 6502

    Feb 7, 2008
    I agree that you seem to be in over your head, but will do my best to answer your questions as directly as possible. This may be a good educational project, regardless of if you succeed.

    This is a large project even for someone with lots of experience. I would expect it may take you a year or more, so be ready for that.

    I can't suggest an IDE. You are mixing a fairly large number of technologies, few if any will be compiled code. Most of your work would best be done in a quality text editor like BBEdit.

    If you choose to write some of the server side components in a compiled language like c or c++, then any IDE that supports that language would work. Most programmers on the Mac use Xcode.

    That said, if the server is a Linux machine, even though you might write the code on a mac, you would need to transfer the source files to the Linux machine and compile them with gcc on the command line. So again, a text editor might be easier. BBEdit lets you save the files to a remote machine, and you could SSH or telnet to that machine to compile them from your mac.

    Whatever server side language you choose will have API's to access a SQL database. Decide what server side language you will use, then google that language for sql support.

    You are mixing many technologies together. Here is a quick list of some you will need to know.

    HTML, and a client side scripting language like javascript. You are way beyond what an HTML editor will do. Expect to be writing HTML and Javascript by hand. Personally, I wouldn't even bother installing an HTML editor.

    While not strictly necessary, if you want your project to look good, you will need to know CSS.

    You will need to know how to make HTTP requests, the Post and Get methods. CGI programs you write will need to correctly format and make and accept requests.

    You will need to know how to set up your web server for CGI. This might be done for you already, but you need to know how it works.

    You will need to know how to set up a SQL database, create the tables, and make queries. There are lots of tutorials on this.

    You will need to pick a server side CGI language. PHP is very common, C and C++ work too. Any language you know really well and will run on your server will technically work. Again, several thousand lines of code-hand written. If you don't know any of these languages, PHP is easier to learn than C/C++.

    You will need to learn the mail system protocols. For a web app the email system probably needs to be set up for imap, not pop3. Your server-side software will need to communicate with the email system via this protocol. FYI, there is no reason your project needs to reside on the same server as the mail system. You could do all of this on the Windows box, or on a third box of your choosing.

    For the iPhone and Android front ends, I would recommend writing a web app that would run on both. That would probably be in Javascript, and would basically be a mobile version of the HTML/Javascript web page you wrote for the rest of the project. So basically the same thing but laid out in the browser differently for display on a small screen.

    Good luck. I would suggest installing an already made system, and spend the next year or so studying everything above, then tackle this project or a similar one at a later date.
  7. TastyCocoa macrumors newbie


    Mar 21, 2011
    While this sounds like a really cool project to get involved in for fun there are probably better (well, easier and shorter term) things that you can do than reinventing the wheel to impress your bosses.
  8. samwich macrumors regular

    Aug 5, 2007
    You mentioned using WordPress, but have you considered using that, Drupal or Joomla as a CMS. Based on what you described initially, any of these CMSs provide the ability to have users, profiles, different levels of permissions, blogs, forums and you can theme the site to be viewable in a desktop browser/mobile device.

    If you wanna do it yourself, it would be similar to building your own CMS from scratch which is typically done in PHP/mysql as others have pointed out.

Share This Page