Skip to content

mbapple/waypoints

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Waypoints

Waypoints is a self hosted travel tracking solution. It is an all in one solution to log trips and destinations. Waypoints helps you to visualize your travel providing a detailed map view of your past journeys. The data driven app collects information on the places you go and the routes you take to visualize and quantify your journeys around the world.

Database Schema

The main way to track travel is through the creation of trips and components:

  • Trips: Just that, representing a trip be it one night or 2 weeks. The trip stores the dates of travel.
  • Nodes: These are the destinations of your trip, usually starting and ending with your home. These are the cities, campsites, wherever you would say you are going.
  • Legs: These are the travel between your nodes: flights, road trips, etc.
  • Stops: Stops allow you to track anywhere you want to remember. Be it the hotel you stayed in, a restaurant you stopped at along the way, etc. Stops are attached to either nodes or legs and are meant to be a journal of sorts. In settings, you can create your own list of categories to represent stops and assign an emoji to represent them on the map.

Nodes, Legs, and Stops are attached to places in Open Street Maps so that their coordinates can automatically be saved to contribute to the map of all your travels.

Photos can also be uploaded and are attached to Trips themselves or any of the other types.

Adventures: Adventures are another way to track your journeys. They are similar in schema to stops but not associated. These are meant for your day trips, hikes, dives, anything special enough you want to track. They appear onside the map alongside the rest of your trips but don't contain the extra travel information.

Lists: Lists are like travel goals. They can be a list of specific locations, a list of states, or a list of months of travel, whatever you want to see as you track your travel. You can create a custom list by inputting a comma separated list. They can be matched to the countries, state, or location name from OSM. Regex matching allows for automatic matching. You can also manually check off something if it is not automatically matched to a travel component.

Travel Information: The database also stores additonal information about your legs. For car legs, you can automatically track the route outline and driving time using Open Route Service. For flights you can keep track of the airline and flight information. More integrations coming.

Features:

Map View:

View all of your trips on a single map. Here you can visualize your waypoints around the world. You can also view any single trip on a map.

Calendar View:

View an overview of your trips on the yearly calendar where you can easily see the days you have travelled. A montly view allows for more detailed display destinations and stops.

Statistics:

With the statistics view, you can see how many miles you have travelled on each transportation type, how many nights you have spent away from home, and track custom lists of travel goals.

Backups:

Backups of the database can be created in the settings menu. These backups can be downloaded and restored. Backing up of photos coming.

Installation:

Waypoints runs in three docker containers.

The quickest way to get set up:

docker compose up

Tech Stack:

datbase container
└── PostgreSQL
backend
└── FastAPI
frontend
└── React app
	├── Leaflet Integration
	└── Styled with styled-components 

Integrations:

  • Nominatim: API used to search for places in Open Street Map.
  • Open Route Service: Automatically fetch driving path and distance between locations in a leg. Set the API key in settings.

License:

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation,version 3 of the license.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.

