Code Monkey home page Code Monkey logo

seven23's Introduction

Seven23 webapp

Build action badge Documentation Status Status License: MIT

Fully manual budget app to track your expenses. Completely opensource, with privacy by design.

App can run on device, no account needed, but need a server instance to sync and backup your data. Server code is also open source and available as a separate repository: seven23_server.

Seven23 Screenshot

Quickstart

Run locally

nvm use
npm i
npm start

Run backend lcoally

npm run backend

Run locally from public docker image

docker run -p 8000:80 sebastienbarbier/seven23_app

Web app is available at http://localhost:8000

Building docker

docker build -t seven23_app -f Dockerfile .
docker run -p 8000:80 seven23_app

Web app is available at http://localhost:8000

seven23's People

Contributors

crmanso avatar dependabot[bot] avatar niwo avatar sebastienbarbier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

seven23's Issues

Fix CategoryField selecting wrong item

When clicking on a category within the autocomplete field, the selected one is always the first instead of the expected one.

Screen.Recording.2022-10-03.at.12.35.26.mov

Expected behavior

Correct item is selected. CSS issues can be ignored for now.

Update dependancies

Many dependancies are outdated and need to be updated.

$ npm outdated
Package                                         Current          Wanted          Latest  Location
@babel/cli                                       7.10.5          7.17.6          7.17.6  seven23
@babel/core                                      7.11.0          7.17.5          7.17.5  seven23
@babel/plugin-proposal-class-properties          7.10.4          7.16.7          7.16.7  seven23
@babel/plugin-transform-runtime                  7.11.0          7.17.0          7.17.0  seven23
@babel/polyfill                                  7.10.4          7.12.1          7.12.1  seven23
@babel/preset-env                                7.11.0         7.16.11         7.16.11  seven23
@babel/preset-react                              7.10.4          7.16.7          7.16.7  seven23
@date-io/moment                                  1.3.13          1.3.13          2.13.1  seven23
@material-ui/core                                4.11.0          4.12.3          4.12.3  seven23
@material-ui/icons                                4.9.1          4.11.2          4.11.2  seven23
@material-ui/lab                         4.0.0-alpha.56  4.0.0-alpha.60  4.0.0-alpha.60  seven23
@material-ui/pickers                             3.2.10          3.3.10          3.3.10  seven23
@sentry/browser                                  5.20.1          5.30.0          6.18.2  seven23
@sentry/webpack-plugin                           1.12.0          1.18.8          1.18.8  seven23
@stripe/stripe-js                                 1.8.0          1.24.0          1.24.0  seven23
async                                             3.2.0           3.2.3           3.2.3  seven23
autosuggest-highlight                             3.1.1           3.1.1           3.2.1  seven23
axios                                            0.21.4          0.21.4          0.26.1  seven23
babel-jest                                       26.3.0          26.6.3          27.5.1  seven23
babel-loader                                      8.1.0           8.2.3           8.2.3  seven23
blueimp-md5                                      2.17.0          2.19.0          2.19.0  seven23
clean-webpack-plugin                              3.0.0           3.0.0           4.0.0  seven23
css-loader                                        4.3.0           4.3.0           6.7.1  seven23
cypress                                          4.11.0          4.12.1           9.5.1  seven23
d3                                               5.16.0          5.16.0           7.3.0  seven23
dotenv                                            8.2.0           8.6.0          16.0.0  seven23
eslint                                            7.6.0          7.32.0          8.11.0  seven23
eslint-plugin-cypress                            2.11.1          2.12.1          2.12.1  seven23
eslint-plugin-prettier                            3.1.4           3.4.1           4.0.0  seven23
eslint-plugin-react                              7.20.5          7.29.4          7.29.4  seven23
file-loader                                       6.0.0           6.2.0           6.2.0  seven23
history                                          4.10.1          4.10.1           5.3.0  seven23
html-webpack-plugin                               4.3.0           4.5.2           5.5.0  seven23
http-server                                      0.12.3          0.12.3          14.1.0  seven23
husky                                             4.2.5           4.3.8           7.0.4  seven23
jest                                             26.4.2          26.6.3          27.5.1  seven23
jose-jwe-jws                                      0.1.6           0.1.6           0.2.2  seven23
moment                                           2.27.0          2.29.1          2.29.1  seven23
node-sass                                        4.14.1          4.14.1           7.0.1  seven23
postcss                                          7.0.32          7.0.39           8.4.8  seven23
prettier                                          2.0.5           2.5.1           2.5.1  seven23
pretty-quick                                      2.0.1           2.0.1           3.1.3  seven23
prop-types                                       15.7.2          15.7.2          15.8.1  seven23
react                                           16.13.1         16.14.0          17.0.2  seven23
react-autosuggest                                10.0.2          10.1.0          10.1.0  seven23
react-codemod                                     5.2.2           5.4.3           5.4.3  seven23
react-dom                                       16.13.1         16.14.0          17.0.2  seven23
react-dropzone                                   11.0.2          11.7.1          12.0.4  seven23
react-hot-loader                                4.12.21          4.13.0          4.13.0  seven23
react-redux                                       7.2.1           7.2.6           7.2.6  seven23
react-router-dom                                  5.2.0           5.3.0           6.2.2  seven23
react-select                                      3.1.0           3.2.0           5.2.2  seven23
react-swipeable-views                            0.13.9          0.13.9          0.14.0  seven23
redux                                             4.0.5           4.1.2           4.1.2  seven23
redux-thunk                                       2.3.0           2.3.0           2.4.1  seven23
sass-loader                                       9.0.3           9.0.3          12.6.0  seven23
start-server-and-test                            1.11.2          1.14.0          1.14.0  seven23
style-loader                                      1.2.1           1.3.0           3.3.1  seven23
stylelint                                        13.6.1         13.13.1          14.5.3  seven23
url-loader                                        4.1.0           4.1.1           4.1.1  seven23
uuid                                              8.3.0           8.3.2           8.3.2  seven23
webpack                                          4.44.1          4.46.0          5.70.0  seven23
webpack-cli                                      3.3.12          3.3.12           4.9.2  seven23
webpack-dev-server                               3.11.0          3.11.3           4.7.4  seven23
workbox-webpack-plugin                            5.1.3           5.1.4           6.5.1  seven23
workbox-window                                    5.1.3           5.1.4           6.5.1  seven23
worker-loader                                     3.0.2           3.0.8           3.0.8  seven23

