Skip to content

tamraj-kilvish/kilvish

Repository files navigation

kilvish

An app to better manage & track your expenses.

  • You can create your own tags & tag expenses to get a total value at monthly basis
  • You can share the tag with your family member to track shared expenses to avoid double paying. Like paying to newspaper vendor
  • Your family member can add expenses to tags (like household) so that you can aggregate & track expense against the tag
  • You can recover a shared expense by logging it to Kilvish, create a url & sharing it with a friend who can then pay on the url.

More details at kilvish.in

Getting Started

  1. Setup Flutter on your PC
    • Download flutter
    • Setup Editor
    • Run flutter doctor in your PC terminal to figure out anything that flutter needs that is not installed on your PC.
  2. Run code (currently broken .. read Android Development steps)
    • Run git clone https://github.com/tamraj-kilvish/kilvish.git in your PC terminal to clone the repository.
    • Navigate to the directory of the cloned repository in your PC terminal.
    • flutter pub get to install dependencies.
    • flutter run will launch the app in debug mode.
    • Your editor might have inbuilt capacity to run flutter run and flutter pub get. Eg. Visual Studio runs the app with Run command if you have the flutter extension installed.
  3. Android Deployment
    • Due to sharing related changes, android & iOS specific code is written which had broken the web or MacOS builds.
    • flutter build apk --debug && flutter install --debug will build & install apk in an already running emulator
      • To run an Android emulator, install Android Studio & launch an emulator with the AVD manager
    • To make it easier to launch emulator every time, add /path/to/sdk/emulator to PATH variable & run command emulator -avd <name of emulator>
      • you can find SDK path from Android Studio -> Settings -> Appearance & Behavior -> Android SDK
      • To give a short name to the emulator, launch AVD manager from Android Studio, click on the pencil/edit button of the emulator & give it a short name that you can pass to the emulator command above.

Firebase Setup

  • Install Firebase CLI & login with firebase login on CLI
  • Install FlutterFire CLI dart pub global activate flutterfire_cli
  • Install Firebase Functions dependencies by doing npm install inside functions directory.
  • Firebase functions are written in Typescript. Run npm run build:watch inside functions directory & it will listen for any changes in typescript, compile & update the respective javascript files. Leave it running.
  • Launch emulator by running firebase emulators:start from the main directory. Access http://127.0.0.1:5001/kilvish-aa125/us-central1/helloWorld on the browser to check everything is working.

Current app screenshots

Signup Screen Home Screen Detail Screen
Tags Screen Import Expense Screen
![](screenshots/tags-screen.png =180x232) ![](screenshots/import-expense-screen.png =180x368)

What we aiming to achieve (in high resolution) here

Notes during development

We will be putting resources that we referred for someone new to figure out why & how we are doing what, while we build Kilvish

Signup Page

Package code check

Home Screen

Detail Screen

Tag Screen

  • Snehal has created Tags from scratch which was a good starting point. Her blog post here
  • Aligning tags like float:left using Wrap link
  • Rendering tag content using Richtext link

Import Screen

  • contact picker here
  • for image picker here

Like to contribute ?

We are currently creating screens with hardcoded data. We intend to keep the repository 'always open'. So you can showcase your contribution to potential future employers. The app is developed in Flutter & we are all new to Flutter. But we do pretty intense code reviews. If you look to pick Flutter or knows decent bit of Flutter & would like to contribute, you can join our discord channel from this Link or simply raise a PR.

P.S. We are avoiding a lot of early refactor to keep us agile & be impactful. So we will avoid a lot of early/pre-mature refactoring.