Skip to content
Journal tracking platform for surfers to record their surf sessions to learn what conditions are best for them.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Ocean Riders' Journal


Ocean Rider’s Journal is a place for Northern and Central California surfers to record their time in the ocean. The journal collects swell and wind data based on time and location, and combines it with subjective user ratings to visually graph the best conditions for the user, with the aim to help users develop a keener sense of what conditions work best for them at their favorite spots.



Ocean Rider’s Journal uses a Python controller and a Flask web framework. The SQLite database collects information provided by users about their surf sessions, the boards they ride, and the wind and swell conditions at the time of each journal entry. Weather data is gathered from the the magicseaweed API.

Python, Flask, Jinja2, SQLite, SQLAlchemy, HTML5, CSS, highcharts.js, and Bootstrap. (Dependencies are listed in requirements.txt)


Each user can add an entry to their personal surf journal: JournalAddEntryExample View a summary of all journal entries: JournalEntriesSummaryTableExample Summary page includes a chart correlating overall ratings with swell conditions: JournalEntriesSummaryChartExample Journal entry details page displays the more subjective/ contextual user input: JournalEntryDetailsExample The "Quiver" page is where the user creates, views, and edits their collection of surfboards. QuiverBoardListExample QuiverAddBoardExample

Designed for Mobile Responsiveness

Sm-JournalEntriesSummaryTableExample Sm_JournalAddEntryExample Sm_QuiverAddBoardExample

To recreate this webapp locally
  • Sign up for an API key at:
  • Store your API keys as "MSW_ACCESS_TOKEN" and "MSW_ACCESS_TOKEN_SECRET" in a local "" file (be sure to add this file to your gitignore before committing).
  • Create a hash and export it as "APP_SECRET_KEY" in your "" file.
  • Create a virtual env and install the required packages.
  • Source the virtual env and then source your secrets file.
  • Run the file in interactive mode (python -i models/ and follow the prompts to initialize your database.
  • Run the in python (python to seed the database (this step is necessary to see beach locations in the "add entry" form).
  • Start the webapp (python, register as a user, and start exploring the journal!

Thanks to Junior Bill for lending me his classic surboard artwork for the quiver icons.

Contact Me

Connect with the developer:

You can’t perform that action at this time.