Modal re-open when changing account

In transaction list, click on add button to display form in modal. Close modal. Change Currency or account, modal re-open then close immediatly.

Crash on data display in Safari from IndexedDB

Loading animation keep spinning, console shows error on Transaction Store with en error Event from IDBRequest.

message: "An unknown error occurred within Indexed Database."
name: "UnknownError"

First seen on iOS, same on Safari.

End to end encryption

Data are for now stored in plain text in postgresql. Would be nice to have end to end encryption.
We need to migrate existing data, and review the current forgotten password.

Category list in transactions view ignores incomes

Developed by design, this seams confusing and not making much sense. This ticket is about removing the filter to ignore incomes and have the sum of category including them both.

This make sense as most people usually separate expense and income categories.

Rebranding: New name

Current name doesn't seams to work great, this issue is a starting point do discuss alternatives.

Current Name : Seven23

Current name is related to the fact when I started this project back in 2010, I had a 723€ salary for my monthly spending. Biggest concern with the name is that people do not remember it properly. First name was 723e, then became seven23. A short cut has been created as S23 but sound too close to N26.

Current domain name: seven23.io, and s23.io

A New Name

Seaking for ideas, any suggestion is welcome. Hopefully, suggestion should be positive and help users on daily basis to be rigourus about their tracking.

Ideas:

  • Makeitcount.io
  • Nomadbudget
  • FrankBudget (playing with the idea of an honnest budget, impersonnalised as a character, Frank).
  • RedBudget
  • LeanBudget

