Our app is looking pretty good at this point.
The last thing I want to do right now is to make sure that we deploy all of our latest changes over
to Heroku.
So we've gone through this deployment process several times now and it's going to be no different this
time.
So I'm going to change back over to my terminal.
I've already killed my server and I'm going to first check and make sure that all of my work is ready
to be committed by running get status.
So here's a list of all the different files and folders that we've created in added or changed since
last time we committed will then run get add dot to stage all of these changes for Commit will run get
commit dash in and then a commit message for which I'll say users can see survey results.
I think that's good.
And then finally we will push all these changes off to Heroku with get push Heroku M..
OK so that's going to start up the deployment process in Kickoff that whole thing that we've now gone
through several times at this point.
Now one last thing I want to talk about around deployment just as a quick reminder when we put together
our Send grid web hook all that configuration over here saw the grid dashboard right now I'm logged
into send grid under the settings tab mail settings and we all remember we went through all this stuff
with event notification.
I want to remind you that at this point our second grade account is sending everything on over to that
local Tunnell web hook that we set up.
So this local time whole thing is going to direct traffic specifically to our laptop.
So in order for all this send grid stuff to work correctly in production like overon Hoku we would need
to make sure that this web hook instead looks over to production.
Now of course we probably want to have the ability to test out our changes or test out changes to our
application on our development environment.
And then also have the same application running in production as well.
However said grid unfortunately does not allow you to add multiple web hooks to use as addresses here.
So in order to really make everything work properly and with our application and send grid you really
need to make a second account a second account and then set up Web hooks on that one as well.
Now we've gone through the process several times now of setting up duplicate resources for development
and production.
So for this I'm going to say you know what I'm going to leave this to you if you really want to go through
and make sure that the web hook works correctly on development and production.
I'm going to leave it up to you to make this thing happen.
But I do want to remind you that as it stands if you deploy the application right now to production
web folks are not going to work because this is pointing over to our local server our local development
environment.
So you want to change that if you want to really have a finalized version of our application over on
Heroku.
Okay.
So enough of that now going back on the terminal.
It looks like deployment is complete.
So we'll run Heroku open to check out our application and just make sure everything is working to some
reasonable degree.
Okay.
So I will go over to my dashboard.
I don't have any surveys right now so I'll make a new one.
Now I certainly can make surveys.
I'm just not going to receive any of the clicky events from these send great accounts.
So we'll say test survey I'll use dev e-mail me at gmail dot com again next send survey.
OK here's the survey and then I should be able to go over to my e-mail inbox and see the test survey
pop up.
Cool.
So looks like everything is working very well on production as well.
Now certainly I could click this link right here.
But again I'd say for the third time Nuro remember that the web hook will be sent to our local environment
rather than to the Heroku application which is what we probably want.
So I would say for a third time I'm going to leave it up to you to take care of that.
OK.
So at this point this is pretty much you know where we conclude the main development of this application.
Of course however there might still be tons of different features we can add to this application and
you're probably thinking Steve.
That's it like we are we can do X Y Z or x y z.
Well you know what.
Obviously there is a ton of different features that we could possibly add to this application but we've
already been talking about this for a very very good number of hours.
And so at this point I'm going to say I'm going to give you a couple of different options on some ideas
on how to expand the app and I'm going to let you kind of take it away and do some development on your
own.
Now when I do give you these suggestions I have not necessarily gone through and implemented all them
inside the application by myself.
So I'm not necessarily going to be able to you know help you in great detail if you ask me a question
about how to do one of these expansions or one of these extra features I'm going to suggest to you but
I can at least give you maybe a little idea or two to get started.
If you have no idea on how to do it so of course do feel free to drop me a line if you feel like you
are completely stuck.
But again this is kind of the point where I want you to have the ability to add on some extra stuff
OK.
So here's a handful of suggestions on how to add additional features to the app.
Now of course this is not at all exhaustive list.
There's a lot of different things we could do the app but these are some kind of relatively straightforward
changes that are still relevant to the application that I've rated in terms of difficulty.
So I want to give you a quick description of each of these possibilities.
So we go from the first one down.
So the first feature is something that would really be around the front end of the application.
And I'm going to say that it's easy to add in now.
Easy is entirely relative.
You know I say user here that is relative.
In other words this might really be hard.
You know this might be hard to put together but compared to the other stuff on the list it is easy.
So might be hard but relative to other stuff it's easy.
OK so first one front end it's pretty easy to do just improve the design of the survey list card.
So basically that component that we just put together right here.
Clearly this is not pretty at all.
You know what we're looking at right here not pretty.
Now I think this thing could use a pretty good amount of work to kind of make it look a little bit better.
So some quick suggestions maybe rather than showing yes and no vote totals right here.
Maybe instead we show a nice bar chart that kind of says Here's the number of yeses and this is the
number of your nose or maybe show like a pie chart or something like that.
In addition we're currently showing these sent on date but you'll recall that inside of our survey model
we are also recording the last responded as well.
And so I think would be pretty easy and pretty straightforward to also tell the user Hey here is the
last time someone responded to this thing.
And then besides that you know just the styling in general could use a little bit of help.
So I think that that would be a good easy place to get started on the front end aspect of the application.
Now next one is towards the back end and I say backend because that's where most of the work would be
going into.
But there's definitely an to be a front end to component to it as well as what is going to be easy I'm
going to say add in the ability for users to be able to delete surveys that they have created.
And so this goes back to traditional crud applications or crud routes like create read update and stroy
at this point we really just have create and read obviously would be kind of nice to be able to give
our users the ability to delete surveys after they've created them next.
This is a feature for both the front end and the back end.
So maybe allow users to specify the From field on survey emails.
You'll recall that right now whenever we receive an e-mail inside of our inbox right here the email
is always marked as being from no reply at e-mail dot dotcom.
Now this field right here is a 100 percent customizable.
When we create the actual email and you recall that we specified that inside of our mailer inside of
our services directory.
So our services mailer J us and inside of here we specified from email and we passed in the string of
no reply at email a dot com.
Now that's not something that's super ideal like.
In reality it might be nice to allow these people who are creating surveys to dynamically specify where
responses should be sent to.
Because if you know it's great to have these yes and no buttons but chances are that our users would
also want the ability to capture text input from their users as well.
So maybe we would want to make sure that they could you know write in some response here and then send
it to some actual email that the customer gave to us.
And so this would definitely be something that would be a little bit of work on both the front end and
the back end of the application.
So essentially we would want to make sure that the survey creation forum had a spot to add in the From
address we would want to make sure that that from address was stored in our survey model and we would
want to make sure that we use that from address whenever we put that mailer together.
Now the next one is specifically on the front end.
This is around medium difficulty.
And so this is a little bit more on kind of a classic react and redux side of things basically allow
client side sorting of surveys.
So we just said hey let's kind of flip the order of all these surveys and make sure that the newest
ones show up on top and be kind of nice to have maybe a C or series of buttons up here that allows the
user to sort the surveys by the date they were sent the date that someone last answer to it or maybe
the number of total votes or something like that.
You know that kind of feature would definitely be probably very well appreciated by our users.
And then finally misses the mega one says front and back end and it is very much very hard.
So I had originally wanted to put this feature into our application but I'll tell you it probably would
have added at least like five hours worth of video to do all this stuff and so at the end the day I
decided you know it's just a little bit too much we could have done that.
But if we did it we would have had to drop some other features.
So it's kind of a tradeoff here.
So this feature that we were going to do in this course what we eventually kind of dropped out was to
allow users to create surveys in draft mode.
So I want you to imagine for a second that you are using our application and you go to create a new
survey and you start you know filling this thing out.
And you've now put a lot of work into your campaign title your subject line and your email body right
here.
But maybe you decide you know what it's the end of the day.
I don't want to do my recipient list.
I want to figure this out.
At some point in the future but you might not want to lose all of the effort that you've put into all
these fields over here.
And so this feature suggestion would be to allow a user to create this survey in draft mode or in other
words kind of like have a button here that says Save and attempt to like send this thing out later like
don't send the e-mail right away.
Just save a draft of it right now.
We will allow the user to come back later entering the recipient list here and then click next and actually
send out the survey.
So in other words give our users the ability to create a survey without e-mailing it and then come back
later on and edit the survey make changes and then eventually send it out and email it off to all these
different people.
So again this would have been you know it's very hard.
I would definitely classify this as hard because you're going to do a lot of kind of digging on your
side to figure out how to approach this.
But I want to throw it out there is a possibility of something that you could probably expand inside
the application to add on and give yourself that added functionality.
OK.
So again just a couple of high level suggestions.
You know this is not an exhaustive list.
I just wanted to give you a couple of ideas on how you might continue to work on this application.
So at this point I think that we're pretty much wrapped up with the application.
So that's pretty much it.
I hope you enjoyed putting this thing together.
It was a lot of fun to do a lot of fun to put together.
I hope I didn't repeat myself too often through the course.
You know I apologize when I do that.
But you got to keep in mind that when you're listening to someone talk about something for so long you
kind of sometimes need that repetition to remember things.
But hey I'm not going to excuse.
I don't want to make excuses.
At the very end here.
So I hope you enjoy the course.
I hope you enjoyed the OP and I hope to see you in another course at some point in the future as well.
So I'll catch you later.