[ANN] Myowndb: a web database built with rails


#1

Hi all,

I wanted to announce on this list that I have launched
http://myowndb.com which
is a web database built with Ruby on Rails.

The application lets the administrator users define the data structure
through
a web interface like in a normal database, with:

  • tables
  • enhanced datatypes like emaili, web URL, and a choice in list
  • relations (one to many, one to one) between tables

Once the data structure has been defined, a web interface lets users
manage the
data in the sense that they can:

  • enter new data
  • update existing data
  • delete obsolete records
  • search the stored data
  • link records of the different tables according the relation
    definition, with
    enforcement of one to many or one to one relations.

Highlights of the applications are:

  • ajax use to ease filtering of any list
  • ajax use to link records: easily link to a new or existing record.
  • search form built dynamically to display only fields available in the
    searched table.
  • multi lingual: currently english and french are supported. It uses a
    Rails
    plugin to be released soon. The whole application is translated, and
    data
    structure will be translatable later on (table and field names will be
    translatable)
  • data types are displayed accordingly: a web URL field will be
    displayed as a
    link, an email field will be displayed as a mailto link, a choice in
    list
    field will be displayed in a drop down list.
  • data is password protected, but a public form can be made accessible.
    An
    embeddediable version of the form will soon be made available. This
    could be
    used for collecting visitors data on a website, as this form can be
    included
    in a webpage with 2 lines of html.
  • live ajax validation when applicable (eg, if an invalid email is
    entered, the
    field is marked in red when the focus leaves this this field).
  • drag and drop used to reorder fields of a table (order is used for
    columns
    order in lists, and for filters drop downs, so the first field becomes
    the
    default filter criteria for lists).
  • integrated help (can be switched off)
  • multi user

Much much more features are coming, and this announcement is only the
start of
the application. Future developments will be prioritised according to
user
requests. Possible features (non exhaustive list):

  • make databases public for reading, so you can share your data
    instantly
  • add field types like file attachments, pictures, etc
  • enhance data validation
  • develop search functionalities
  • add advanced reporting
  • publish APIs
  • add database functions (MAX, MIN, AVERAGE, …)

A demo account and several screencasts are available, check on
http://www.myowndb.com

Hoping you’ll enjoy the application. Let me know what you think!

Thanks

Raph


#2

Impressive application. I like the idea of creating a database to manage
small amounts of data. Also the specialized data types is a great idea
(email, link, etc). After signing up I was able to create a Contacts
data
base with a Contacts table in about 5 minutes. Not too bad.

Some improvements I would suggest:

  1. Too many clicks to create fields in a database. Woudl be nicer to
    have
    that all as one form.
  2. Combination of AJAX adding fields & traditional postback can make for
    some weird results. Example: Add two or three rows to a table, then
    click
    “view entity” on one of the tables. Click back button to go back.
    Result:
    original state of table is displayed and it looks like the table has
    lost
    your entries (using Firefox 1.5 btw)
  3. Green help is pretty jarring. I would suggest finding a designer to
    give
    this a once over.
  4. Finally, too “engineery”. I’m not sure who your market is, but almost
    no
    one outside the programming community will understand parent-child
    relationships, tables, databases, etc. I would find different terms that
    are
    less intimidating and more intuitive.

Great start - good luck with it!

Justin


#3

signed up, looking good m8

couple of things:

if i create a table ‘bookmarks’ i get a link to ‘Add a new bookmarks’
not ‘Add
a new bookmark’, you need to sort out the pluralization

i cannot edit the field type whilst creating the table - unless i’m
missing
something, haven’t had a chance to check out the screencasts yet


#4

cool job,want to study the source…


#5

On 4/4/06, Justin B. removed_email_address@domain.invalid wrote:

some weird results. Example: Add two or three rows to a table, then click
Great start - good luck with it!

Thanks Justin! I’ve taken note of your comments and will look at
integrating them further developments.

Raph


#6

Great application. Just for information, how long did it take you to
code
this first version?


#7

On 4/4/06, Scott M. removed_email_address@domain.invalid wrote:

signed up, looking good m8

couple of things:

if i create a table ‘bookmarks’ i get a link to ‘Add a new bookmarks’ not ‘Add
a new bookmark’, you need to sort out the pluralization

Hehe, that’s indeed a problem I want to correct. I want to use Rails’
inflections, but I need to have separate inflections for each
language, which wasnt straight forward. ( but I could already use the
default inflections for the english version, that’s right)
If you look in the archive of the list you’ll find 2 post from me about
this :wink:

If someone already did this, I’m interested.

Cheers

Raph


#8

On 4/5/06, Nicolas B. removed_email_address@domain.invalid wrote:

Great application. Just for information, how long did it take you to code
this first version?

