What I am attempting to do

A short description on the project idea.

Project Overview

We are living in the age of technology where the internet has revolutionised the way humans communicate, share experiences and interact. For my 'Web Scripting and Application Development' Project, I will be attempting to build a 'TravelDiary', a community driven web 2.0 website where users can upload and share their travel experiences. The website will be designed and developed based on features that are normally found in blogging systems with the difference that it will be designed to cater for information related to travelling.

The posts submitted by the users will be published to a 'Traveller Posts' page within the website for anyone to explore. Users would need to create a new account or login with an existing account to access the following features:

  • Uploading new posts
  • Commenting on existing posts
  • Liking existing comments
  • Staring posts as favourites

Registering is easy, the website requires the users to simply input their full name, email address, password and country. The authentication system will be designed in a way to only allow users to register with a unique email address and once registered they can start contributing to the website.

Once logged in users will be redirected automatically to the 'My Account' page where they can manage their account by deleting existing posts, adding new posts & managing their favourited posts. A logout button will be available on all the pages for the user to click when they would like to stop accessing logged-in features within the website.

Traveller Posts

Each user can upload as many posts as they would like, and they would need to provide the following information:

  • Post title
  • Select the date visited
  • Select one or many countries visited
  • Rate their experience
  • Select one or many tags, to be used to categorise the post, for example: Budget Travel, Beach, Activity etc…
  • Short description, to be used on the 'Traveller Posts' page
  • Long description, to be used on the 'Single Post' page
  • Upload one or many Images and giving them a respective title, these will be displayed in an image slider on the 'Single Post' page
  • Add on or many stops during their trip, these will be featured in a map on the 'Single Post' page
  • Overall weather conditions
  • Additional information

On the 'Traveller Posts' page users will be able to sort the public posts by rating, date visited, post title etc… and they would also have the functionality to search by title, description, countries and tags. Share buttons will also be available to make it easy for users to share posts around the web, these buttons will feature the most popular social networks.

Since user participation is key in web 2.0 websites, I will be developing a commenting and liking system where users can comment on other user's posts and like user's comments. This functionality will be very similar to that of Facebook where user add comments and like friend's posts.

Technologies

The front-end technologies I will be using to develop the website include:

  • HTML, JavaSctipt & CSS
  • jQuery, a JavaScript Library having a very simple syntax which simplifies DOM manipulation
  • Bootstrap, a front-end component library which comes with responsiveness out of the box
  • Knockout.js, a web framework built around the Model-View-ViewModel pattern used for data-binding and templating
  • Google Maps APIs for displaying all the stops within a single post on a map

With regards to back-end technologies and database development I will attempt to take a Code-First approach where models are created in C# on which the database in built on. For this I will attempt to make use of the following technologies:

  • ASP.NET Core 2.0
  • Entity Framework Core
  • Microsoft SQL Server

The project will be hosted on Microsoft Azure making use of the following services:

  • App Server, to host the website itself
  • SQL Server, to host the database itself
  • SQL Database, to store all the website data