Track your online shipments in this responsive web app.
GoingPostal is the final project created during the Summer 2014 Hackbright Academy Software Engineering Fellowship.
===
- Fetch my shipment emails from Gmail
- Login
- Connect to Gmail API (Gmail OAuth?)
- Fetch emails (all? last 60 days? upper limit?)
- Find shipment confirmation emails
- Parse shipment number (and courier?)
- Get package tracking numbers
- Add tracking number, courier info to db
- Looks up their status and location from the courier
- Add location data to db
- Display their paths and current location on a map
- Send a text message (or call?) after being delivered
===
- 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??
- git init locally vs. creating a repo on GitHub Can git init on GitHub, just git init in one place or the other. If you init on GitHub, don't forget to check the init checkbox.
- How do I fake shipment data? Check the courier APIs for test data. Create a page of tracking numbers.
- How to get email data?? Nick suggested 3 options:
- Browser extension - add a tracking number from a web page to my app
- Use IMAP to actually read my email - invasive. Would need to store encrypted, hashed email password
- OAuth might be possible - check Gmail API docs. Also check Flask mega- tutorial for a Google accounts OAuth example of account creation.
- Additional email providers
- Store the info retrieved from carriers for offline support
- Predict the next location
- Based on time of year (winter)
- Postal traffic (holidays)
- Map viewing options
- Show timing by time of year
- By shipping priority (regular, express, priority, etc.)
- Bad weather, holidays...