Giter Site home page Giter Site logo

treyww / myfinances Goto Github PK

View Code? Open in Web Editor NEW
89.0 89.0 134.0 9.35 MB

MyFinances is a web application that can help you as an individual, or team, manage your finances!

Home Page: https://docs.myfinances.cloud

License: GNU Affero General Public License v3.0

Python 65.06% Dockerfile 0.15% Shell 0.04% JavaScript 1.60% HTML 32.41% CSS 0.74%
beginner-friendly django good-first-issue html open-source python tailwind tailwindcss

myfinances's Introduction

Hi there ๐Ÿ‘‹

myfinances's People

Contributors

allcontributors[bot] avatar artkolpakov avatar atulanand25 avatar bermr avatar blocage avatar chavi362 avatar davidbarrette00 avatar dependabot[bot] avatar domejko avatar flyingdev avatar fos9191 avatar harryhucodes avatar hesstaha avatar introkun avatar jaypee15 avatar kliu6151 avatar nout-prins avatar nuovaxu avatar philipzara avatar romana-la avatar ryansurf avatar sbmoyo avatar sharonaliyas5573 avatar silviupe avatar spalominor avatar tianrui-luo avatar treyww avatar v-j-jpg avatar wnm210 avatar z3nkrypt 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

Watchers

 avatar  avatar  avatar  avatar

myfinances's Issues

[Enhance] Need a new test for testing that a client gets returned (old test disabled)

We need a new test to replace this, now i've moved the table loading to HTMX,
Our old test is

    def test_clients_check_clients_get_returned(self):
        self.client.login(username="user", password="user")
        # may need this
        #headers = {
        #    "HTTP_HX-request": "true",
        #}
        response = self.client.get(reverse("clients dashboard")) # may need this too, **headers)
        amount_of_clients_returned = len(response.context["clients"])
        self.assertEqual(amount_of_clients_returned, 0)

        Client.objects.create(
            name="bob smith",
            user=response.wsgi_request.user,
        )

        response = self.client.get(reverse("clients dashboard"))
        amount_of_clients_returned = len(response.context["clients"])
        self.assertEqual(amount_of_clients_returned, 1)

The file is backend/tests/views/test_clients.py

So pretty much, the test checks how many clients get returned before + after you create a client to make sure the for loop works. But now we use HTMX to get the returned data seperately, the variable "clients" isnt passed into the page.

If anyone would like to work on this, leave a comment below. I could help explain more, but not sure how to actually achieve the logic. Thanks

