This platform was developed to meet two overarching goals:
-
Meet the needs of the sponsoring organization, the Outdoor Advocacy Club.
-
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