Giter VIP home page Giter VIP logo

pocketmoney's Introduction

BUDGETINGkid

It's a debt management app that creates a formalised record of debts between you and your friends.

Requirements

  • postgresql
  • ruby 2.7.4
  • rails 6.1.4

Installation

  • clone repository
  • create config for database.yml
  • bundle install
  • bundle exec rake db:create
  • bundle exec rake db:migrate
  • bundle exec rake db:seed

Database configuration

Execute this command to configure database:

$ cp config/database.yml.example config/database.yml

Run app

To run app, you need to start a web server on your development machine. You can do this by running the following command in the blog directory:

bin/rails server

To see application, open a browser window and navigate to http://localhost:3000.

pocketmoney's People

Contributors

andreybakanovsky avatar ka8725 avatar koleshkos avatar vladislavsokov avatar

Watchers

 avatar

pocketmoney's Issues

Children transactions table improvements

  1. Update transactions order to "created at desc"
  2. If the name is provided show it instead of the email
  3. Do the same on the "Weekly Automatic Topups" table

We also should add a "load more" button. But by default, it should show 10 transactions. On the button click it should show the rest transactions with the possibility to collapse them.

Configure capybara

Install capybara and configure it for the project. Write a scenario for the homepage.

Landing page: section 2

Update section 2:

Title: Get rid of the clutter
Description: Uncontrollable toy purchases lead to chaos at home. Does that make you feel uncomfortable? Control over toy purchases with our application. Prevent toys from cluttering your space.

We also need the "Go!" button in each section.

Image

Top-up email notification changes

  1. The top-up email notification should also go to the user who received the share.
  2. Change the email text so that it has information about the current balance

Public access to a child account

As a parent, I want to share my child's account. There should be generated a public URL that's accessible by everyone. The data is read-only in this case.
When I create a share I specify for how long the link is active: 15 min, 30 min, 1h, 1 day, 1 week, 1 month, or forever.
I should be able to delete a share anytime.

Use the AccountInvitation for this flow but create a separate form along with the controller, for which the user will be optional and no acceptance needed.

Improve the goals functionality

  1. Hide the url
  2. Fix forms/css
  3. Fix the table
  4. Find a good way to represent the saving progress: current and for the future, e.g. it should tell how many weeks are left to the goal if don't spend anything. Use progress bard? Circle diagram? Anything else? All ideas are welcomed.

Create access logic

The accepted invite should allow managing the account. Fix:

  • index page
  • show page permissions
  • fix transaction created ("from", "to" account - should be the current user account) (if needed)

+/- buttons

Change the +/- buttons design.

These buttons should be icons in a circle. + is green, - is red. Use some autogenerate palette to fix the proper colors.

Invited user should be able to accept the invite

A user that has an invitation link for a not confirmed invitation yet should be able to accept it:

  • if it's logged in automatically accept the invitation and lead it to the account page
  • if it's not logged in yet, allow it to register and accept it automatically upon registration (follow the 1st scenario)

Implement these two flows in separate PRs.

Dynamic frequency for weekly top-up

When create top-up I should be able to provide frequency:

  • weekly
  • dayli
  • monthly
  • quaterly
  • yearly
    ...

Write a parser that parses texts like: "every x days", "every x months", "every 1st" etc.

Change share email text

Image

Change text:

"Share to manage an account!" -> "Get access to account"

Below the text should be:

Hi <invitee name>,

<the inviter email (or name if no email)> is inviting you to manage his child account <account name>.

Please follow the link below to get the access:

[Approve link]

Sincerely, PocketMoney team.

Make white footer

I checked white bg for footer and it looks much better. Let's use it for now.

CSS templates

Find a good css template compatible with Rails.

Requirements to the template:

  • responsive
  • mobile friendly
  • modern (not legacy like bootstrap)
  • looking fresh
  • not overhelmed
  • preferably based on tailwincss

Approve it and apply.

Rename AccountInvitation to AccountShare

According to this flow we use "share" term more and more. So in the end it's not an invitation but rather it's a "share".

We just separate the following concepts:

  • "personal account share" those ones that has a user assigned and requires an acceptance page
  • "public account share" user is empty and no need for acceptance in this case

Create account changes

Add the ability to specify a weekly top-up amount when on the account creation form. It should optional field.

Also, add some short explanation/hint of what does it mean:

This amount will be automatically added to the account every week. You will receive an email notification about that.

Update profile page

Implement a page that allows to updating profile data:

  • Name
  • Change password
  • Email (requires the new email verification)

Allow operations on account for everyone by an access key

I as a parent of my child should be able to share this account view with my wife (or other relative).

These relatives should be able to:

  • see the balance and the full list of transactions
  • delete existing transactions (follow-up task - the user who added this transaction should approve it)
  • add +/- transactions
  • when I share the direct link to manage the account the system generates a secret phrase that should be used to verify the invited user signup. I reveal this phrase in person for the invited user

Please think about it and discuss if necessary, this flow is just an idea for now. Probably, needs a brainstorming.

Keep track of the record of who makes changes to the account balance.

This ticket needs some prep steps:

  • the user who gets the direct link should approve their identity (provide their email and approve it, and the system should create a user for this and the account)

Section 3

Title: Reduce spending on toys
Subtitle: With our application, you can manage your kids' toy expenses with ease. That allows you to keep your family budget safe. Spend it on more valuable investments such as education and health.

Image

Send account invitation email

Send an account invitation email upon the invitation creation. The email should be sent to the invitee and contain the link to accept it.

Update landing page

We will concentrate only on parent - children flow for now.

So, keep the landing as is but make it fresh (update faster choosing css framework)

Generate some more text using ChatGTP, for example.

Prev ideas:

There are several reasons why parents might choose to use a kids' allowance app:

Convenience: An allowance app makes it easy for parents to manage their children's allowances from their smartphones, without having to carry cash or remember to make payments manually.

Tracking: A kids' allowance app allows parents to track how much money their children receive and spend, helping them to monitor their kids' spending habits and teach them financial responsibility.

Budgeting: Parents can use an allowance app to set up a budget for their children, which can help kids learn how to manage money and make wise spending decisions.

Teaching financial literacy: An allowance app can be a useful tool for parents to teach their children about money management and financial literacy.

Encouraging responsibility: By using an allowance app, parents can encourage their children to take responsibility for their own spending and saving, which can help kids develop important life skills.

Overall, a kids' allowance app can be a useful tool for parents to help their children learn about money and develop good financial habits that will serve them well in the future.

Create Invitation model

User has many invitations

InvitationToAccount model structure:

  • belongs to invitee (user)
  • email (invitee) optional for direct messages
  • name
  • token (SecureRandom.uuid) - used in URL
  • account
  • status (new, accepted)

Invitation link:

  • sent to email
  • any time I can copy it and send directly
  • if user is logged in and visits the page they see a confirmation window, when accepting then allow manage the account, status of invitation gets accepted value
  • if is not logged in, allow signup, do autologin after this and run scenario above
  • user cannot accept the link twice

Rework my account page

The current my account page is actually a list of my accounts

Make the appropriate changes in the routing and controller(s) so that they respect the fact:

  • the "/my_account" should be by "/accounts"
  • remove the "my account" controller
  • fix routing and the pages linkage

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.