Hello again 🙂 It’s been a short while, WROC# conference was held in the meantime (it was great, by the way), but it’s time to write again. Write about DSP. More precisely: about MoneyBack, my project for the competition.
Today I’d like to share with you my idea for the application – what I require from it, what functionalities I imagine it to have and what technologies I want to use. This is going to be rather short post, I don’t want to spend too much time on imagining the functionalities (I rather prefer to start working on it). It won’t be much detailed also, just a high-level overview of what I imagine my project to look like.
As I already described in my DSP introduction post, the idea for MoneyBack came from a need. I just need a kind of system, which would allow me to make splitting the money spent on a group’s needs easier. Currently I perform such tasks quite often and I do it manually. Those include any types of activities/things you paid for, whilst being used also by the others: food ordered with your workmates, beer you paid for in the pub with your friends, shopping made with your girlfriend, sports event you attended with a group of others or any other types of activities you can imagine.
I know there are many mobile/web applications doing that job, however MoneyBack will rather focus on the person who is the payer – it will help him/her firstly just to properly and easily split the costs and secondly – what is maybe more important – to keep the others informed/reminded (if necessary) about the money they owe.
Requirements and functionalities
I will divide the requirements that MoneyBack application is going to meet into two groups: must-haves and nice-to-haves. By a must-have I understand something I essentially want the application to help me (and the people using it, hopefully 🙂 ) with, like the core and basic functionalities without which I can’t imagine it finished. Like the minimum requirements for my DSP project. On the other hand, by a nice-to-have I see a part of the system I’d love to have, but is not essential for the project being.
- [Android] Adding people (that are meant to be included in money splitting) by email (+ other personal details)
- [Android] Creating one-time events/expenses with amount paid, people assigned, payment due date, bank account details, attachments (e.g. invoice/receipt PDF)
- [Android] Automatic calculation of costs split per person
- [Android] Generating one-time event’s/expense’s summary email to be sent to all participants with all the details
- [Android] Marking particular event’s participants as “paid” (to indicate that person has already paid what he/she owes)
- [Android] Notifications about a possibility to generate and send a reminder email to people who haven’t paid yet if the due date is coming
- [Android] Creating recurring events (e.g. once per week, once per month etc.) + notifications about the summary emails to send when the recurring event’s date is coming
- [Android] Possibility to export application’s data backup to GoogleDrive / file
- [Android] Adding people (that are meant to be included in money splitting) by phone number
- [Android] Possibility to connect person added with the Contact (integration with phonebook)
- [Android/Web] Possibility of account creation in the application for synchronization of application’s data to the web service
- [Web] Web interface allowing to login and see the details of events created in the mobile app
- [Web] Possibility to share a link to the event’s summary that can be given to all participants (so there is no need to send summary email)
- [Web] Managing the expenses/events in the web application
- [Web] Possibility of account creation on the web app
- [Web] Possibility to mark events as “monitored” so the reminder emails about payments are sent automatically to the participants from the server
- [Android] Support of multiple currencies (manual exchange rates definition) so that some people can pay in PLN, some in EUR for the same event
- [Android] Defining groups of people
- [Android] Possibility to download exchange rates from the Internet
- [Android] Defining expenses’ categories
- [Android/Web] Logging with social media (Fb, Google)
- [Android/Web] Charts/statistics for the payments/events/expenses
Those are just general requirements which came to my mind and they may change during the project’s development. Maybe you have some other ideas for such application’s functionalities that you’d find useful ? If yes, let me know in the comments.
Above all, MoneyBack is going to be an Android application written in C# language using Xamarin platform. I will also need some good, but tiny local database on the device. I don’t know what are the best ones to use in Android/Xamarin (maybe some of you can advise me something?), but I suppose it could be for instance SQLite. I will mostly focus on the mobile app. In the worst case, as the very minimum, I’d like to finish mobile application so it meets the minimal requirements and is possible to be used by the others.
The second and very interesting part of MoneyBack project would be to have a web service with which the application would synchronize. It would require the replication of device’s local database structures on the server side and exposing some API after (maybe JSON?). Then it would be perfect to have a possibility to at least see created events/expenses details in the web app, which would require adding some web UI to the application. If I ever manage to get to this part, I would like to use ASP.NET Core for creating a simple server-side web app, maybe hosting it on some Linux machine. I’d also need some simple, but reliable database system, for example MySQL which could also be easily hosted on Linux server.
MoneyBack will primarily be an Android app. If I manage to create web app it’s great. No more declarations for now, let’s start working. The next post in the scope of DSP will cover Xamarin installation into Visual Studio, configuration, first pieces of code and deployment of the application to the mobile phone.
I encourage you to give your feedback in the comments 🙂
PS: I need to make a small disclaimer here: I have to admin – what I didn’t mention in my previous post – that it was my creative girlfriend who came up with the name of the project (MoneyBack, initially GiveMyMoneyBack) who I’m cordially greeting from this place 🙂 I hope she will be supportive enough so I don’t arrive to the end of DSP with MoneyBack, but no girlfriend 😀 Plus as I’ve just made the disclaimer, she won’t have any claims to the app when it already makes millions of dollars 😉