Hacker News new | ask | show | jobs
by icey 5782 days ago
Hmmm. Here's a problem that I'm going to end up building a solution to if someone else doesn't do it first (and by all means, please do it because I am lazy and have enough projects to last me for the foreseeable future):

A CRUD application generator. You go to a page and define all of your models and basic rules. The models get defined in very simple terms - you give each model a name, and then define each field with dropdowns that define what each field is. If it's a foreign key, you select that in the dropdown. You can select validation for each field from a catalog of validations (phone number, email address, string min length of 5 chars, whatever).

Offer addins for commonly needed functionality - for example, I end up using authentication in just about every project and end up having to do a lot of work to get it up and running. So you could have plugins like authentication, private messaging (which would require auth automatically), a ticket system, whatever.

Also offer the ability to choose a theme before generating a project.

So a user can go to a site, define their models, add any addins they want and pick a theme.

Then in the final step, they choose a language and framework they want everything generated in: Python / Django, Ruby on Rails 2.3.x, Ruby on Rails 3.x, Python / Pylons, Scala / Lift, ASP.Net MVC; whatever templates you've gotten built.

When it's done, they get a compressed file (zip or tar.gz) that contains the generated application and some programatically created documentation that explains where everything is, how to change the important parts and how to deploy it.

There are lots of ways to make money with something like this:

* Charge for addins per project

* Charge for premium themes

* Charge a small amount per project (I like this option the least)

* Provide automatic hosting a la Heroku for projects - this would let people with a basic idea but no programming chops get something up in an hour or two instead of trying to find someone to explore the idea with them. For this you'd want to limit it to a subset of frameworks so that you don't have to have a lot of different production environments.

* Use a fremium model where people can generate x number of apps a month for free, but over that limitation charge some amount per month. People will try to get around this by registering with multiple email addresses if the product is good, but that's a great problem to have!

Although it sounds like you're probably somewhat freed from a profit motive while you're building this, which helps significantly. From a dev perspective it would be fun to learn enough about all the major frameworks to generate sites in them.

4 comments

If you're willing to go without Python/Ruby, then a hosted Drupal (and it's trove of modules) is perfect for this. Acquia (which includes Drupal's founder) was founded to fill this space.
Thanks, I hadn't heard of Acquia before. Unfortunately I personally need the ability to build out apps in different frameworks because I'll almost certainly be extending their functionality beyond CRUD operations and I'm not personally fond of Drupal.

However, I'll definitely be checking it out for simple throwaway stuff.

That'd be pretty cool.

Actually, when it's done a "publish to Heroku" button would be great instead of just downloading a zip file. Having Themes for rails would be nice. This would allow you to literally design and put up a scaffolded app in minutes rather than hours.

If I were you, run screaming from this idea.

I've seen this done a few times on varying scales (from form gen to whole app gen) and it's never been pretty.

Invariably, if you've got no previous experience with real business software, you'll get it wrong. Even if you have experience, you'll get it wrong. The database will probably be where you go wrong the most.

Also consider some of the basic hurdles. As soon as you've done iteration 1 of the app you need to customise it a bit.

Then you need to do iteration 2, the scope's increased. Do you rebuild using the tools and then reintegrate all those little customisations? Or do you stop using the framework? If so, what was the point of it in the first place? You've got a bunch of code that you're not sure quite how it works or where everything is. It's also not in your programming style.

The closest I've seen anyone getting to this is MS's Entity Framework and the scope of that is extremely limited compared to what's being suggested.

This is a timesink of good intentions that will produce the most horrific code.

You might be able to tell I've been on the receiving end of cleaning up after these things. I need to go shower just thinking about it. Feeling. Unclean. Urgh.

The idea isn't to keep the generated version blessed; it's to get up to a minimum product as fast as possible instead of wasting time issuing generation commands over and over again.

This is all pseudo-implemented already; I'm just talking about adding a little more automation to an already repetitive process.

Either way, it's a problem that needs solving; just because it's hard doesn't mean it's not worth trying to fix, right?

http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Compute...

I've tried for years working on it, and I even wrote a programming language (Kira: http://www.mathgladiator.com/projects/kira/ ) to solve this problem. I can attest that the problem... well, sucks.

If you want to get off the ground, then using a RDBMS isn't the way to go. The way I would recommend is to use object graph serialization then as the problems arise, use a database to index. I wrote about this here: http://blog.mathgladiator.com/2010/08/guide-to-databases-in-...

check out appnowgo.com