Giter VIP home page Giter VIP logo

simonwep / ocular Goto Github PK

View Code? Open in Web Editor NEW
66.0 2.0 9.0 4.95 MB

๐Ÿ’ฐ Simplistic, beautiful and straight-forward budgeting app to track your budget across the years. Easy to use, to get started and to set up.

Home Page: https://ocular.reinisch.io

License: MIT License

HTML 1.15% Vue 68.33% TypeScript 22.96% SCSS 7.23% Dockerfile 0.33%
budget-app budgeting finance finance-management self-hosted budgets cash-flow expenses financial personal-finance vue3

ocular's Introduction


Logo


โœจ Ocular - Helps you see your budgets more clearly โœจ

CI Status

Tip

Check out the demo to get a live preview with demo data!

Features

  • ๐Ÿฆพ Self-hosted. Deploy it via docker-compose in seconds.
  • ๐Ÿ•ถ๏ธ Beautiful light and dark theme.
  • ๐Ÿ’ป Installable as a PWA.
  • ๐Ÿ”ผ Import your data from Google sheet's annual planner.
  • ๐Ÿ› ๏ธ Export your data as a single .json-file.
  • โœจ Dashboard with sankey diagram and a detailed view.
  • ๐ŸŽ‡ Track budgets across multiple years.
  • ๐Ÿ™ˆ Privacy mode for when you're in a public place.
  • โšก๏ธ Simple, fast and straight-forward UI.
  • ๐Ÿซ‚ User management and authentication.
  • ...and more to come!

Summary

Ocular is a small budgeting app as an alternative to Google sheet's annual budget planner. Its goal is not to track individual expenses, work with multiple currencies at a time or anything related (if you're looking for something like this, check out firefly-iii).

This app comes with its own backend (by using genesis), so the only thing you need to do is to host it somewhere. Your data stays on your server and is not shared with anyone else.

Setup

Development

  1. Make sure you have the latest node LTS installed.
  2. Install pnpm via npm i -g pnpm.
  3. Clone this repository.
  4. Run pnpm install in the root directory.
  5. Copy the .env.example to .env, you can leave the default values.
  6. Start the backend with pnpm run genesis.
  7. Start the frontend with pnpm run dev.
  8. Open http://localhost:3000 in your browser.

Note

To modify the backend, head over to genesis.

Production

This app can be deployed using docker-compose. See ocular-docker for deployment.

Contributing

If you want to work on this, make sure to out the contributing guidelines :) Other than that, follow the steps under development to get started.

ocular's People

Contributors

simonwep avatar taylantatli avatar thedmmatt 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

Watchers

 avatar  avatar

ocular's Issues

Add privacy mode

Especially when working in a public place it'd be nice to have a mode where all numbers are somewhat hidden and only visible on hover.

Fill row / fill to right not working in safari

Support guidelines

  • I've read the FAQs

Description

The fill row and fill right does not work in my browser Safari

Environment

  • Browser : Safari 17.5
  • OS : Mac Monterey 12.7.5
  • Docker compose release 1.2 (image 1.4)

Expected behaviour

Data flow into columns as expected

Steps to reproduce

No response

Additional info

No response

Add offline capabilities

Right now, the data is only one giant object that could be stored locally and synced if the user comes back online.

Add fortnight option

Support guidelines

  • My request extends the functionality of Ocular in a meaningful way.
  • I've used the search and this has not been requested before.

Description

Instead of monthly columns, show fortnightly.

Solution

As I get paid fortnightly, it would be nice to be able to specify my 1st fortnight pay date for the year and have columns self populate the dates per fortnight for the rest of the year. Then I can manage my budget per fortnight instead of per month.

What are alternatives?

No response

Additional context

No response

Make mobile design look more native

When installing the app as a PWA on a mobile device, it still looks quite like a website. With buttons a tad too small and too many menu items. The text could also be bigger.

Also, the app is for some reason rounded even though it's in fullscreen on mobile devices.

Show warning if user is offline

Support guidelines

  • My request extends the functionality of Ocular in a meaningful way.
  • I've used the search and this has not been requested before.

