plankes-projects / splitastic Goto Github PK
View Code? Open in Web Editor NEWSplitastic is an open source self hosted chores/expenses splitting app.
Home Page: https://splitastic.epicnerf.com
License: GNU General Public License v3.0
Splitastic is an open source self hosted chores/expenses splitting app.
Home Page: https://splitastic.epicnerf.com
License: GNU General Public License v3.0
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.
Activity is defined by when did I visit finance/chores view
Currently only group name is shown on invite. Maybe also provide name and image of group owner?
Is this really needed?
###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
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.
Only group owner should be able to do this.
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.
Chore insert currently works with a + and - button since it represents a tally chart.
How to insert one for another user without breaking simplicity?
Describe the bug
Infinity scroll on expenses tab not working on mobile
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Automatic load of new expenses (as in desktop browser)
the finance container (where we chose Entries & Balance) should be 100% of screen width
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?
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.
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.
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€
Current login email looks like this:
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.
add all entries which are send over push notification to a table.
provide an pagination api call for this table
provide view on client
Make profile image with smart phone camera in portrait mode. After upload the image is rotated.
Currently images are stored in database and loaded via a base64 data url. Change this.
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.
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
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.
LoginApiDelegateImpl::loginPut has already the line commented. If enabled, the code throws an exception.
Read the current git tag (or hash) and show it in about tab.
Do we need to show client and server version?
Notification code: src/untils/NotificationUtils.ts
Notifications arrive but on click listeners are ignored.
looks like it is visible if the inserting user is not the current user of the app.
A pagination server api endpoint is needed for this.
Implement native notifications over service-worker.
Open Tasks:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.