Skip to content

heligie/big-trip

Β 
Β 

Repository files navigation

Big Trip

A travel planner app helps to plan in detail the route of the trip, calculate the cost of the trip and get information about the sights.

Browser Mockup.

Overview

The journey is based on individual route points. A route point is a separate event in the journey. The route point can be a stop at some place (Check-in, Sightseeing, Restaurant) or a trip by vehicle (Taxi, Bus, Train, Ship, Drive and Flight).

The 'Favorite' button (displayed as an asterisk) adds a route point to favorites.

Browser Mockup.

The 'New Event' button is used to create a new route point.

Browser Mockup.

The time and date are selected using the library flatpickr.js.

Additional options are displayed in the offers block. The set of additional options that the user can select when creating a route point depends on the type of route point. The choice of additional options affects the total cost of the trip.

The total cost of the trip is recalculated when creating/changing/deleting any point on the route.

Browser Mockup.

There are several filters provided in the application: Everything is a complete list of route points, Future is a list of planned route points, Present is a list of current route points, Past is a list of passed route points.

The user can sort the route points by the cost (click on the column heading Price) and duration (click on the column heading Time). To cancel the sorting and return to the original date sorting, the user clicks on the column heading Day.

Technologies

JavaScript HTML5 CSS3 Webpack

  • Architecture Pattern: MVP
  • OOP: Vanilla JavaScript using ES6 Classes
  • All JavaScript files are separate ES6 Modules

Directory structure

β”œβ”€β”€ src
β”‚   β”œβ”€β”€ model                      
β”‚   β”‚   β”œβ”€β”€ filter-model.js          
β”‚   β”‚   └── point-model.js                
β”‚   β”œβ”€β”€ presenter                                     
β”‚   β”‚   β”œβ”€β”€ filter-presenter.js                
β”‚   β”‚   β”œβ”€β”€ headline-presenter.js                   
β”‚   β”‚   β”œβ”€β”€ main-presenter.js  
β”‚   β”‚   β”œβ”€β”€ new-point-presenter.js                 
β”‚   β”‚   └── point-presenter.js 
β”‚   β”œβ”€β”€ view                     
β”‚   β”‚   β”œβ”€β”€ content
β”‚   β”‚   β”‚   β”œβ”€β”€ headline-view.js   
β”‚   β”‚   β”‚   β”œβ”€β”€ list-view.js  
β”‚   β”‚   β”‚   β”œβ”€β”€ point-editor-view.js
β”‚   β”‚   β”‚   └── point-view.js   
β”‚   β”‚   β”œβ”€β”€ stubs
β”‚   β”‚   β”‚   β”œβ”€β”€ alert-view.js
β”‚   β”‚   β”‚   └── loader-view.js                
β”‚   β”‚   └── toolbar                 
β”‚   β”‚       β”œβ”€β”€ cta-button-view.js
β”‚   β”‚       β”œβ”€β”€ filter-view.js
β”‚   β”‚       └── sort-view.js
β”‚   β”œβ”€β”€ server                               
β”‚   β”‚   └── points-api-service.js          
β”‚   β”œβ”€β”€ utils
β”‚   β”‚   β”œβ”€β”€ common.js
β”‚   β”‚   β”œβ”€β”€ const.js
β”‚   β”‚   β”œβ”€β”€ date.js
β”‚   β”‚   β”œβ”€β”€ enum.js
β”‚   β”‚   └── filter.js
β”‚   └── main.js
└── public
    β”œβ”€β”€ css
    β”œβ”€β”€ fonts
    β”œβ”€β”€ img
    └── index.html

Packages

No packages published

Languages

  • JavaScript 74.6%
  • CSS 24.1%
  • HTML 1.3%