Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

pmcorrea

macrumors newbie
Original poster
Dec 19, 2013
4
0
Hi everyone.

I know nothing on programming but am hoping to learn by creating my own program. But before looking into endless amounts of programming info, I would like to start with the most relevant topics that would pertain to my project. If anyone can clarify what these topics are I would be grateful.

GENERAL FUNCTION: My application would be a Point Of Sale application, based on the Mac but that can communicate with iPods/iPads, and sync information into the web.

SPECIFIC FUNCTION: Can process transactions, accept credit cards from iPods and iPads, place orders, track inventory and adjust as orders are placed, send orders to different monitors (ring up a cafe, sends order with recipe to barista display), create and handle different users and assign different privileges, perform calculations and display data on graphs.

What things do I need/need to know to make this work?
What would be the best languages to base this all on? (Python, ruby, c+, xml)
What is the best database to use? (SQL, pgSQL, etc...)
How do I integrate the credit card aspect?
Do I need web services?
Do I need a MAMP/LAMP? (to use with website?)

WARNING: I know as much about programming as a guy who is going car shopping and only knows different brands...doesnt know anything about performance or manufacturing. Don't be fooled by the lingo I am throwing out hahaha.

The questions I typed are just a few that come to mind, but if you have anymore information please tell me.

Thank you in advance.
 

ArtOfWarfare

macrumors G3
Nov 26, 2007
9,558
6,058
What you're describing sounds like a lot more than a program... it sounds like a whole collection of programs. You mention wanting it to work with iOS devices multiple times, but I'm a bit lost on what exactly you want the iOS devices to do.
 

wrldwzrd89

macrumors G5
Jun 6, 2003
12,110
77
Solon, OH
In order to make something like this work, you'd need at least 2 programs, one Mac and one universal iPhone/iPad. As far as databases go, OS X and iOS use SQlite internally for lots of different things, so you get support for it essentially for free - but you'll need to see if it supports what you're trying to do. By that, I mean SQlite is GREAT for local storage of database-like data, but less than ideal if the Internet is involved with the database. My language recommendations would be Objective-C for the two apps programming language, XML (encrypted if need be) for the data exchange parts, and whichever web language out of PHP, Python, and Perl you find suits your needs best. For payments, you're going to need to integrate with a payment processing service of some sort. There are lots out there - shop around. A MAMP/LAMP is VERY useful to have for testing what you're building, but isn't needed for production - production work should live on paid web hosting of some sort. Finally, you'll need Xcode (free from the Mac App Store) to compile the Objective-C code, and a membership in the iOS developer program (US $99 / year) to publish your iOS app to the App Store.
 

balamw

Moderator emeritus
Aug 16, 2005
19,366
979
New England
Have you looked at any existing solutions that implement some of the functionality you are looking for? If you can find one where source is available or it is otherwise customizable, I'd strongly consider going that route.

B
 

pmcorrea

macrumors newbie
Original poster
Dec 19, 2013
4
0
ArtOfWarfare...the iOS versions of the app would be the same as the Mac Version...just in iOS..meaning I would need the Mac version and iOS version to be able to communicate to each other. Hopefully that makes more sense?

Wrldwzrd89 you came me a lot of useful information! Can you provide me with resources that can show me how to integrate an app with a database? Also, goes objective c allow me to code for a user login system as I previously mentioned?
 

wrldwzrd89

macrumors G5
Jun 6, 2003
12,110
77
Solon, OH
Wrldwzrd89 you came me a lot of useful information! Can you provide me with resources that can show me how to integrate an app with a database? Also, goes objective c allow me to code for a user login system as I previously mentioned?
Integrating an app with a database in Objective-C has gotten much easier thanks to Core Data: Apple Developer Core Data docs. Objective-C can certainly support the user input parts of a login form, as it has a password widget and other form support widgets in its collection. Processing the login request is an entirely different story, though.
 

chown33

Moderator
Staff member
Aug 9, 2009
10,740
8,416
A sea of green
What is your primary goal here? Please be specific.

If your goal is to learn programming, then you've described an exceptionally large result that doesn't directly address that goal. You can learn to program by writing much smaller and simpler apps than a complete PoS system. What you've outlined would be a substantial set of tasks even for an experienced developer.

If your goal is to have a Point-of-Sale system, then what is the goal for that system? Do you intend to use it yourself, in your own store or stores? Or do you intend to license or sell it to others? Either way, your description of finished deliverables would take at least a year's worth of focused work for an experienced single developer, probably even longer.

If you only want to write a PoS system for your own use, please explain why that option is preferable to simply buying an existing system. Is there a compelling business reason? If not, what other reason is compelling enough to risk your business on?


