Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.4%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: CSC510-G35-Fall2022
- License: mit
- Language: Python
- Default Branch: main
- Size: 29.3 MB
Statistics
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
- Releases: 6
Metadata Files
README.md
SmartSpend
Purpose
It is often difficult to keep track of spendings. There are ways to do it - keep spread sheets, notes, or write them down in a journal. However all of these options are too hectic when trying to quikcly add spendings. The main purpose of this project is to simplify that by having a telegram bot that organizes and keeps track of spendings for you! With Smart Spend it is possible to keep track of spending records and view the history in a seamless manner! Check out our project below.
Demo
https://user-images.githubusercontent.com/79175476/205810375-190013ab-1644-4929-96a8-3281ed22b791.mp4
Why you should pick our project
https://user-images.githubusercontent.com/79175476/205814411-31d5e4d4-b925-4b34-91a4-57c3da8a684a.mp4
About SmartSpend
SmartSpend is an easy-to-use Telegram Bot that assists you in recording your daily expenses on a local system without any hassle.
With simple commands, this bot allows you to:
- Add/Record a new spending
- Show the sum of your expenditure for the current day/month
- Display your spending history
- Clear/Erase all your records
- Edit/Change any spending details if you wish to
- Set limits for your daily/montly/yearly expenses
- Search the best deals for your purchase
- Share/Settle your expense with other users
- 
Additions:
- Fixed several bugs related to parsing and tracking.
- Updated menu view to display slash commands when "/" is typed in telegram chat
- -

- Refactored old code to suit updated structure.
- - Previously all of the code was in a single file with around 650 lines. This appeared messy and was hard to edit parts of the program.
- - Attempted one refactor method which can be seen in this branch. This method was too time consuming and required more of the codebase to be refactored.
- - Tried another refactor method, much faster, worked simpler, did not need to update more of the code base. This has been merged to main.
- Moved away from Travis to GitHub actions for rolling builds.
- Also added cancel feature, to abort an 'add' transaction at any point.
- Feature -> Add 'limit_category' feature to work as an alarm when spending exceed preset limits.
- - Users can create limits on the existing categories, food, groceries, utilities, ...
- -

- -

- - When user adds an expense, limit categories, and all all three existing limits are checked.
- -

- - Ability to view limits for categories.
- -

- Updated Feature display -> Graphics
- - Added matplotlib graphs to display to view individual categories spendings on a pie chart.
- -

- Updated Feature History -> Graphics
- - Added matplotlib graphs to let user see a bar graph of spending vs month.
- -

- Feature -> Add 'website' feature to give the user a link to a personalized website.
- - Created a website for the user to manage their expenses. The Telegram bot and the website work simultaneously and update in real time.
- - Website can add a new expense
- - Website can view all expense and filter/sort them
- - Website can view current limits and view accurate progress meters for category limits
Scalability Design
The following image shows a scalability Design described in detail, and a scalability diagram to visualize how the detail would work.
Installation guide
See INSTALL.md
Mini tutorial
Menu: This command can be used by typing '/menu'. The bot will then display list of all commands.

Add: This command is used by typing '/add'. This command is used to add a spending record.
Once the /add command is used, the bot gives various categories, like 'Food','Groceries','Miscellaneous' and so on, to choose from. Futheromore, the bot allows user to add a personalized category if it is not present in the options. Once the category is selected, then the bot asks the user to enter the amount to be recorded. After this the Bot gives an option to split with any other user, if 'Yes' is selected the other user will be informed and the transaction would be recorded, if 'No' is selected the transaction is recorded for the current user.

Display: This command is used by typing '/display'. This command is used to display the spending records for day.month or all spendings. Futhermore, the bot displays a Pie chart showing the spendings so that user can get a visual look at the spendings numbers.

History: This command is used by typing '/history'. This command is used to display history of all the spending records. Futhermore, the bot displays a Bar graph showing the spendings over all the months, so that user can analyze the spendings.

Limits: This command is used by typing '/limit'. This command is used to set daily, monthly, yearly limits for user. Futhermore, this command also has a view limits feature that allows user to view limits.
Add a limit:

- View limits:

- Categorical Limits: This command is used by typing '/limitcategory'. This command is used to set monthly categorical limits for user. Furthermore, this command also has a view limits feature that allows user to see their monthly categorical limits.
- Add a categorical limit:

- View all categorical limits:

Search: This command is used by typing '/search'. This program runs a web search on the specified query and provides the top 5 products together with their prices so that the user can compare them.