[Feature RQ] [B #4] Invoicing - Create

Create an invoice

Preconditions:

  • Step 1:
    • "FROM" and "TO" Containers when pressed bring up modal.
    • Two options, they can either enter their details manually, or select a premade "customer"
  • Step 2:
    • Issue and due dates
  • Step 3:
    • Services
    • These are listed in a list that you can add and remove from using JS

Acceptance Criteria:

  • All 3 steps completed

Definition of Done:

  • Created tests/urls logged_in.json and unlogged_in.json json objects for any added URLS
  • Created tests/views for any added VIEWS and create invoice view
  • Code has been tested with both python manage.py urls_test and python manage.py test_views
  • All of Acceptance Criteria is complete

References

list of products or services
customer invoice
main create invoice
multi step design

[FEATURE] Profile

Profiel page

Preconditions:

Past issue has finished to allow blah blah

Acceptance Criteria:

  • please do task a
  • please do task b

Definition of Done:

  • code has been tested
  • all tasks are completed

[IDEA] Goal Tracking

Set and monitor financial goals (e.g., saving a certain amount, paying off debt).
Visualize progress towards goals.

[IDEA] Index

New index which doesnt use base, and doesnt need to be logged in, seperate from main dashboard.

[FEATURE] Receipts

I want to be able to store expense receipts in S3 / local storage.

Preconditions:

Two pages;

Upload Receipt

  • This page prompts the user to upload their receipt, and asign it a name, and "date bought"

List Receipts

  • This page shows the user all of their saved receipts in a nice table
  • Users can click on a receipt and: View an image in browser, which is like a modal popup and also download it to their device
  • Users can also delete the receipt

Acceptance Criteria:

  • Created both pages

Definition of Done:

  • Created tests/urls logged_in and unlogged_in json objects for any added URLS
  • Created tests/views for any added VIEWS
  • Code has been tested with both python manage.py test
  • All of Acceptance Criteria is complete

[Feature] Receipts upload modal and receipts view modal

Since moving to DaisyUI I haven't yet added a modal for receipt uploads. So they dont work at all at the moment.

Definition of Done:

  • Created tests for any added view functionality
  • Code has been tested with python manage.py test
  • Feature is added

[IDEA] Budgeting

Set budget goals and categories (e.g., savings, investments, spending).
Compare actual expenses against budgeted amounts.
Receive alerts when approaching budget limits.

[FULL FEATURE] Income and Invoicing

This is a full feature, so the branched features are listed at the bottom

Create and manage invoices for clients.
Specify client details, services provided, hours worked, rates, etc.
Generate unique invoice IDs.
Automatically calculate totals and taxes.
Provide options for recurring invoices.
Send invoice notifications to clients via email.

Preconditions:

Past issue has finished to allow blah blah

Acceptance Criteria:

  • please do task a
  • please do task b

Features

#39

[Feature RQ] Documentation for adding github and google login auths

Need to add some documentation somewhere to show users how to add goole and github oauths

References for how you can add it
Github
Google

Pretty much just need to do this to add them:

  • Add your env variables
GITHUB_KEY=
GITHUB_SECRET=

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_CLIENT_URI=

Here's a video which you can watch to add on github and here's a video you can watch to add on google
use #32 (comment) to create on github and google

I pretty much need you to just

  • Add a documentation page somewhere that outlines the steps (no videos). Thanks

[Enhance] Move items.html to context_processors

Move items.html to context_processors

Acceptance Criteria:

  • Move each item in frontend/core/partials/base/navbar/items.html to a list item in backend/context_processors.py

Definition of Done:

  • Code has been tested with both python manage.py urls_test and python manage.py test_views
  • All of Acceptance Criteria is complete

[Feature RQ] Modal Component

We need a modal component in HTML (with tailwind classes) inside of frontend/templates/components/

Preconditions:

Must have a working modal component that can have minimum of title and then also some basic input fields

Acceptance Criteria:

  • Please do task a
  • Please do task b

Definition of Done:

  • All of Acceptance Criteria is complete

[BUG] [VULNERABILITY] Any file extention is allowed, should only be PNG/JPG

I've realised that this field in models.py doesn't restrict the extention type at all. I thought django did this automatically, but it doesnt.

profile_picture = models.ImageField(
        upload_to="profile_pictures", blank=True, null=True
    )

I'm researching into this and will merge when i figure it out.
Feel free to comment if you know anything about this, and how we can restrict it to PNG/JPG etc, I did try a custom validator but couldn't get that to work. Still trying though

[BUG] Containers dont fit to screen when zoom level not 100%

Describe the bug
Settings UI not scaled full if the screen size isn't at 100% on chrome

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'account settings'
  2. Change zoom level to 100 - all good
  3. Change zoom level to 90 - not good, danger zone and sessions not all the way to end

Expected behavior
DZ and Sessions expected to be responsive and fit to screen

Screenshots
100% - Good
image
90% - Bad
image

Desktop (please complete the following information):

  • OS: Windows
  • Device Type: PC
  • Browser: Chrome

[FEATURE] Expense Tracking

Add/Edit/Delete expense entries.
Categorize expenses (e.g., server hardware, software, office supplies, etc.).
Upload and attach photos of receipts to expense entries.
Visualize expense data with charts and graphs.

Preconditions:

Past issue has finished to allow blah blah

Acceptance Criteria:

  • please do task a
  • please do task b

Definition of Done:

  • code has been tested
  • all tasks are completed

[Feature] Move UI to DaisyUI

I've been considering moving to DaisyUI for a while now, this is my only project still with RippleUI.

I love RippleUI, their colour scheme, some of the designs and all, but it's just lacking quite a few needed features. Over the next few weeks, I'm going to start moving all of our components to DaisyUI.

Anyone willing to help would be appreciated, but i'm fine to do it either way.

I have tried to keep RippleUI for the whole journey, but I think it'll make it easier for all of us to work on with a more built out library.

I'll post any updates here

[BUG] salt for hashed password secrets

Describe the bug
Change settings.SECRET_KEY in all of the password reset functions to be something different. As this would break all CODES if the secret key changes.

Files:

  • backend/views/core/passwords/view.py (37)
  • backend/views/core/passwords/generate.py (50)
  • backend/views/core/passwords/generate.py (82)

[Feature RQ] Image uploader to S3

We need a way to upload things like receipts, invoices, etc to S3 under the persons account ID and store the image under its own "id".

Preconditions:

Still need to add more info once i get it

Acceptance Criteria:

  • Please do task a
  • Please do task b

Definition of Done:

  • Created tests/urls logged_in and unlogged_in json objects for any added URLS
  • Created tests/views for any added VIEWS
  • Code has been tested with both python manage.py urls_test and python manage.py test_views
  • All of Acceptance Criteria is complete

[IDEA] Notifications and Reminders

Send notifications for upcoming bill payments, invoice due dates, etc.
Provide reminders for periodic tasks like generating invoices.

idea: Payments for invoices

Integrate with payment gateways for clients to pay invoices online.
Track payment statuses (paid, pending, overdue, etc.).
Generate payment links for each invoice ID.

Preconditions:

#4 must be finished

Acceptance Criteria:

  • please do task a
  • please do task b

Definition of Done:

  • code has been tested
  • all tasks are completed

[Enhance] Add test cases for new views

Hi,

We need to have some view test cases for all of our views on the main branch. We've not yet got a template for this, so if you want to have a shot at it then you can read the django docs

Thanks, please make a comment if you require more info

[BUG] Github Actions

Describe the bug
Need to sort out actions bug

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'latest action job'
  2. Click on 'Build and run docker-compose.ci.yml'

Expected behavior
Files that need to be fixed:

  • infra/backends/docker-compose.ci.yml
  • infra/backends/dockerfile

[IDEA] Currency converter

A page that allows the user to type in amounts, and select a currency and see the new amount.

Also in the future maybe an option to preload the amounts from their balance, history, or graphs.

[BUG] Preview of image is too large

Describe the bug
The image preview on the modal in /dashboard/settings/ is far too long, should display as a circle that is just zoomed in.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '/dashboard/settings/`
  2. Click on 'change' under "Profile settings"
  3. Edit your profile picture to something not square
  4. Go back on "Change" under "profile settings"
  5. See error

Expected behavior
Expected to be a circle

Screenshots

Image

[Feature] Profile Pictures

I'd like to soon implement avatar/profile pictures for users. As teams will soon be added, pictures are a nice touch.
This will need AWS S3 support to store the images if the user uploads. If you don't feel comfortable with this, make a start with just the image URL option.

Acceptance Criteria:

  • Have an option for URL or Image Upload
  • Settings page (something like this)
  • Make sure the user cant upload anything malicious
  • Make sure that the URL (or image) is stored in the database moedel UserSettings click here to find code

Definition of Done:

  • Created tests
  • Code has been tested with python manage.py test backend
  • All of Acceptance Criteria is complete

Add favicon and other icon options plus make My Finances button usable

Hello everyone! I am new here and I would love to contribute to this project. The suggestions I propose are very basic. I have already created a favicon and made the My Finance button on the left upper corner usable returning to the dashboard. What are the steps from my end to show my suggestions? Do I create first an issue and then a PR? Are there any specific criteria I must meet first?

I really appreciate any help you can provide.

Preconditions:

Past issue has finished to allow blah blah

Acceptance Criteria:

  • Please do task a
  • Please do task b

Definition of Done:

  • Created tests/urls logged_in and unlogged_in json objects for any added URLS
  • Created tests/views for any added VIEWS
  • [ โœ…] Code has been tested with python manage.py test backend
  • All of Acceptance Criteria is complete

[IDEA] Customers

Customers should be added. There should be a navbar tab for them too. They should have details such as Name, Address etc. And should be "loadable" (more info coming soon) on create invoices

[Enhance] Add SQLite option to settings + documentation

Before you add this enhance issue, please check all of the issues in this project to ensure it doesn't already exist

I believe SQLite should be added for easier support for new users / users that dont have a local database running

What areas does this enhancement come under?

  • Backend settings
  • Documentation Updates or Github Content

Some tips

  • You'll need "django.db.backends.sqlite3"
  • Probably need "BASE_DIR" and "db.sqlite3"

[Enhance] API that allows the downloads from media on permission only

At the moment media is accessible from anyone that's logged in, any media. So any account even a blank one can access all of /media. I don't want this. I want all of /media to be blocked permanently for all users.

Instead, I want some sort of API that you can request a file, so lets say in the receipts page, when you "download" your uploaded receipt, it generates you a link.
So lets say: /api/v1/receipts/download/<receipt_id> and that returns you
/cdn/media/<generated_one_time_link>

Almost like what we do with /invoices/manage_access, where we generate one time urls.

I just want to start planning this, will be needed finished before 0.2.0

[Enhance] We need MORE TESTS

Along with #85 we need some tests for all of the new pages i've recently created.

Also needs tests for the returned data from things like receipts, invoices etc.

One test (#85) will kind of be a template for the rest of them, but i'd appreciate any help

[FEATURE] Login

basic login

Preconditions:

Basic login page, with forgot password option

Acceptance Criteria:

  • Working logins
  • Only visit when not logged in
  • Cannot view index
  • must have a basic "main page" which anyone can visit, not linked to dashboard

Definition of Done:

  • login is functional
  • only visit when not logged in
  • cannot view index (moved to #13, cause i dont yet have an index)
  • code has been tested
  • all tasks are completed

[Feature RQ] Export all data to CSV

more info coming soon

Preconditions:

Past issue has finished to allow blah blah

Acceptance Criteria:

  • Please do task a
  • Please do task b

Definition of Done:

  • Created tests/urls logged_in and unlogged_in json objects for any added URLS
  • Created tests/views for any added VIEWS
  • Code has been tested with both python manage.py urls_test and python manage.py test_views
  • All of Acceptance Criteria is complete

[IDEA] Tax Estimation

Offer tools to estimate tax obligations based on income and expenses.
Provide tax-related resources or links to official tax calculators.

[IDEA] Team Projects

Allow multiple users to collaborate on financial management (useful for family members or business partners).
Define user roles and permissions to control access.

Task List

  • Created tests for all urls
  • Setup permissions page

[IDEA] Teams

Teams have been implemented slightly, you can now create a team, invite users to your team, leave a team etc
We now need the core functionality of teams, this kind of functionality would include: switching modes between "individual" and "team" mode, when in team mode you make actions on behalf of your team.

When you create actions, the thing like lets say Creating a client, the client would be assigned to the team rather than you, and in the team there would be a log of this action. (obviously you'd need permission [another issue im about to make] to do this)

What areas does this idea come under?

  • Frontend
  • Backend
  • Test Cases

Please add a comment below if you would like to help improve this feature, thanks

[IDEA] Enhance issue template

I'd like somebody to create an "ENHANCE" template, based on the other .github/issue_templates, that gives the "enhance" label and [Enhance] or [ENHANCE] prefix.

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.