For my "teach yourself Grails" project I’m building a little SMS Website gateway which I’m calling CyaThen. The idea is to be able to logon, select a bunch of users from your addressbook, and send them an SMS (or schedule one for later).

Turns out that this is quite a good little tester for grails, since I’m needing to:

  • Write a ton of simple forms for create/edit/delete messages, history, addressbook - all with database integration - and all with form validation* Implement a signup process (email integration, SHA1)* Generate XML for submission to the SMS provider gateway* Integrate commons-http to submit the XML to the gateway website* Customise the CSS with my own template

Here’s a grab of the latest workings:

 CyaThen grab

I estimate that I’ve spent around 20 hours so far and I’m nearly done. The last bits centre around integrating the addressbook selections into creating a new message. (I’d also like to integrate some Ajax into the new message dialog ala Gmail addressbook selection).

So far, I’ve given Grails a pretty good workout. I’ve hit two bugs (and one in Groovy) - all of which were fixed in two days (where do these guys get the time??).

I just can’t believe how much stuff I can do so quickly in Grails. I’m really having a ball. The listserv support is awesome, the doco is growing every day, and I really feel like I’m getting stuff done.

I’ve developed service classes (and test cases), I injected them into controllers, I’ve written custom queries (In grails you can query straight of your domain class using dynamic methods created for each of your fields, so you do stuff Account.findByUserId and Account.FindByUserIdAndPassword - how funky is that!), I’ve used regexp validators with custom error messages, I’ve written dynamic taglibs. Geez, this thing is a productivity machine.

Worth a look if you haven’t already… (will post up CyaThen for people to play with in a week or so - so you can get a feel for what Grails can do in a hurry).

Huge Props to Graeme and the gang for an outstanding contribution!

Glen.