The problem:
The National Park Service of the United States has no database or other digital system storing records of annual passes sold to park visitors. Park rangers cannot look up visitors' annual passes at the gate, so passholders must have a physical pass to be admitted without paying an entrance fee.
The solution:
A three-part digital ecosystem:
-
Database, custom REST API, interfaces for park rangers and passholders
- Deployed webapp
- Built with Django 2.2, Python 3.7 and PostgreSQL 11.3
- Stored in this repository
-
Data visualization dashboard
- Deployed site
- Built with Python 3.7 and Plotly 4.0/Dash 1.0
- Data from the custom Django REST API
- Github repository
-
Mobile app with digital annual pass that can be accessed offline
- Video demo
- Expo build of app
- Built with React Native 0.59 and Expo 3.0
- Data from the custom Django REST API
- Github repository
- Customized Django admin interface for park rangers enables park rangers to search for passholders by name and check them in at park gates. Park rangers can add new passholders to the database after selling a new pass. See example in slide deck.
- Interface for passholders enables passholders who bought their passes at a point-of-sale other than a national park gate (for example, through REI) to register their pass information for quicker look-up at park gates.
- If this is your first time using Django, follow Django's quick install guide.
- If this is your first time using PostgreSQL, download PostgreSQL.
- Clone this repository and
cd nps_django
pip install -r requirements.txt
python3 manage.py runserver
- Visit http://127.0.0.1:8000/ or whatever localhost your server is running in.
- This data visualization dashboard allows the National Park Service to easily understand passholder data. Now that the National Park Service has a database with information about passholders and pass usage, the National Park Service can use that data to make better decisions about its annual pass program, and to more effectively market to potential passholders. Note: the data shown is based on fake seed data and does not represent real statistics.
- Clone this repository and
cd nps_dashboard
pip install -r requirements.txt
python3 app.py
- Visit http://127.0.0.1:8050/ or whatever localhost your server is running in.
- This cross-platform mobile app allows users to access their annual pass and pass visit history offline. Passholders can access a scannable barcode of their annual pass that park rangers with scanning devices can scan to find the user in the database. The barcode corresponds to the passholder's pass ID.
- New users can get access to their annual pass and visit history if they create an account using the email address tied to their annual pass.
- Users can access their data offline if they are already logged in to the app with the email address tied to their annual pass.
- Video showing user flow of a logged-in user, including offline mode
- If this is your first time using Node.js and npm, download Node.js.
- Install the Expo command line utility with
npm install -g expo-cli
- Clone the repository and
cd nps_app
npm install
- Download the Expo client for the cell phone you want to test the app on.
npm start
-- this will open up your localhost. If it doesn't open, navigate to whatever localhost your server is running in.- Use your cell phone to scan the QR code that appears in the Expo metro bundler and this will open the app on your phone's Expo client.