What I learned while creating TravelViewr

All of the new things I got to do while creating my Senior Project

April 23, 2014, 8:36 p.m.

During the process of creating TravelViewr, I learned a lot about the full stack of a web application. I previously had an intermediate understanding of Django and was able to successfully do most of the basic CRUD operations, but TravelViewr contained a lot of server side programming that went beyond that. I also learned more about Javascript for my client side code and AJAX to asynchronously transmit data between the two.

Utilizing 3rd party apps

I learned to use multiple new apps while creating TravelViewr. I started by using python-social-auth to add Facebook support to my app. I learned how to utilize python-social-auth and how to make an application on Facebook's developer section. I then learned how to interface the two together to allow users to login to TravelViewr with Facebook. I utilized django_countries and localflavor in order to create user friendly drop-down lists for creating a vacation, as well as pulling in the country flags to show on the vacation page. I also used grappelli to make my administrative backend nicer looking and easier to use. This was the first time I utilized any of these 3rd party apps, and they all required documentation reading and a little bit of custom coding to make them exactly how I wanted.

Django logo

Server side programming with Django

I learned quite a bit about Django itself while creating TravelViewr. I created many views that did not have templates but simply did something, like create a profile with a default picture, and redirected to another view. I overrode the init method of one of my forms to allow for an additional parameter to be passed in that I could use to list only a users friends for the choice field. I then had to use a classic function based view to handle my form instead of the more familiar class based one in order to actually pass that parameter in. I learned how to keep a database persistent, along with the help of django-south, by designing it so that huge changes to the schema are not necessary, and to think about each database change you make before hand so that everything is extensible in the future.
Bootstrap logo

Better layouts with Bootstrap

I learned to use a lot of new features in bootstrap, including modals, carousels, and wells. I used bootstrap to make TravelViewr look better and cleaner. One of my favorite features is the modal pop up window. It simply dims your screen and puts a little modal window with whatever content you want in it in front of the rest of your content.
AJAX logo

Client side programming with JavaScript

I learned to use JavaScript to create a more interactive experience for users. I pretty much hooked up all of my buttons with some sort of JavaScript to either toggle a modal window, or submit a form. I also used Isotope.js to position elements like the mini-calendar and the photos and videos. I utilized spinner.js to create the spinner on the photo upload page to let the user know that it was working. I also learned how to use AJAX to asynchronously handle requests. I learned how to use it to submit form data without need to refresh or go to a different page, and I also learned how to use it to get a JSON response from the server in order to supply the user with their new notifications without the need to refresh anything.

Deploying to a Web Faction server

I chose to use Web Faction as my hosting provider for TravelViewr. I learned how to setup my application on their servers including setting up an email account and making Django work properly. I also chose to purchase my domain name on namecheap, which required pointing that name at Web Faction's name servers. I also learned how to create a settings file that adapted itself to my local development environment or the server environment just by modifying a boolean value.

General application development

During the development of TravelViewr I learned a few things about application development in general. I learned that the more time you spend at the beginning of your project hashing everything out and thinking about all the ways you could go with the project, the better off you are. It becomes complicated to change features once they already exist, but when they are in a conceptual state it is a lot simpler. I also learned that when you beta test your application you should take everything the testers say into consideration no matter how strange it seems at first. If you have been developing the application for a few months or even a few days you can get so caught up into it that you don't even realize that a new user will not understand what they are supposed to do. Even if it seems obvious to you it is not always obvious to your users and you should listen to your testers.

Comments about What I learned while creating TravelViewr

No one has left a comment yet, be the first to voice your opinion on What I learned while creating TravelViewr!