Designing a Doc-Centric Web App

Dan Shafer dan at shafermedia.com
Mon Aug 18 20:00:01 EDT 2003


I have built a Web application in Zope and Python over the past year or 
so. The application has become so complex that maintaining it is 
becoming a bit nightmarish for me. I'm spending far too much time 
wrestling with the app framework (Zope) and syntax (Python accessing 
Zope Object Database) than I am solving problems for the client. I have 
also realized that using an OO database was overkill, and that decision 
is part of the reason for my current feeling of being trapped inside 
tiny, twisty passages.

This application needs to allow its primary user, who is a professional 
facilitator conducting a process interview with a client, to:

1. Log in securely (to the app and/or the Web location)
2. Create a new document on the server (transparently to the user, who 
is decidedly NOT technical)
3. Update the document on the server as he or she asks questions and 
receives responses (i.e., the document needs to replace or update 
itself on the net as the user requests that it do so)
4. Locate and retrieve documents from the server, limited only to those 
created by the particular user, and either view, print or revise those 
documents

One other user, the supervisor, needs to be able to access all 
documents regardless of which interviewer created them, and review, 
print, or revise them.

The only tricky part is that there are two stages in this interview 
process where the precise number of times the question has to be asked 
and answered is not known in advance.

I want to create a desktop app in Rev that will handle all the UI, data 
validation, and communication with the server. I have already designed 
the window and its screen contents as well as the interaction.

The issues I have relate to the interaction between the desktop app and 
the server from a Revolution perspective.

1. Security is a significant concern. The interview data contains 
highly personal information about the interviewee. I suspect I'll want 
to use SSL for the Web connection but it's not clear to me what if 
anything I need Rev to be able to do to handle SSL and whether there 
are any gotchas lurking there.

2. I particularly do not want to send login ID and password for the 
facilitator in the clear. What encryption issues will I encounter in 
Revolution? Are there encryption algorithms that already work in Rev or 
will I need either to hook into an Open Source solution or roll my own?

3. Does anyone see any major issues, problems, concerns, or flat-out 
roadblocks I should think about as I re-design this app?

4. One of my big issues is that if I design this as a document-centric 
app -- which it seems to want to be -- I won't be structuring the text 
much, except perhaps for display purposes. As opposed, e.g., to 
producing a mySQL app (which I could do but which seems like almost as 
much overkill as my current Zope solution), where the data would be 
stored presumably more efficiently. But since I *never* need to 
retrieve only part of the document, it seems most useful from a design 
perspective simply to treat it as a document.

OK, I'm shutting up now and listening for input.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dan Shafer, Revolutionary
Author of forthcoming 3-book set,
"Revolution: Programming at the Speed of Thought"
http://www.revolutionpros.com for More Info




More information about the use-livecode mailing list