Having worked from home as a contract developer, I've had to keep track of my time for various projects for a number of years. This idea came to me immediately after I heard about the contest.
What it does
InVoice Maker allows you to set up multiple customer accounts or projects, and then track time for any of these accounts. Before you start working on a project, simply start the time tracker for that project, and when you end, stop the time tracker. When its time to bill your customer, you can simply ask InVoice Maker to make an invoice for that customer and it will calculate all your previously unbilled time for that customer, apply the rate you've established for that customer and create a detailed invoice sent to your Alexa App.
InVoice Maker allows you to set up your default billing rate which gets applied to all new customer accounts you create. You also have the flexibility to change your billing rate for each account if need be.
How I built it
Built with DynamoDB storing all the user settings, accounts, time tracking detail lines and invoices. Python running on AWS Lambda handles the processing.
Challenges I ran into
Numbers between Python and DynamoDB can be a bit tricky. Python natively uses floats and Dynamo wants Decimal types. Had to use the Python Decimal package and be very aware of making conversions at the proper places.
Accomplishments that I'm proud of
This skill has the most intents of any skill I've created. Being able to not be too wordy, and yet let the user know all that the skill can do in one nice Help card I think worked very well.
What I learned
Sometimes even simple ideas can be built upon and built upon to make a pretty elaborate skill.
What's next for InVoice Maker
There is so much more that can be done and added including: 1) Adding timezones for time localization 2) Add ability for user to set a billable unit of time, so instead of billing in minutes, it could be every 15 minutes, every half hour, etc. 3) Create a PDF version of the invoice and have it sent to the user's email address 4) Allow to use templates so user can completely customize what the invoice will look like upon creation.