Hello,
Some partial answers to your questions:

This sounds like a small app which can run solely on App Engine and its 
related services. You will only pay for hours of actual usage + storage.
I recommend you use the Cloud Datastore as your database, which is easy to 
use and integrate from within App Engine.

If your PDFs are smaller than 1MB (they probably will be if you don't embed 
images in them) you can save them directly as an entity property in the 
Datastore, which will save you the need to integrate with Cloud Storage.

A basic tier for logging and monitoring is provided automatically when you 
use App Engine - see the docs for your specific environment (GO).

Using Google accounts will also save you time and provide you built in 
added security, integration from within App Engine is very easy (Again, 
look at the docs for your specific chosen environment).

Google App Engine now provides automatically generated and maintained SSL 
certs from Let's Encrypt, so you only need to buy a domain for your app and 
then link it to your project. See this page 
<https://cloud.google.com/appengine/docs/standard/python/mapping-custom-domains>
 
for instructions.

Good luck with your project.

On Saturday, February 17, 2018 at 6:46:20 AM UTC+2, John Davies wrote:
>
> Greetings everyone!
>
> I would like some advice about the best architecture and approach to 
> building an application on the Google Cloud Platform. This will be my first 
> application on the Google Cloud and first "Cloud Native" application. I 
> have a decade or two of development experience under my belt, but have not 
> touched a line of code in ten years or so. This included C, Java, 
> Perl,JavaScript, HTML, SQL. But I am unfamiliar with all the hip new 
> frameworks and I obviously feel a bit rusty when it comes to programming 
> now. I do still however work in IT so might still know a thing or two.
>
> I have tried to read a fair bit about GPC but find there is not too much 
> out there which shows how a whole solution would be put together - it is 
> mainly individual bits.
>
> A general description of the solution is as follows: The solution will 
> allow a medical practitioner to survey a patient and generate and email a 
> PDF report based on the answers.
>
> Now for a more detailed description of the flow:
>
>    - A patient is sent an email with a link to a web form The patient 
>    goes to the web form and fills in some personal details e.g name, email 
>    address, location and free text fields etc and submits this form
>    - A medical practitioner can see the list of people who have submitted 
>    forms for the particular patients location
>    - The practitioner goes to a location and interviews the patient.
>    - The practitioner answers a bunch of 15 predefined questions 
>    (multi-choice) with the ability to add some extra text if needed.
>    - They might interview 20 patients, one after another
>    - Later that day, once the practitioner has returned to the office, 
>    they then are able to generate a PDF report for each patient 
> automatically, 
>    which are based on the answers for each person and a whole bunch of 
>    predefined text and images
>    - They are able to review the PDF reports. Once they are happy, the 
>    reports are emailed automatically to the patient with the PDF attached
>    - Potentially as phase 2, the patient would login to the site and get 
>    to see their report in a webpage rather than a PDF
>
> *Medical Questions*
>
>    - The medical questions asked should be configurable, so that the 
>    administrator can alter the questions and also the text which would be 
>    written on the report based on the answers. e.g. question is "What is your 
>    favourite Colour?" Answers are: Blue, Green, Red. On the report, it would 
>    say "Red is a great color as it is deep and strong"
>    - The following month, a new question might be added - "What is your 
>    favourite food?"
>
> *PDF Report*
>
>    - The Report should be a PDF document
>    - It's look and feel should be very professional
>    - It will need to have the appropriate branding /styles
>    - The rough content would be:
>    - A introduction page which includes the patient name and patient 
>    details and some general text
>    - A page with results in a traffic light style depiction -.e.g. if you 
>    answered a question a particular way it might be Green with a description. 
>    If it was a negative answer then it might be orange or red colour with a 
>    different description.
>    - Several more pages of explanatory text
>    - The content will need to be modified by an end user as much as 
>    possible so a slight wording change would not result in the developer 
>    having to alter code
>
> *Usage*
>
> As my org is small, there will only be ~10-20 days a year when someone 
> goes and does interviews. There might be months in a row when it is not 
> used at all. There will be about 300 PDF reports made/year initially. So 
> volumes for the initial solution are very small.
>
> However, if people like it then we might offer it to other orgs to use so 
> my preference is for the the solution to be multi-tenanted and able to be 
> scaled up on demand. I know obviously then i will consume more resource and 
> it will cost more and thats fine as it is for a good cause.
>
> The idea is that this solution will reduce human effort from 1 hour down 
> to 5 mins for each report so the savings in labour will easily pay for 
> google resources and they will be able to help more people. If any other 
> organisation uses the solution they should not know about anyone else (i.e. 
> complete segregation)
>
> *Security*
>
>    - The practitioners already have google accounts (G Suite) for would 
>    be ideal to reuse those accounts as the authentication mechanism
>    - Other organisations which use the solution may not have accounts - 
>    so would be interested to know what can be done for them.
>    - Should be protected with SSL/TLS - the whole lot
>
> In my old world, I would have had a tomcat server with mysql and some 
> spring or hibernate or something like that with some basic JavaScript on 
> the front end. Being unaware of how to architect this for google cloud and 
> the modern front end frameworks, my initial stab in the dark is:
>
> *Platform Components:*
>
>    - Google Forms to capture the personal details (would doing this and 
>    then having my app have to read the data be easier than having to build 
> the 
>    forms on app engine myself?)
>    - Google App engine - standard edition (seems to be good for 
>    applications which could go down to zero instances often - which will be 
>    mine)
>    - Cloud SQL - mqsql 2nd generation (have never used nosql database 
>    before - which would be better for this kind of app?) Can this go down to 
>    zero instances when not in use?
>    - Cloud Storage - to store the generated PDF's
>    - StackDriver for logging
>    - Cloud IAM to manage users and what they can do?
>    - Not sure what I would need to get a domain name and SSL up and 
>    running?
>
> *Language & frameworks*
>
>    - 
>    
>    I am drawn to using Go, even though I have never used it. Simply 
>    because it is newer and lots of people seem to like it and i would get to 
>    experience something more modern. That being said, do you think one of the 
>    other languages would be more suitable to build this app?
>    - 
>    
>    Something like gopdf to generate PDF's
>    - 
>    
>    I have seen a whole bunch of discussion around whether you need any 
>    web framework when using Go?
>    - 
>    
>    And for the front end something like React?
>    
> *Effort*
>
>    - As all this is new to me, I am thinking 3 months in my spare time to 
>    learn and complete this... thoughts?
>
> Any thoughts as to if I am on the right path or not? Any suggestions as to 
> where I should read more to understand about how to solution for GPC? What 
> would you do differently? Where could I go to get some basic mentoring as I 
> go through this development (paid/unpaid)?
>
> I am hoping that any answer/discussion around this would also help other 
> people understand about how to create an entire solution in GPC.
>
> Thanks!
>
> John
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/baf846c4-ecd5-45f8-bc0a-eaf324d167e7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to