Coder Social home page Coder Social logo

bluehuskystudios / rent-split Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 1.0 85.61 MB

Calculates what your portion of the rent should be.

Home Page: https://Split.Rent

License: MIT License

HTML 0.31% JavaScript 92.13% Kotlin 6.96% Java 0.01% Ruby 0.01% SCSS 0.56% Shell 0.01%
rent calculator finance financial personal-finance kotlin kotlin-js

rent-split's People

Contributors

kyleggiero avatar supuhstar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

maxmckenzie

rent-split's Issues

GoDaddy fucked us

GoDaddy fucked us over, and our stylesheets were hosted on their servers, so basically no styles are loading. Time to re-create them with Neon!

Add shared income mode

Some homes share their income among their residents. For them, it makes more sense to input one income and still split it amongst the roommates based on who uses which expenses

Add undo option for deletions

There should be a lil popup at the bottom when an item is deleted, with an option to undo. It should be there for a few seconds so the user has a chance to click it. It should not auto-dismiss when the user is showing their attention (e.g. hovering, clicking, tapping, swiping, etc.). When multiple items are deleted, they should stack.

  • Popup at bottom of page
  • Popup allows user to restore the item they just deleted
  • Popup auto-dismisses after a couple seconds
    • Popup will not auto-dismiss if it's clear the user is interesting in interacting with it
  • Popup has a way to be manually dismissed
  • Each item summons a new popup
  • Popups stack

Select portions

I would like to see the feature to select what portion should be paid regardless of income.

IE. A bill for the water my roommate uses 2/3 and I use 1/3. We would create our requirements based on our usage.

Share URL is too long

For my monthly split (4 people and 24 expenses), the share URL is 3,554 characters long.

The current approach is:

  1. Save the app state as a JSON string
  2. Apply URL Encoding to percent-encode most special characters
  3. Append that to the base URL in the generalState query parameter

I propose that we instead do this:

  1. Save the app state as BSON data
  2. Apply Base64 encoding
  3. Append that to the base URL in the b query parameter (b for BSON, and b for second iteration)

We should always accept the old approach, so that old URLs always work. However, we should default to this approach instead

option to disable the autosave?

Is there an option yet to disable the autosave once you have selected to save or an option to start fresh as if opening the rent splitter for the first time? A toggle for saving would be appreciated.

Excise Patreon

The values of Patreon no longer overlap with those of Blue Husky Studios. Any reference to Patreon should be removed and replaced with an alternative service.

Better URL shortener

Unfortunately, after #29 was implemented with #40, https://goo.gl was announced deprecated, to be discontinued March 30, 2019.

In light of this knowledge, we should move to an alternative, such as https://bit.ly or https://tinyurl.com

While we're at it, we should allow the user to opt into this feature, and perhaps give them a choice of shorteners

Add special image for URL sharing

When sharing a URL with a state already in it, the sharing preview image should reflect that.

This will be difficult because our HTML is static, and interpreters won't be running our JS. We'd have to serve the HTML dynamically. This fact makes this issue low-priority.

More semantic data structures

Roommates and Expenses are so similar, they could be shallow subclasses of a standardized parent class.

Constants at top can be placed into a class-based hierarchy. For instance:

data class DataAttributeSelector(dataName: String)

val somethingSelector = DataAttributeSelector(dataName = "something")
// This "something" when requesting or writing data from an element by using JS APIs,
// "data-something" when looking for or inserting an attribute in an element,
// "[data-something]" when selecting all elements that have the "something" data attribute,
// and a function taking "foo" for "[data-something='foo']" for selecting just those elements who have the "something" data attribute set to "foo"

Improve README

I wanna see:

  • some badges
  • a synopsis of what this app is all about
  • fix that header image
  • a link to the iOS version

Allow expenses that are limited to one roommate

Doesn't have to be one, just less than the total. So like:

  • Alex, Bri, and Chris share an apartment (for the sake of simplicity, say they all make the same salary)
  • Bri has a dog
  • The complex charges a $10/month pet fee
  • Alex and Chris don't want to pay this fee since they don't own the pet
  • Bri will be the only one paying the extra $10

Or this:

  • Bri and Chris share a car
  • The complex charges a monthly $50 parking fee (it's in a big city)
  • Alex doesn't want to pay this fee since they don't own or drive the car
  • Bri and Chris will split this fee each month, each paying $25

Requirements:

  • #6.1 UI to specify which roommates contribute to an expense
    • #6.1.1 UI to show when an expense does not apply to all roommates
    • #6.1.2 UI to easily reset this filter
    • #6.1.3 UI must not allow an expense to apply to no one
  • #6.2 Mobile support
    • #6.2.1 A replacement for hover effects
  • #6.3 Saved in local storage
    • #6.3.1 Loaded from local storage
  • #6.4 Totals must reflect this filter
    • #6.4.1 If an expense applies to no one, it must show something that is not a dollar amount
    • #6.4.2 If all expenses apply to everyone, totals must behave the same as before this feature
    • #6.4.3 If an expense applies to some roommates, it must be split proportionally among only those, with the others seeing none of it

Last sentence of auto-save text is nonsense

It reads:

If you don't want me to do this, that's fine! I'll only do it if you click the Turn on auto-save! 🍪 button and I won't save anything.

And it should read:

If you don't want me to do this, that's fine! I'll only do it if you click the Turn on auto-save! 🍪 button.

Add multiple save states

Perhaps I have multiple scenarios I'm working on at once, or figuring out a split for my friends (not roommates) but don't want to lose the split for myself. There should be a way to save multiple states at once.

Add Gradle support

We should use Gradle to build, especially so it can clean up the output JS. This probably goes along with #8

Add tests for CI

Circle CI "builds" keep failing, so we should add tests that it can actually run.

Add Favicon to page

The app has only the default icon. It should have the app's logo instead.. Might depend on #15

Shorten share URL

The current share URL is too long; we need to look into shortening it while still leaving it open to manipulation by external APIs. This might pair well with #25

Add license

The webpage has always stated that this is available under BH-1-PS, but that license is not included in the repo

Smoother introduction on page load

We do place a rent-ready class into the <html> element, so we should use that to hide the main section until all calculations are done, the page is mutated, and nothing's gonna twitch.

Add a grand total

Currently, no field exposes the absolute total of all expenses combined. It might be useful to see that.

Allow link sharing

The user should be able to share a link to the current state of the page, especially for showing their roommate

Add BHSP as subrepos

There are already plenty of files masquerading as pieces of Blue Base, Husky UI, and Husky IO. We might as well have the whole shebang at our fingertips!

Version number is incorrect

The version number reads 2.5.0 even though it's 2.5.1. Also, when clicked, it brings me to the release notes for 2.4.9

Implement state saving

The state should persist across refreshing and browser sessions.

This should probably be a cookie, which should be loadable via URL parameters.

Add a mortgage mode

It would be neat to see what the estimated actual cost of a home would be. Like this, but with utilities, internet, etc:

image

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.