===
- Wrote README.md installation instructions
- Wrote a test case
- Make a video recording of my app
- Write a blog post about how my app works
- Practice giving my presentation
None right now.
- Finished coloring corresponding paths and table rows
- Tweaked email search query, now grabbing more shipment emails
- Added check to not duplicate db entries for the same user, email, shipment or activities.
- Now handling circumstances when no data (shipment emails, tracking numbers, package activity) is found. Table shows no shipments found.
- Write README.md
- Write some Python tests
None right now.
- Colored package paths on mouseover event
- Finished styling cover page and my_shipments.html page
- Color corresponding table row when package path is moused-over
- Color corresponding package path when table row is moused-over
- Still just scared to touch my code.
- Used layoutit.com to help create cover page positioning.
- Have a half-way decent cover page.
- Do some map styling.
- Color the package routes different colors
- Highlight routes when mousing over the package's row in the table
- Scared to change my code at this point.
- Added table of shipments to my_shipments page.
- Added Bootstrap to the app, started styling
- Investigate adding a map marker for package's last location
- Style the cover page.
None right now.
- Drew my package paths on a Google map!!
Oh gosh, so much to do.
- Add a list of shipments to my_shipments page.
- Add a marker showing where the package originated, add a marker showing where it was delivered?
None right now.
- Got latlongs for all locations after map initializes, not from console call
- Draw a polyline of a shipment's path on the map
- None right now, just a lot to do this week.
- Able to call getLatLong() from browser console and save a latlong for one location to the db
- Get latlongs for all locations that need them
- Call getLatLong() after browser loads rather than from the console
- Figure out how to draw a polyline on the map of a shipment's path
None at the moment.
- Added a map to my_shipments.html
- Figured out how to get a latlong from Google's Geocoding API
- Get a latlong for all locations
- Save the lat longs to the db
- Need to learn how to write an ajax request to send the latlong back to my Flask app.
- Finished refactoring some Python code
- Created route and template html stub for my_shipments.html
- Add a map to html
- Get lat/long for each shipment location using Google Maps Geocoding API
None right now.
- Finished pre-processing UPS XML data
- Successfully saving it to my database
- Created a new route and stub template for my map page.
- Started some refactoring/code clean-up in my routes
- Finish refactoring/code clean-up in my routes
- Attend Heroku Lunch and Learn
No Blockers
- Got help from Nick to refactor my code
- Write pre-processing function to strip out unpaired XML tags
- Parse out all activities that have a location
- Create my_shipments route and template to render
- Add a Google map to the template
- None right now
- Fixed UPS Mail Innovations XML request, but only getting one response back
- UPS deleted my package's tracking information
- Write code to ignore that tracking number pattern
- Finished blog post on OAuth
- Emailed UPS for help
- Attend HB sponsored negotiation workshop
- Fix UPS Mail Innovations SOAP request
No longer blocked on UPS Mail Innovations Tracking request!
- Not sure how to get all tracking information, currently just getting first entry...
- Modified email query for shipment emails in the last 6 months
- Used packagetrack library to create a UPS request
- Went to Survey Monkey LnL
- Met with Astha, got feedback on my project
- Troubleshoot request for Mail Innovations tracking number from UPS
- Finish blog post on OAuth
- Non-standard tracking number
- Found UPS tracking number formats (http://www.ups.com/content/us/en/tracking/help/tracking/tnh.html)
- Found library to help with package tracking (https://github.com/storborg/packagetrack)
- Wrote regular expressions to look for tracking numbers in tracking.py
- Encapsulated parsing tracking numbers in to function parse_tracking_numbers()
- Integrate packagetrack library with my project
- Use packagetrack library to issue request for package status
- My current tracking number is not a typical UPS tracking number, having trouble getting tracking info back from UPS
- Successfully received emails from Gmail API
- Modified request query to search for shippment keywords
- Successfully retrieved email body
- Successfully decoded HTML email body from base64url encoding to something readable
- My single test email was sent using UPS, so go to UPS see if I can find the format of their tracking numbers,
- Write regular expression to search for the tracking number in UPS emails
- Encapsulate the tracking number extraction into a function
- Process another email/courier...
- In gmail OAuth prototype, moved gmail client id and secret to more secure location in ~/.bash_profile
- Authorization granted to gmail, not the random sample service
- get email body, email query limit
- How to work with Gmail's response object
- Got a Reddit OAuth sample app working in Flask
- Got a stand-alone Google OAuth sample app working in Flask
- Get an email from Gmail
- OAuth is hard
- Lunch with Astha (hints on OAuth)
- Finished login/logout
- Added form to manually enter shipments
- Display shipments list
- Decided not to stub out the remaining templates or routes
- Read about Gmail OAuth
OAuth
- Project approval
- Created GitHub repo
- Sketched out (4) wireframes of main pages
- Created db (v1)
- Drafted rough project timeline
- Able to manually register a user, save to db
- Manually enter a shipment to track
- Finish login flow
- Ask for a code review
- Stub out remaining template pages
- Stub out remaining routes
- Read about Gmail API (OAuth)
- Need to research more about options for getting emails
- Picked a project idea
- Picked a project name
- Project Approval
- Wireframes
- Database tables
- Create GitHub repo
- Project timeline
- Project approval
- How to fake shipment data??
===
- Check for logged in user - DONE
- Check for new shipments - DONE
- Connect to Gmail API (Gmail OAuth) - DONE
- Fetch shipment emails (last 6 months) - DONE
- Parse tracking number and determine courier - DONE
- If a new tracking number from a courier that I can track, add to db - DONE
- Check for new package locations
- Look up the current status of all tracking numbers
- If current status is not delivered, get tracking info from the courier
- If location is new, add location data to db
- Display shipment paths on a map
- Add a map to html page - DONE
- Determine lat/long for each location from Google Maps Geocoding API, save to db - DONE
- Create polyline for each shipment from Google Maps Javascript API, add to map - DONE
- Write job scheduler to check for package updates (once per day?)
- Send a text message after being delivered