Offer monthly subscription

Saas version should allow user to subscribe on a monthly basis
This require to update current paiment method improve the integration within strip.

App update is not clear in app

When starting the app, service worker look for an updated version of source code and may suggest a reload using a popup to use the latest version. However such popup disappear after 5 sec and there is no way to update the app without it which might be really frustrating.

  • Popup event should also display an update message on dashboard with a link to update

An other issue is the fact that service worker search for en update on first load only, but app can be cached on some browser and never reload. It would be better to search for an update once a day.

  • App should look for update once a day and not only on load.

Error, state.account is null, cannot access account.*

Reports shows that a few users managed to have state.account equal to null null, creating multiple error access for state.account.currency and state.account.youngest.

Can be reproduced when trying to login with local account set.

Create category in transaction form

Should be possible to create a category directly from transaction form. This way, we would not have to go to category, then come back to transactions.

Handle uncaught exception with a bug report view

When crashing in an unexpected way, the application is no longer responding, displaying often a blank colored screen.

Example of a blank colored screen when seven23 crash on iPhone

Bug handler should send a Sentry report, some related error message, disable workers, offer a restart or logout or resync of your data.

  • Catch exception and display error window with actions to try solving the error

Too many currencies

Having too many currency, might get difficult to see the one we are interested. Works ok with auto compelte form like in transaction, but not so great in popup menu.

One solution could be to have a search on top, or to create in settings a selector for favorite currencies to only show those we are interested in.

Second option seams better, but is also longer to implement.

Fix false positive update notification on iPhone

When starting seven23 as PWA on the iPhone, the app trigger way too often a false positive for an available update.

Expected behavior

Update notification only appears when an update is available.

"Welcome back 👋" popup appears way too often

By design, the app should display a "Welcome back 👋" popup if a user has not used the app more than 24h.

Screenshot 2020-02-08 at 07 48 30

This popup is displayed on the app show event, and should update a lastSeenDate to make sure it does appear only once a day but seams like it still appear on multiple occasion. This might come from a broken update of such value.

Delete user account

We are missing a feature to let a user delete its account.
This should delete the user account, and all relative data from current database and all backups to be strict regarding GDPR.

Add recurrent transactions

Monthly transactions would be great to automatically handle recursive expenses as rent, salary, phone contract, etc...

Would need a starting date, potentilly an ending date. Need to update backend with data structure first. Ticket as been created : sebastienbarbier/seven23_server#26.

Crash on sync when app edit before creating

In some cases, front end send an edit request to a transaction which has not been created yet. Unsynced transaction have a uuid as id, where sync transaction have a PrimaryKey value as id. For some reason, the app lose track and send edit of unsynced transactions which crash backend (500), and block front-end in a cannot sync state anymore.

This ticket is about improving front end to handle better this case (avoid blocked state) and remove/fix that unexpected behaviour.

Debitcredits: invalid literal for int() with base 10: 'a6431d9-df04-4c62-8277-3b98ab23a4a8'

Bug report from sentry, this issue occurs when a user try to edit a transactions which is loaded in the edit form but while displayed has been synced.

Synced transactions use integer pk, local transactions (or before sync) use a uuid pk

This error was produced on https://seven23.io/api/v1/debitscredits.

As this error is produced once, user end up in an unstable state and need to force logout then login again to be abel to sync.

Fix Datefield crash when editing the Textfield manually

When editing any Datefield using they Keyboard, an uncaught error crash the all application.

Uncaught Error: String 'NaN-aN-aN' is not a valide date format (YYYY-MM-DD)
Screen.Recording.2022-10-03.at.12.28.59.mov

Expected behavior:

The error should be catch and an error message displayed within the form.

Modals does not display well on mobile

Most form are displayed in modals, but those are not optimum on mobile platform.

One solution could be to override default modal to create a new one more mobile friendly. Other alternative might be to no longer use modal for forms and define our own UI.

Make dashboard more relevant for new users

