Giter VIP home page Giter VIP logo

plankes-projects / splitastic Goto Github PK

View Code? Open in Web Editor NEW
9.0 9.0 1.0 4.22 MB

Splitastic is an open source self hosted chores/expenses splitting app.

Home Page: https://splitastic.epicnerf.com

License: GNU General Public License v3.0

JavaScript 1.13% HTML 3.79% Vue 22.76% TypeScript 42.76% Shell 0.43% Java 29.10% SCSS 0.01%
bill-splitting chore-splitting chores expenses-splitting mobile-app openapi shared-flat split-bills split-expenses spring vue

splitastic's People

Contributors

dependabot[bot] avatar klaus-plankensteiner avatar plankes-projects avatar zaydme avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

splitastic's Issues

Virtual users schould be mergeable to a real user of the group

EG:
Franz (which is a virtual user -> user without email) has 10 expenses.
Than the real account of franz joins the group, because he decided to use the app after all in the middle of the trip.
Now the group admin should be able to move all entries of the local user franz to the real account franz.

More info at group invite?

Currently only group name is shown on invite. Maybe also provide name and image of group owner?
Is this really needed?

Move all entries in a group from one to another user

###Client:
Only for group admin
Show 'Bulk Move finance/chore' button.

USER1 => USER2

Make USER1 and USER2 to a changeable button (like in chore view).
Provide checkboxes which indicates chore, finance (what to move)
Under those, add a MOVE button.

After clicking the move button, show a modal view with confirmation (maybe also require to write move into a textfield).
This modal view should also remind that this is undoable and everything will be moved to the other user.

###Server:
Provide api call. from userid, to userId, finance=0/1, chore=0/1
Check if group owner triggered this

At finance, update finance entry + financeentryentry

Chore sorting

Currently chores are sorted by the score value shown in the tab (eg +4). This means that multiple 0 doe not produce a sorting anymore. Thus the exclamation marked entries (3 entries behind) could end up not as the first value.

Change that to mostAbsoluteValue - myAbsoluteValue. -> This ensures that exclamation marked entries are first in the list.

Better group info view

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Better group info view -> add statistics, something like this (flatastic)

    • Total amount spend

image

somehow show balance of all users

Show balance of all users at finance info tab. Quick and dirty to provide the functionality.
This is the last important feature to make this app usable with virtual users.

#1 is similar but much fancier.

infinity scroll not working on mobile

Describe the bug
Infinity scroll on expenses tab not working on mobile

To Reproduce
Steps to reproduce the behavior:

  1. Go to expenses tab
  2. Add a lot of expenses
  3. Scroll down

Expected behavior
Automatic load of new expenses (as in desktop browser)

Finance entries if user is not in group anymore

local information is missing if a user leaves the group. Thus check all finance entries + chore for all user and provide missing users in the group. mark those missing users such we can add an icon in the group info view. (and also remove the remove icon in group edit view)

image

Categories for expenses

It should be possible to define a category for an expense. (maybe also with an extra icon?)

This is nice because we could generate a stats page where we split expenses by category.

Are those categories fixed? Defined by the admin for a group? or completely dynamic during adding the expense?

Possibility to add local users.

If I use the app on holiday for a group and I am the only one who uses it.

#20 is a requirement for this.

Also those local users should be merge able to a real user if the real user joins the group.
-> all expenses + chorse should me moved to the real user and the local user should be deleted.

EG:
Franz (which is a local user -> user without email) has 10 expenses.
Than the real account of franz joins the group, because he decided to use the app after all in the middle of the trip.
Now the group admin should be able to move all entries of the local user franz to the real account franz.

Possibility to add an expense for the other user

Mark this entry with a 'inserted from' marker.

Usecase:
The other person does not have internet at the moment but I could insert the expense for him.

Only the user for which it was inserted shall be able to delete. Otherwise you could trick a user and delete his entries after 2 month and he would lose money.

Provide non intrusive way to select the user I am inserting for at insert.

Show little icon mark at expense list (make clickable and show inserted user?). Show user name + image on the expense detail view.

Move all entries bug

If I move all data from User1 to User2, the existing finance entry is distributed to all other users. This is wrong!

eg.:
Before move:
User1 -> User4 = 2€
User2 -> User4 = 2€
User3 -> User4 = 2€

After move distribute step (User1 to User2) :
User1 -> User4 = 3€
User2 -> User4 = 0€
User3 -> User4 = 3€

After move (User1 to User2):
User2 -> User4 = 3€
User3 -> User4 = 3€

Here suddenly User3 owns 3€ instead of 2€. This does not represent the 'move' terminology.

We need to change that so that the end situation is like this:
After move (User1 to User2):
User2 -> User4 = 4€
User3 -> User4 = 2€

Nicer login email

Current login email looks like this:

image

Make it nicer and explain splitastic in case the login was requested for a wrong email address.
Also update the page you get after the link is clicked.
For this you have to modify the files in: server\app\src\main\resources\templates

loginEmail.html contains the code sent in the email. It contains CSS code which obviously does not work in emails.

notification view

add all entries which are send over push notification to a table.
provide an pagination api call for this table

provide view on client

Use browser cache for image caching

Currently images are stored in database and loaded via a base64 data url. Change this.

  • Provide data path at server startup
  • Store images in this path
  • Create api endpoint to load images from that path
  • Image name should be sha2 of image data
  • use 'normal' url to load images such that browser will cache it

Show optimized for mobile message if not on mobile

On first app start show a message that the app is optimized for smart phones.
Store if already shown in localStorage. Such if you open on another (non smart phone) device you get the message again.

get group pagination does not paginate anymore

GroupObjectDao::paginateGroups

Removed paginate because we now order groups by last_activity_date and not by id. This breaks old paginate implementation.
Update the query such it works again.

we have a list of groups order by actvity (for user 1):
id -> group name
4 -> group 4
3 -> group 3
1 -> group 1
2 -> group 2

paginateGroups(user: 1, limit: 2, lastId: null) shall return:
4 -> group 4
3 -> group 3

paginateGroups(user: 1, limit: 2, lastId: 3) shall return:
1 -> group 1
2 -> group 2

Better description of what the verify code is used for (at login)

The idea behind the verify code is that if 2 people trigger an login at the same time for the same email, the user does not know which login email is the correct one and therefore could login the wrong (maybe malicious device).

By quickly verifying the verify code, this security issue is fixed.

Notification

Implement native notifications over service-worker.

Open Tasks:

  • Connect user to device id on login (add device id to login query)
  • Remove device id from user on logout (just generate new device id and delete device ids which where not polled since 1 week?)
  • send maximum of 10? notifications at once (in case there was no poll for a long time) (store a maximum of this in the table)
  • remove all device ids from user if 'logout on all devices' was called
  • make notification -> device id, if device id is delete, propagate delete automatically.

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.