Giter Club home page Giter Club logo

expenses-sharing-app's Introduction

Expenses Sharing App - Design

Project Goal

The app will enable users to create events and share their expenses. It will provide participants with notifications of any changes, and enables them to communicate on the events level.

App Specifications - Functionality Description (Under development)

1. The app is intended for use in Android devices only. 
2. App users will register in the app using Gmail only. This will ensure that each user is unique. 
   Phone numbers and other emails won't be used as users can have more than one.
3. A user can create an event to share expenses. 
   a. An event will state the issuer as the owner and will contain event name, description, and a 
      list of participant members. 
   b. Events should have a date stamp and be searchable by date, name or members.
4. To add participants, the user will be able to select from a list containing his mobile contacts 
   who should also be registered members in the app. 
5. After selecting members for the event, the user will then be able to set transactions with the amount 
   of money each member has lent or borrowed. 
6. The owner of the event is the only one able to delete the event. 
7. The event will log changes made on each request. 
8. Once the event is created, the other members will be notified and the event will show up in their apps. 
9. Each user can add/delete/edit their own transactions or leave the event. 
   status of each request will be registered and visible on both the owner's and the member's events.  
10. All Actions made on the event and its transactions should be logged in text in the event and 
    participants notified.
11. Text messages between the participants in an event is also possible to add to the event. 
12. App-Server Data Syncing
    a. On app start: 
       When a user starts the app, the app will fetch a list of all the events that the user
       had created and is a participating at. This events-list will be saved in the app local dp. 
    b. On Event or Transaction Add/Delete/Update action:
       Every time a user commits an action to the server, the app will send notification to all the participants
       in the event. Up on receiving the notification, the app syncs the event information with the server.     

Project current status

1. Developed wire-frames of GUI on paper.
2. Created an app to access data on a Wamp Server. Wrote the server-side APIs in php for test purposes. 
   The app uses the Retrofit REST client and can currently post user-entries with pictures. 
3. Completed the conceptual design for the relational database on the server.
4. Created the normalized tables.
5. Created some of the needed REST php apis on the server side.
6. Created relevant data models in the app.
7. Implemented OrmLite for providing a local database in the app. The purpose is to store events information so they 
   can be viewed offline.
8. Implemented Jackson for object json parsing. 
9. Implemented permissions checking.
10. Implemented fetching mobile contacts. 

##Next

1. Develop GUI.
2. Develop necessary REST php apis as needed.
3. Develop necessary Retrofit functionality.
4. Develop data syncing mechanism.
5. Verify users Gmail using Facebook Account Kit.
6. Use Google Cloud Messaging (GCM) for pushing notifications.
7. Complete development of the app core logic, and GUI development using material design guidelines.

Database Table Relationsships

Database Table Relationsships

 

Admin Login/Logout flow design

 

Admin Gmail Login flow design

I will probably only use this as the standard.  

expenses-sharing-app's People

Contributors

jagerfield avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.