The webapp for the Kulu app.
- Install
rubywith rbenv/rvm (version). - Find out corresponding
bundlerversion withcat Gemfile.lock | grep -A 1 "BUNDLED WITH"and install withgem install bundler -v <bundler-version>. (This is needed since newerbundlerrequires Ruby version >= 2.3.0.) gem install ffi -v '1.9.10' --source 'https://rubygems.org/' -- --with-cflags=-Wno-implicit-function-declarationbrew install shared-mime-infobundle installto install the required gems. (Ifnokogiriinstallation fails due to missinglibiconvheaders you will need to install extra headers withopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg. This is because Xcode 10 on MacOS Mojave and above moves the system headers out of/usr/includecausing a build failure fornokogiri.)npm installto install all the js requisites.
Since this a rails app, it requires you to setup a DB for the rails server to start up (even though we don't actually use a database for this frontend).
Please copy over the database.yml.sample file to database.yml and make the required changes about your username and database and run the following command:
- run
bin/rake db:create db:migrate - Copy over
application.yml.sampletoapplication.yml - Make the necessary config changes, especially the
KULU_BACKEND_SERVICE_URL
Once that's done, start the server with:
- run
bin/rails serverto the start the server
Once started visit http://localhost:3000
The JS in the app directly uploads files into S3. For this to work, the CORS permissions need to be set up on the S3 bucket. Steps:
- Visit the S3 AWS Console
- Select the bucket (see
application.ymlfor the names). - Click Properties tab
- Open up the CORS Configuration and change the HTTP methods and headers XML nodes (retain everything else):
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
Remember to do this for both dev and prod buckets.
The extractor interface, which is used to extract/transcribe expenses for all organizations is separated out from the rest of the code. As we may not need a different end-point for this to work as it could just be regular user-role later on. For easy removal of this, it's split into these files:
models/kulu_service/extractor_api.rbcontrollers/extractor_controller.rbviews/extractor/