Is there a time frame for achieving your goal (whatever it is)? Is one year too long? How about three? Five?

Is there a price limit on achieving your goal? That is, what is your cost budget, for what is clearly a significant development project?


It's fairly common for new or inexperienced developers to under-estimate the time or knowledge needed for a project, or to over-estimate their own skill or productivity. If you don't know how to do any of the tasks, your first goal should be to learn the basics of how to do them. This should give you a much better idea of how achievable the remaining tasks actually are. For example, if it takes you a year to write your first Mac app, then it would probably take several more years at a similar rate to create the full PoS system.

If your primary goal is to learn to program, then do that first. Learn Objective-C, write a few smaller Mac programs, then you'll have a better sense of the effort needed. After learning to program for the Mac, learn to program for iOS. The core language is the same (Objective-C), but the frameworks (libraries) are different enough that you'll need to learn them separately. Again, this will teach you more than just how to program for iOS, it will show you what kind of differences there are between what seem to be very similar platforms (OS X and iOS). From there you can go on to learn website construction, databases, payment processing, etc.

I suggest NOT trying to write any PoS programs for either OS X or iOS at these early stages. Writing diverse apps will teach you more, and you'll learn more of the fundamentals without having to build a poor foundation for POS that you only end up redesigning later (or living with despite a poor design).

On the other hand, if your goal is to own PoS software, then please explain what your time and expense budget is for this project.

As described so far, your project is a substantial task for a developer with experience in all the necessary areas. It would be insanely difficult and encompass years of work for a non-programmer. You don't know how much you don't know. You need to learn the basics of flight before you think about jumping in the cockpit of a supersonic fighter aircraft.
 

Sonnestah

macrumors regular
Mar 2, 2013
152
0
You should really start from the very beginning. Study algorithms, understand the concept, study security techniques, etc, then start actual programming.

You are going to deal with people's money and you don't want people easily exploiting your system.

Obj-C is limitless. Apple's flexibility on the other hand is not. You are going to have to read their guidelines as well, as they might reject your app(I think they don't like payments being made using something other than their own system, but I am not sure if this would be the case)

Your project is quite complex, if you are in a hurry, I would suggest hiring someone
 

rwdds

macrumors member
Jan 5, 2005
33
2
Philly
Filemaker Pro Advanced might offer the simplest solution. Be aware that what you have described might take well over a year to create from scratch. Better to hire an independent software developer or purchase a POS system that will fit your requirements.
 

pmcorrea

macrumors newbie
Original poster
Dec 19, 2013
4
0
Chown33

I thought taking the time to learn how to program and writing it myself would end up saving me money in the long run. This is more directed for personal use than for selling. But it seems as though its way more difficult than I thought.
 

mrichmon

macrumors 6502a
Jun 17, 2003
873
3
I thought taking the time to learn how to program and writing it myself would end up saving me money in the long run. This is more directed for personal use than for selling. But it seems as though its way more difficult than I thought.

The system you describe would be challenging for the average fresh graduate from a computer science degree. A very good graduate could build the system that you describe. But it would still be a 6+ month project to implement and test working on it full-time.

Starting from no programming experience to build the described system would take far longer even assuming that the individual had good aptitude for development work.

An off-the shelf point-of-sale software system for OS X/iOS can be purchased that start at less than $1000.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
I tried very hard to write a response similar to chown33s, but it felt sad and soul crushing the way I put it.

The thrust is this. You want to learn to program. You want to learn Objective-C. You want to learn SQL and some level of data design. You want to learn to write a multiple user system. You want to securely handle credit card payments. You want to write a networked application. You want both OS X and iOS client applications. You want to learn all of this while attempting to implement your first large system and put it into production. Then you want to stake a business and your customers' finances on you doing it right.

A year seems conservative for a from scratch implementation. Unless you value your time at $0/hr there is no way the opportunity cost of building this yourself is lower than buying an off the shelf system that is supported and works. The on-going support should not be dismissed. If you build yourself, it's on you to fix it when data is corrupted or the system goes down. Since you're just starting you will be at the limits of your abilities building in the first place, and supporting and fixing a system is generally harder than building it. This means that supporting the system will be outside of your abilities.

I would consider this as two problems:
1) I need a PoS system for a small cafe
2) I want to learn to program

If the only reason for 2 is to solve 1, now you only have problem 1 and you simply have to pay someone a bit for a working system. If you have other reasons for 2 you can pursue it independent of 1 using saner goals and avoiding external risks.

Good luck, whatever you may do.

-Lee
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.