Dashboard doesn't look for new users, it is quite empty and has been designed for at least a month of data. This task is about making the dashboard more friendly for new users.

New user should be invited to populate a week of data to start having notion of improvement or scale.

  • Provide flexibility on graphs and data to be relevant to a week.

Crash when add date Transaction

When i try to add date transaction the app go to empty windows. The way to add date is click on the input and write only simple date format without time.

imagen

QuotaExceededError on localStorage with Safari

Redux use localStorage to persist state when closing the app.
In case of a large state, like a large number of transaction, storing fails and trigger a console log:

Error storing data
QuotaExceededError: The quota has been exceeded.
    setItem
    (anonymous function)
    Promise
    setItem
    writeStagedState
    processNextKey
    onWriteFail — createPersistoid.js:109
    promiseReactionJob
    onWriteFail — createPersistoid.js:109

As data as stored using IndexedDb, an alternative might be to load those data on load instead of kepeing them in state.

Add a new calendar graph

Calendar view is great to see changes at a time level. Such graph could be useful within the dashboard, transactions, category, and report view.

A new component should be created using the D3 calendar view example.

  • Create new component
  • Add to report
  • Add to dashboard

Transaction Date Incorrect Upon Submission and Editing

I noticed an issue regarding transaction date being wrong.

Steps to reproduce

  • Locally no sync (running only through app.seven23.io), the updated date (console logged and displayed on frontend) is one day ahead of the selected date (editing and submitting on the left)
    • Running Chrome Mac, and also issue on Chrome Android
    • Add a new transaction with date of Aug 15, 2020, then submit
    • Date shown on the frontend is Aug 13, 2020 which is two day ahead of the submitted date
    • Edit the transaction back to Aug 15, 2020, then submit
    • Date shown in the frontend is Aug 14, 2020 (attached screenshot with console log) which is one day ahead of the submitted date
  • Deployed on Heroku, it seems like I am having the same issue, but sometimes it will be three- or four-days ahead.
    • Once synced, the date does not change, and appears to be the same across all sessions

Screen Shot 2020-08-17 at 10 52 07 PM

Let me know if this is reproducible anywhere.

Transfers between accounts

I think it is good option could transfer money from differents accounts. For example if i have a credit account i can transfer money from my back account (Expenses) to credit account (with one Income)

Thank you very much for your work i think is wonderful this application and sorry for my english

Handling local URLs

I'm poking around with seven23 server in my home server. Its address is a local one, like "192.168. ..." and I don't want to face it to the Internet.

With the chrome dev tools I can see that the web app prepends "http://" to the local URL so that it becomes "http://192.168. ...":

_url = `http://${url}`;

Obviously it fails to connect to my home server because it can be reached with "192.168. ..." but not with "http://192.168. ...". Am I missing something here? Am I doing something wrong?

Improved enrollment for new users

Our goal is to improve the enrollment process and making it faster by starting only with a local account. Only after creating few transactions would a user be informed and introduce tot he cloud offer.

This task involve :

  • Refactor welcome page as URL pages instead of modal view.
  • New account form with better UI.
  • Refactor new account.
  • Enable tips/tutorial on dashboard to guide new users.

Switch to redux

Current implementation use Flux but using Redux should simplify our code.

MonthLineGraph try to access .datum or .line of undefined

MonthLineGraph is the component on dashboard displaying the graph. It is using d3 inside a react component and show signs or uncomplete integration as some usecases do not work well so far.

Those errors do not stop the application and only appear in console.

Import csv from banks accounts

Maeby is good idea if we can importa a csv with a movement from the bank account.

something simple like, title;amount;Currencies;type(income/expense);date;

Is It posible?

Decimal mark on price should be coma AND point

Right now, only point is a valid decimal mark. Coma should also be a valid option.

OK : 19.9
Not OK : 19,9

Error is triggered and not catched > TypeError: transaction.date is undefined
UI end up in infinite loop.

Overview of all accounts

Implement an overview of all accounts. Could be added on existing dashboard, or as a dedicated view.

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.