Very hard to say the time I spent on it, as it began as an experiment
one year ago, and development has had its ups and downs. I have also
learnt Rails with this project (but I knew ruby). I initially hoped
to launch the app in september, but then took a lot of time to ensure
I had a solid base before going public, every x weeks having an idea
of what I should add. (And organising FOSDEM didn’t help either :wink:

But the structure is very flexible now, and to give you an idea,
adding the data type “web url” with its custom display as a html link,
to me exactly 15 minutes.

I’m sorry I can’t give you precise answer as I haven’t counted the
time spent on it…

Raph


#9

Hi
I have a question, why do you implement by yourself the translation
instead of one of the libs already avail?
I’m starting to use Globalize and could be good have a second though.

thanks
Hernán


#10

On 4/5/06, Hernan F. removed_email_address@domain.invalid wrote:

Hi
I have a question, why do you implement by yourself the translation
instead of one of the libs already avail?

The first reason is that when I implemented my translation code,
globalize was not available (or I wasn’t aware of it anyway, I
discovered it with David’s post on the Rails Weblog IIRC).
But when I took a look at globalize, I didn’t switch because:

  • adapting my code would have taken a lot of time
  • globalize does things I don’t need ( I don’t need translations at
    the model level), but does it do all I need? (see features below )
    -I wanted to be able to pass the language to translate to as a
    parameter to the method
  • I not only have the code to display translations, but I also have a
    little app to manage the translations, with links to the pages where
    the translation appears, so that translators easily can see where
    their translation will be displayed, and with display of the
    parameters passed to the translation.
  • I needed to have different scopes for the translations, so that
    users can translate their (eg) tables names without interfering with
    the application’s translations. So a funny user can’t assign the
    translation “no” to the word “yes” in the whole application. :wink:
  • I wanted to be able to put some html code the translations. I
    imagine this can be seen as evil, but can be useful when used
    cautiously (for example for the page at http://www.myowndb.com/info ,
    all the “latest news” part, including the link, is the translation of
    one term)

On the other hand, Globalize does have things I miss in my code, most
notably pluralisation rules.

I’ll release the plugin as soon as I can, hoping it can help others.
(I haven’t tried to use it outside of my app, so I can’t promise it’ll
be useful :wink:

Raph


#11

Looks cool! I created an account and a couple of tables. I have some
questions:

  1. Are id fields autogenerated, or must they be specified explicitly?
  2. I’m uncertain how to set a relationship between tables. Are you
    asking for the linking field in the source table or the destination
    table? A
    brief tutorial and/or a few examples would be helpful.
  3. Recieved a duplicate field name error when attempting to create
    two
    tables with a column named ‘name’.

-Larry
On 4/5/06, Raphael B. removed_email_address@domain.invalid wrote:

  • adapting my code would have taken a lot of time
    users can translate their (eg) tables names without interfering with
    notably pluralisation rules.

Hernán

On 4/5/06, Raphael B. removed_email_address@domain.invalid wrote:

If someone already did this, I’m interested.

through a web interface like in a normal database, with:

  • delete obsolete records
    in

translatable)
could

columns order in lists, and for filters drop downs, so the first
to

removed_email_address@domain.invalid

Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails


Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails


Best Regards,
-Larry
“Work, work, work…there is no satisfactory alternative.”
— E.Taft Benson


#12

On 4/7/06, Larry K. removed_email_address@domain.invalid wrote:

Looks cool! I created an account and a couple of tables. I have some
questions:

Are id fields autogenerated, or must they be specified explicitly?

id fields are generated and used internally but not displayed.

I’m uncertain how to set a relationship between tables. Are you asking for
the linking field in the source table or the destination table? A brief
tutorial and/or a few examples would be helpful.

Could this link help? http://www.madb.net/info/presentation/demos
There’s a demo about linking tables.
You indicate which table you link to, give a name to the relation in
both directions, indicate the type of the relation (one-to-many,
one-to-one, many-to-many) and you’re set. Internal ids are used to
link entries of the tables.

Recieved a duplicate field name error when attempting to create two tables
with a column named ‘name’.

In the second table, add the filed with the button “Add field based on
existing detail” and use the detail “name”. You then add a field with
the same characteristics to the second table.

A field in a table has its characteristics defined by a detail (which
has a name and a type). It is particularly interesting to reuse
details in the case of “choice in list” details as you don’t have to
reenter all value propositions. Eg, you can define a detail named
“yes-no”, and reuse it in multiple tables. A current limitation of the
implementation is that you can use a detail only once in a table, but
it is planned to correct this. The error you had is because you can’t
create 2 details with the same name in one database.

As often, you’ll see the usage of this is easier than to explain it :slight_smile:

Raph


#13

VERY nice! I was looking for just such an application about a year ago.
I found many “Data Form” type sites but none where you could actually
define tables and relate them together.

Good job! I hope you have much success with it.


#14

The demo helped, thanks.

So, I’m not specifyng the linking field. I just need to label the
relations.
MyOwnDb will discover the linking column names and create the correct
linking code, for the specified relationship. Pretty slick!
-Larry

On 4/7/06, Raphael B. removed_email_address@domain.invalid wrote:

I’m uncertain how to set a relationship between tables. Are you asking

details in the case of “choice in list” details as you don’t have to

discovered it with David’s post on the Rails Weblog IIRC).
parameters passed to the translation.

though.

this first version?
bookmarks’

default inflections for the english version, that’s right)

Hi all,
list

  • search the stored data
    available
    field

list field will be displayed in a drop down list.

  • live ajax validation when applicable (eg, if an invalid
    field

user requests. Possible features (non exhaustive list):



http://lists.rubyonrails.org/mailman/listinfo/rails
Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails


Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails


Best Regards,
-Larry
“Work, work, work…there is no satisfactory alternative.”
— E.Taft Benson