On Mon, May 28, 2012 at 12:28 AM, KevinE <kelb...@elburyconsulting.com> wrote:
> Not a web developer but have a bit of software savy and looking to develop a
> custom app for use in my business which is consulting engineering. I want to
> develop application that helps me in documenting inspections I make on a
> jobsite. Basicly what happens is I would go out with a tablet and use my
> webapp to collect and document construction progress mainly to document
> construction deficiencies and monitor progress of construction. From the
> data collected on the job site I would push this data through a reporting
> engine to prepare a pdf style site review report which would get emailed to
> the project architect, all the consultants, owner and contractor - the
> intent is to have this happen while on the job site. On the office side I
> want to develop a basic project based document management system where I can
> document when field reviews were conducted, summarize deficiencies and also
> ensure that deficiencies are completed and signed off on (as the engineer I
> take legal responsibility for all the deficiencies). I also want to be able
> to manage all my projects find projects by client, owner, architect etc.
>
> By the looks of it Django should be able to do all this but the one issue
> that I am unsure about is an offline mode. The idea is to have a tablet with
> a data connection but if there is no data connection I still need to
> complete the forms and cache the data until it can be sync'd later on. From
> what I have read, data syncing can get a bit knarly, something I don't want
> to get into myself.
>
> I envision a custom android app for the tablet - for this I need access to
> the GPS and camera (my ultra cool feature will be my tablet automatically
> pulling up a project page as I drive up to the job site based on the GPS
> coordinates!). Will this be a web page or will it be an actual app?
>
> Guess I am looking for some basic advice on how to architect this with the
> above issues in mind.

>From what you've described, Django will certainly be able to help out
here. However, you're going to need to combine Django with some other
tools to solve all your problems.

Django is a server-side framework -- that is, it deals with the
database and web server that doles out content to whatever client asks
for it -- be it web browser, mobile app, or whatever. In terms of your
problem, that means that Django will be able to provide the interface
by which data is submitted to the server, store the data that is
collected, and provide a web presence to serve that data back to
users. Django doesn't have any built-in PDF generation capability, but
there are a lot of Python libraries that can be used to generate PDFs,
and it's easy to use Django to extract data and feed it into a PDF
generator. Django's documentation contains some simple examples of how
this can be done. [1]

[1] https://docs.djangoproject.com/en/1.4/howto/outputting-pdf/

So - Django will be great on the server side. However, the bigger part
of your problem is the client side, and that's an area where Django
has deliberately avoided offering a solution, so you'll need to
combine Django with some client-side tools that are able to:

 * Provide access to the camera and geolocation features of the device you're on
 * Store data on the device while there is no live access to the server
 * Cache updates on the mobile device while offline for delivery when
it comes back online.
 * If necessary, synchronize updates made on the mobile device with
updates on the server

Features like geolocation and offline access can be implemented in
native HTML5 without the need to build an app at all; see
http://html5demos.com for some examples of the cool things you can do
on webpages with a modern browser. You can also use a HTML5-based
development approach embedded in a native app container; for example,
tools like Phonegap [2] and Appcelerator [3] are designed to help out
here.

[2] http://phonegap.com/
[3] http://www.appcelerator.com/

I can't say I know of any libraries that can be used to address the
synchronisation problem -- but then, I haven't really been looking for
one either. It wouldn't surprise me if there is something out there
that you could use, but if it does, it's got very little to do with
the Django side of the fence -- all Django cares about is that you're
using HTTP to communicate with the server.

So - in summary:
 * Yes, Django could be a useful part of your tech stack to do what
you're describing
 * However, it won't solve the problem on it's own -- you'll need to
pick a client side framework too.

Yours,
Russ Magee %-)

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to