Website:
To view all expenses, click View Expenses. It will bring you to a page that looks like this.
- To delete one expense, simply click on the number of the expense at the bottom.
If you want to change the limit for something, just type the number in below that category and click set limit. The default is 100.
Testing
We are doing both automated and blackbox testing. The reason why our coverage is 23% is because that coverage person only measures coverage from the automated tests. The rest of the coverage is covered using black box tests. We used black box tests because we had to test the telegram API functionality which was only testable when the bot would be running through telegram. This made it impossible to test using automated testing which was why we used blackbox.
Case Studies
1) Tested smart spend bot code individually with all five of our members. Member 1 tested the following functionalities: add, delete, display . All of the functionalities work as intended. Last updated Dec 05 2022. 2) Tested smart spend bot code individually with all five of our members. Member 2 tested the following functionalities: edit, history, limit. All of the functionalities work as intended. Last updated Dec 05 2022. 3) Tested smart spend bot code individually with all five of our members. Member 3 tested the following functionalities: limit_cat, search. All of the functionalities work as intended. Last updated Dec 05 2022. 4) Tested smart spend bot code individually with all five of our members. Member 4 tested the following functionalities: settle. All of the functionalities work as intended. Last updated Dec 05 2022. 5) Tested smart spend bot code individually with all five of our members. Member 5 tested the following functionalities: start, website. All of the functionalities work as intended. Last updated Dec 05 2022.
Funding
Not a funded project, nor is funding necessary.
Contributors
This project has the following contributors:
| | Contributor | GitHub ID | | --- | ---------------------- | --------------- | | 1 | Cheerla, Sanjana | Stoir | | 2 | Ganesh, Saail Gurunath | SaailGanesh | | 3 | Pardeshi, Sourabh | SourabhPardeshi | | 4 | Patel, Maya | maya-dc-patel | | 5 | Xin, Vincent | Culcheese |
Previous contributors: Authors:'Kaushik, Surya, Pradyumna, Harshitha, Aditi'
Contact Form and Bug Report Form
Citation (CITATION.cff)
cff-version: 1.3.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Patel"
given-names: "Maya"
- family-names: "Cheerla"
given-names: "Sanjana"
- family-names: "Xin"
given-names: "Vincent"
- family-names: "Ganesh"
given-names: "Saail"
- family-names: "Pardeshi"
given-names: "Sourabh"
title: "Smart Spend"
version: 2.0.4
doi: 10.5281/zenodo.7401007
date-released: 2021-12-05
url: https://github.com/CSC510-G35-Fall2022/SmartSpend2
GitHub Events
Total
Last Year
Dependencies
- actions/checkout v3 composite
- actions/setup-python v4 composite
- 873 dependencies
- @angular-devkit/build-angular ^15.0.0 development
- @angular/cli ~15.0.0 development
- @angular/compiler-cli ^15.0.0 development
- @types/jasmine ~4.3.0 development
- jasmine-core ~4.5.0 development
- karma ~6.4.0 development
- karma-chrome-launcher ~3.1.0 development
- karma-coverage ~2.2.0 development
- karma-jasmine ~5.1.0 development
- karma-jasmine-html-reporter ~2.0.0 development
- tailwindcss ^3.2.4 development
- typescript ~4.8.2 development
- @angular/animations ^15.0.0
- @angular/cdk ^15.0.0
- @angular/common ^15.0.0
- @angular/compiler ^15.0.0
- @angular/core ^15.0.0
- @angular/forms ^15.0.0
- @angular/material ^15.0.0
- @angular/platform-browser ^15.0.0
- @angular/platform-browser-dynamic ^15.0.0
- @angular/router ^15.0.0
- rxjs ~7.5.0
- tslib ^2.3.0
- zone.js ~0.12.0
- Flask ==2.2.2
- Telethon ==1.25.1
- attrs ==22.1.0
- beautifulsoup4 ==4.11.1
- bob-telegram-tools ==1.1.0
- bs4 ==0.0.1
- certifi ==2022.9.24
- charset-normalizer ==2.1.1
- dnspython ==2.2.1
- idna ==3.4
- iniconfig ==1.1.1
- matplotlib ==3.1.3
- packaging ==21.3
- pluggy ==1.0.0
- py ==1.11.0
- pyTelegramBotAPI ==4.7.0
- pyaes ==1.6.1
- pyasn1 ==0.4.8
- pycodestyle ==2.10.0
- pymongo ==4.2.0
- pyparsing ==3.0.9
- pytest ==7.1.3
- python-dotenv ==0.21.0
- requests ==2.28.1
- rsa ==4.9
- soupsieve ==2.3.2.post1
- tabulate ==0.9.0
- tomli ==2.0.1
- urllib3 ==1.26.12