This platform was developed to meet two overarching goals:

  1. Meet the needs of the sponsoring organization, the Outdoor Advocacy Club.
  2. Be a robust and comprehensive demonstration of the development team's proficiencies with technologies present in the tech stack.

The OAC sponsored the development of this project with a few specific objectives about what the final product would look like and what it could do for its users.

  • Provide an online platform that allows journaling from around the world.
  • Maintain a lightweight, low-commitment experience that doesn't distract from an adventurous life.
  • Emphasize personal connection between reader and writer through access and privacy controls.
  • Enrich traveling experiences with data and recommendations from our network and knowledge base of traveler insights.
  • Visualize data provided by the user base in an interactive manner.
    • A geographical overview of places an author has visited.
    • A comprehensive tagging and metadata system for filtering and searching journals.

From discussions with the leaders of the OAC, the dev team identified several assumptions and risks to be mindful of throughout the development cycle.

  • Short deadline
  • Scalability of service
  • Product-market fit
  • Data integrity
  • Moderation

By the end of development, the team built out a tech stack using several popular technologies that fit the requirements of the project. Each technology was carefully analyzed for suitability before being integrated into the stack. The result is a tightly woven, flexible, and capable infrastructure that supports the platform.

The Tech Stack

Frontend toolkit that enables dark and light color modes, various components throughout the site, page structure and navigation.

Webpage code and styling: Of course, no website exists without its HTML. The particular fonts, colors, and other elements are applied uniformly throughout the site via CSS stylesheets.

Client side code execution used to transform timestamps to the user's timezone, customize the homepage map, and enable switching between dark and light modes.

Javascript dependency development server and bundler to manage the packaging and deployment of the Javascript code used in the site.

Server side inline code execution that allows Python code to be embedded in HTML webpages. The code is executed when the page is loaded to customize the navigation bar to the active webpage. It also renders posts on the homepage and facilitates account administration functions elsewhere.

Python web framework for serving pages and resolving GET and POST requests from the client.

Object Relational Mapper that allows Python to interact with a database.

Programming language extended by various modules to provide an easy and flexible method of creating this website.

Web hosting service from which the site and database is served. It is a powerful utility that is simple enough to pick up easily while still providing robust capabilities to the programmer.

Database management system used to store information in the website, primarily user accounts and post data.

APIs

Reverse geolocation service that provides location metadata for a given latitude/longitude coordinate pair.

Mapping API that provides powerful and performant embedded dynamic maps customizable with Javascript to visualize geographic data.

Meteorologic data provider that provides weather conditions for a given place at a given time.

Emailing service for sending custom automated communications to users of the platform.

Natural language processing to match text based on similar content. Uses text-embedding-ada-002 model.

Project Management

Version control, sprint planning and tracking

Document storage and sharing

Developer communications, sprint meetings