Description

Unti #30 is resolved it'd be nice to show a warning if the user is offline since the app comes with a service-worker that loads the page as usual without having internet access.

Solution

Display a banner or disable the login button.

What are alternatives?

None, it just won't work.

Additional context

No response

Currency configuration not applied globally

I've found a bug and checked that ...

  • ...there are no open or closed issues that are related to my problem
  • ...it's definitely a bug and not a feature request

Description

Loving using Ocular
I set the currency to be GBP.
Income and expenses pages use this setting.
In Dashboard the top row uses GBP, but the (nice) lower display still shows $ (default presumably)

Environment

Browser : Safari 17.5
OS : Mac Monterey 12.7.5
Docker compose release 1.2 (image 1.4)

Expected behaviour

All tables/charts should sow the user set currency.

Steps to reproduce

No response

Additional info

No response

Make it more accessible on mobile devices

Currently, the app is rather difficult to use on small screens due to tables:

This issue includes:

  • Adding a different way of viewing / entering data in budget-panes.
  • Displaying only one month at a time in the dashboard summary tab.
  • Hide or adjust the position of context menus.

Add quick actions to cells

For starters it'd be nice to have a "fill row" and "fill all to the right" action to the cell you're currently editing.

Convert dashboard overview to one single table

Right now, Income, Expenses and Summary are separate tables:

image

Causing 3 separate scrollbars on both small desktops and mobile devices:

image

If we use one (giant) table for all, we will have only one scrollbar as well as more space around and on the sides (due to the borders being redundant).

Add a way to view monthly expenses on the dashboard

Right now theres only one sankey-diagram showing the income / expenses of the whole year. It'd be nice to take the average of everything and add a button to display the same diagram on a monthly basis.

Improve contributing guidelines

The contributing guidelines need to be improved. E.g. how to...

  • Add a new language/currency?
  • Propose / add a new feature?

We also need issue and merge-request templates

Start financial year on date set by user

Support guidelines

  • My request extends the functionality of Ocular in a meaningful way.
  • I've used the search and this has not been requested before.

Description

Start "year" on user-defined date or month

Solution

Current system works on assumption that financial year is same as calendar year, i.e. starts in January.
This is not always the case.
It would be great if the user can set a start date or start month, in the UI or in a config file.

What are alternatives?

No response

Additional context

No response

Allow users to copy over one year to another

In most cases you always have a "default" set of categories / budgets which are used every year. Instead of starting from scratch every time it'd be nice if there was an option to copy over one year to another.

Using a different genesis url when deployed

I've found a bug and checked that ...

  • ...there are no open or closed issues that are related to my problem
  • ...it's definitely a bug and not a feature request

Description

OCULAR_GENESIS_HOST does not like being set to "/" "" or null

Environment

OCULAR_GENESIS_HOST="/"

Expected behaviour

OCULAR_GENESIS_HOST uses the root and not /api

Steps to reproduce

No response

Additional info

No response

Add new settings page

The user should have the ability to configure the planner according to their needs. This may include:

  • Changing the currency.
  • Changing the locale manually to something different than the browsers default.

Support to Portuguese (Brazil) and BRL/R$

Should this be good for everyone, I'll start working on adding Brazilian Portuguese as a language option, as well as Brazilian Real (R$) for currency.

General Tracking

  • Review contribution guidelines
  • Fork main repository
  • Create PT-BR json file
  • Adjust language indexer file
  • Commit changes
  • Pull request

Review Tracking

General

  • Login screen
  • About Ocular screen
  • Tooltips on over
  • Tip/help texts

Menus

Tools

  • Option list
  • Change password screen

Admin Settings

  • Option list
  • Create user screen
  • Manage users screen

Year Selection

  • Option list

Language Selection

  • Add Portuguese (Brazil) - just translation
  • Add Portuguese (Brazil) - full feature

Currency Selection

  • Add Brazilian Real - just translation
  • Add Brazilian Real - full feature

Pages

  • Dashboard view
  • Table view
  • All time overview
  • Income
  • Expenses

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.