A small and basic (atleast for initial release) business transaction tracking application for business owner (mostly for small business, retailers and shop keepers) of any business type.
This application (for now) is written entirely in C Language and only Unix based platform (Linux, MacOS, FreeBSD etc.) are supported.
This is (for now) a terminal based interactive application.
In this app you can:
- Add party details
- Search party by name and phone number
- View details of party (including transaction history)
- Delete party
- Update party
- Create transaction
- Reverse transaction (Undo a specific transaction)
- Search transaction
- View transaction statistics
- View business statistics (such as total number of parties and transactions, total amount of transaction etc.)
Compile
makeRun
./dhandaExit from app
exitArchitecture is very simple: User input -> Update app state -> Render screen.
User inputis basically user command given to application to perform some actionUpdate app stateupdates the application according to given command, like adding new data, updating, deleting, and searching.Render screenbasically showing the output of last command withing a nice and possibly pretty Text UI.
These three operations are done in a tight loop.
- add created at and updated at
- validate add/edit input
- First/Last name should only contain alpha/num/space
- Amount should be integer (handle it in input), don't use scanf
- Phone should be 10 digit number
- store sanatized input
- First/Last name should be in title case
- show date/time in list/show screen in ISO format
-
validate party ID (party must exist)
-
store sanatized input
- First/Last name should be in title case
-
show date/time in list/show screen in ISO format
-
change the UI of show screen
-
change the order of the fields
-
Edit
- on blank input take old value
- show hint about what happens when user inputs blank
-
Add new function to push error message from db layer to app struct
-
Show that error message in UI rendering
- Add bg color in header and footer
- make space for status bar (show stats on the status bar)