Data Personalization Final - BearPocket

Website link (so far it does't show well on the website, it will be better to see in iphone 6 size)



What data did you decide to work with? Why were you interested in this data?

For the final project, I decided to work on my personal consumption data which I'm dealing with everyday. I found it's really interesting when I first recorded my consumption behavior 2 years ago. It was a 2 weeks trip to Taiwan, and I recorded everything I spent in that period. Then I found even after a few months, every time when I opened my expense notebook in Taiwan, I can still remember clearly how I spent my days in that 2 weeks. I can also remember how's the commodity price there and how's the life different from my hometown. I didn't have so much time to write diary there, but with the expense recording's help, I can even get my daily routine.

After this experience, I have a habit to record how I spend money every day. I know there are some apps to do that, some banks also have their financial recording system to help users record all transactions on their card, but I don't like to use them. First, I feel they cannot record all my expense behavior if I use other bank's card as well. Second, even some products like Mint can record all my card's transactions, they still cannot get the things I bought with cash. Third, the most import one, sometimes I feel Insecurity if the app ask me to leave my credit or debit card info in their system. So I 'd rather to track all expense data by myself. Before making this app, I use Excel to record.

What were your key design considerations?

After I decided to make this expense app, I thought about why I want to make it so bad although there are already a lot of financial recording apps in the market. Then I found these points.

1. I want to record my expense behavior based on map. Because I want to see my daily routine--where I went today, where I'd like to go, where I have a very happy consumption, where I bought an awesome ice-cream that I can recommend  to my friends, and of course, where I don't want to go anymore.

2. I also want to see how I spend by timeline. I want to know about when I usually have meal, when I'd like to have a shopping, when I usually feel satisfy about my consumption. 

3. Simplify the recording process. When I first came here a year ago, I recorded my expense behavior every day, but then I got lazy to record them day by day and now I just record them by month (by seeing the record from my bank and I lost my cash expense data in this way). Recording data day by day is very annoying even if you just record a few transactions by the end of the day. I realized if I'd like to make a usable expense recording app, I must to make the recording process really really simple just like clicking a button. 

So I decided to make the app automatically set the time and geo data for the user, in this way it 'll be dramatically easier for users to record their expense behavior. User can open the App in the shop where they just finish a transaction. Just input the price value and pick a category, then click the button--Finish Recording!

4. Related all my transaction with my emotion. I'd like to track my emotion relationship with my consumption behavior. As you know, most people believe shopping can relieve their pressure while others think consumption makes them more restless. I'd like to see how my emotion changed with my consumption behavior. I'd like to know where is the happiest place I usually have satisfy transaction there; Where is the place I won't go any more; Which shop is AWESOME and I'll go to there again; Which deal is great and make my day.

5. Make the app playable,  friendly and reliable.

What are some of the key technology processes you used? What was interesting or tricky?

To make my app easily record the data, I build an API to record the all my expense behavior.  The APP running on Heroku with MongoDB as database. I also use Amazon Simple Storage Service(Amazon S3) for the image file saving since Heroku cannot save file.I used google map API to track the geo data and show's my geo info on map.

The tricky part for this project are all the things related to time, maybe it caused by I didn't think clearly at the beginning of the project, the logical way or the time data I decided to record is chaos. I'd like the app can automatically set the time and geo data for the user,  but the time which can be readable for user is unreadable for the computer. I also need the data for computer to read and can be used for sort by timeline in a day, month, and year. Maybe it's just caused by I'm not familiar with the time thing and won't be in trouble next time.

For the visual part, actually I haven't start the visual part, just make the thing works at this time, There are lots of things need to do with visual part. I still want to add more data visualization part for the project (See how I spend by month, How much I spent in total of the month, Which category I spent most on, Which is my happiest day, What's my happy point in this month.  )



My model coding is here, here's the thing I want to record by the app

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var spendSchema= new Schema({
price: Number,
stuffname: String,
category: String,
month: String,
sdate: String, 
spendtime: String,
shop: String,
location: {
geo: { type: [Number], index: { type: '2dsphere', sparse: true } },
name: String
note: String,
url: String,
mood: Number,
timePurchased: Date,
dateAdded : { type: Date, default: },

module.exports = mongoose.model('Spend',spendSchema);

I use 

/api/create/image (post)   record the data to my database. 

/api/get/:datePurchased (get)   this is for getting the data by special date

/api/get  (get)      this is for getting all transaction

/api/get/:id (get)    getting a transaction

/api/update/:id (post)   update one transaction

/api/delete/:id  (get)  delete one transaction

/api/search  (get)  search data by different key words.

Design Part

Where else could you see this project going?

I'm still working on the project,  It has a lot of things to do actually.

1. I want to make the map more playable, it will be more fun if the pin is the bear's head with different emotions and color, you can get the idea by a glance on the map-- where you have the transaction, what's you moods like in that moment and what category.

2. Provide more info analyze on the index page (so far the index is the input form.) I'd like to add more data visualize things.

3. Change the visual style for the app. (Put the bear as the main character for the app )

4. Think about if putting the app to multiple users (add account and login,sign up)

5. Have a place for user to set their daily expense goal. 

6.Make it responsive and can be seen correct in different browser and device