To Do:

  • Get something working
  • Implement PostgreSQL database with ability to add and query trips, nodes, legs
    • Ability to provide sorted lists
  • Implement front end to show trips, nodes, legs and ability to add each
  • Implemnt basic styling
  • Add ability to have stops
  • Show legs/nodes in correct order
  • Add README for API endpoints
  • Add stops to frontend
  • Integrate OSM location selection for nodes/stops/legs
  • Clean up order in API, database, and add pages to make consistent
  • Make legs/nodes a drop down to reveal stops
  • Make legs display correctly
  • Add ability to update trips/legs/nodes
  • Add ability to add photos
  • Add features to API and implement on frontend:
    • Total miles of a given trip
    • Total destination count
  • Add flights/trains/etc. to API
    • On AddLeg, add a box that appears below to get all this info
  • Integrate into a map view with Leaflet
  • Integrate into online services
    • Flight data
    • Driving distance
  • Provide statistics about travel: distances, destination lists
  • Fine tune styling
  • Figure out how to update database without breaking
  • Figure out how to backup database
  • Organize page files
  • Pull out redundant functions into separate file
  • Add ability to customize style and light/dark mode
  • Add create trip by flight numbers feature
  • Add create trip by cruise
  • Make a list of general cleanup to do
    • Fix loading page issues
    • Fix miles when adding/updating a car leg
    • Fix rounding with miles
    • Add icons for stops onto map rather than just points
    • Fix light mode color scheme
    • General cleanup of code and pulling out functions/reused components
    • Clean up what is show on TripDetails page
    • Dates not being saved w/ Quick Create
    • Make only one date appear on first/last nodes
    • Visually separate legs from nodes
    • Fix styling of dropdown when uploading photo
    • Fix leg display name when creating stop
    • Figure out a way to correctly order stops and nodes that ocurred on same day
    • Add pick a random photo
    • Hide invisible nodes from map
    • Add dropdown to edit invisble nodes
    • Filter destination count by unique osm id and first/last destinations
  • Fix bugs with updating components, particularly if you change transportation type of leg
  • Add maps of individual trips
  • Come up with actual name for project
  • Design logo
  • Complete docker-compose.yml and install script so that it can be installed with one command and mount relevant volumes
  • Add detailed statistics page
  • Timeline view and route replay
  • Fix invisible ndoes: Display in trip list but not on map and do not count towards destination
  • Make trip list display more distinctly with different colors for different item types
  • Fix bug over international date line
  • Make nodes appear smaller on map
  • Add ability to custom order stops w/in nodes Hacked by ordering by updated_at
  • Add created_at and updated_at timestamps to all datatypes
  • Clean up API endpoints to only return relevant data on call
  • Add statistics to statistics: Nights, distances by travel type
  • Auto fill distances on all leg types
  • Make browser display name based on current page
  • Design logo and implement
  • Fix mess that is MapView getting data from the page itself and in the MapView
  • Fix container so it doesn't rebuild frontend each time
  • Possibly refactor so that limited data is sent via API and specific components call for full data
  • Not all data is shown in editing forms
  • Simplify statistics page code
  • Add airport statistics
  • Make trip details display look better
  • Add date to stops
    • API
    • Form
    • Display
  • Add day by day itenerary of each trip
    • Clean up this
  • Add overall calendar of travel
  • osm_id not being saved????
  • Fix consistencies in whether states are counted by nodes or stops
  • Add global search feature
  • Major refactor:
    • Lighten up what is sent over API for a nodes/stops by trip, lazy load the rest of the details
      • Can't really do this as it messes up Mapview where 90% of data is needed anyways
    • Move the pop up component from Statistics into a general use so it can be reused
    • Rather than expand cards, use the pop up to show more details
      • Remove expand code
      • Link to pop up
  • Make at least somewhat mobile friendly
    • Fix navigation bar issue
    • Fix any other pages
    • Fix call to API
  • Add stop/end dates to stops so ex. hotels can be spread across multiple days
  • Add ability to add categories to stops
  • Add ability to upload multiple pohotos at once
  • Fix look of buttons on map
  • Fix trip itenerary view
  • Fix calendar list view
  • Add pop ups to show more details in trips, figure out way to cleanly display stops
  • Make links on map auto pop up node/stop details rather than just linking to trip
  • Add new data type to represent single adventures
    • Separate table
    • New page to view adventures
    • Add to calendar
    • Add to search function
    • Add to statistics page, count under stops, display in separated list
    • Include in state count
  • Fix issue where it freezes randomly
  • Ensure all OSM fields are updated when you change location
  • fix frame rate when zooming on map
  • Add screenshots and more detailed instructions to README
  • Add lists table
  • On map, link to all trips when you select a node (use the existing API call)
  • Add activities
    • Diving
    • Hiking
    • misc.
  • Fix issue where map appears over navigation bar
  • Fix emojis not always loading

Genearal Cleanup to do by hand:

  • Use the same component when viewing destinations by stop category, by country, by list
    • Show the date in this component
  • Have Map show all visits to a node
  • Fix the itenerary daily view
  • Remove unnecessary styling across pages

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published