4

I want to create a community around a current iPhone app I've built. It will allow registered users to upload and download small configuration or settings files, which are used in my app to customize functionality. These files are serialized plists (binary files around 500 bytes), but can be converted to a JSON or XML format if necessary.

I do not need an HTML front-end; I plan for it to be accessed only via my app. Files do not need to be private or secure. I do not plan to store or ask for any user private data--just a login and password.

I'm looking for tips that might get me close to my goals with the least amount of effort - I want to focus on the core functionality of the app, and have this as a stable feature that I can add to in the future if it is useful. I would of course prefer FOSS, but a commercial solution is not out of the question. Things like file sharing sites with apis, login ideas, and so on.

So, what software solutions are out there that I may not be aware of? I know that Drupal has modules to allow user logins. Is there something that would work not as a web app, but as a service only? Dropbox has file sharing and an API, but I'm not sure I could use it the way I'm intending.

In short, I could code this, but would prefer a pre-baked solution that would deal with things I may not have thought of. I am sure there must be something out there which I can use.

More Details, and what I plan on the service offering:

  • Registration of users via the iPhone, and all that entails (will code the UI myself--I just want an API to connect to)
  • Viewing of these files quickly and efficiently (the files were built with performance in mind, and this is a free app, so I would like to keep server costs down)
  • Uploading their own files, with a few integrity checks
  • Rating the files
  • Gathering statistics on usage (which files were downloaded most often), etc., to provide a way for the files to be ranked by rating, popularity, etc.
  • Optional - submitting revised versions of the files (a tree).
  • Optional but preferred - statistics on users (no. files uploaded, perhaps rewards system for sharing)

I'm just not up to date with current technologies and open source solutions. I have experience in SQL, relational database design, and have built backends in Java, so a custom solution is not out of the question. However, it's been a while, I'm not a security expert, and would prefer to not reinvent the wheel for what is a fairly simple project, so an off-the-shelf solution would be preferred.

akaru
  • 6,299
  • 9
  • 63
  • 102
  • If I can be more clear, please let me know. For instance, this similar question received at least five answers: http://stackoverflow.com/questions/605980/recommendations-for-file-sharing-cms – akaru Feb 01 '12 at 22:51

3 Answers3

1

Check out www.parse.com! It is absolutely brilliant for stuff like this.

  • After browsing the docs for a few hours...this is exactly what I was looking for. I had a feeling it must exist, but could not find it. I'm actually a bit irritated that it took so long to find out about this :/ – akaru Feb 10 '12 at 05:12
  • Perfect! This (parse.com) solves so many problems for me as well. Users, objects, Facebook login etc. are all handled easily. Even Push Notifications are a breeze. Glad I could help :) – Simen Øian Gjermundsen Feb 10 '12 at 09:41
0

You may want to look at source versioning systems like SVN or distributed systems like Mercurial or GIT. Both would be much better if the data were serialized to a text format, like JSON or XML as you mentioned.

  • Registration would need to be done by you of course
  • Viewing of files (including changes, of course) is quick and efficient. The interface can be done in a number of ways, even simulating command-line.
  • Uploading files will of course work, and changes made will be stored as diffs. Integrity checks can be done, for example, by Mercurial plugins
  • Rating the files probably can't be done directly unless you wanted an awkward hack involving parsing change entries or writing a plugin.
  • Submitting revised versions of files would work as that is the raison d'être of versioning systems.
  • Some statistics are made available in VCSs.

This is honestly a bit of a strange use for version control systems and not altogether elegant, but sometimes that's what innovation is about.

Charles Burns
  • 10,310
  • 7
  • 64
  • 81
  • Using a version control system is an interesting idea. I suppose the versioning would be a minor feature, and is not my main concern. I am primarily looking for a tried-and-tested solution to things like logins and community, as I fear by building this myself it will become a huge time suck. – akaru Feb 08 '12 at 21:39
  • I hope that a VCS would provide most of the "hard parts" and have a plugin infrastructure for the rest. Logins can be handled. Community functionality... Maybe a little tricky. It was my best answer, though. I wish I knew of something that was exactly what you are looking for. It seems like such a thing should already be out there. – Charles Burns Feb 10 '12 at 00:56
0

I suggest TikiWiki .

Pros:

  1. Out-of-the-box all you need to build a community. (See reference below for list of features)
  2. It's FOSS
  3. It has 200 active developers - so it really has a lot of momentum.

Cons:

  1. So many out-of-the-box features that it suffers from feature bloat. Configuration and initial set-up may be complicated.
  2. Not really oriented to mobile platforms.
Sean B. Durkin
  • 12,659
  • 1
  • 36
  • 65