{"id":20101366,"url":"https://github.com/beautiful-code/simple_bills","last_synced_at":"2025-10-05T17:19:05.127Z","repository":{"id":66778504,"uuid":"81282983","full_name":"beautiful-code/simple_bills","owner":"beautiful-code","description":"A simple tool to save your bills online.","archived":false,"fork":false,"pushed_at":"2023-04-18T04:51:27.000Z","size":2543,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-01-13T04:26:55.342Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beautiful-code.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-08T03:24:40.000Z","updated_at":"2019-07-25T15:02:36.000Z","dependencies_parsed_at":"2024-11-13T17:40:25.450Z","dependency_job_id":null,"html_url":"https://github.com/beautiful-code/simple_bills","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beautiful-code%2Fsimple_bills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beautiful-code%2Fsimple_bills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beautiful-code%2Fsimple_bills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beautiful-code%2Fsimple_bills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beautiful-code","download_url":"https://codeload.github.com/beautiful-code/simple_bills/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241541453,"owners_count":19979121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T17:24:52.520Z","updated_at":"2025-10-05T17:19:00.104Z","avatar_url":"https://github.com/beautiful-code.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Purpose\n\nSimple Bills is a easy to use application to to file and archive bills digitally. We also used this opportunity to build the application using Google’s AppEngine solution.\n\n## Architecture\n\n![Architecture](arch.png)\n\nWe’ve taken the traditional backend and frontend approach to build Simple Bills. The backend houses all the business logic and uses a MySQL database for persistence and exposes the JSON APIs via Google Cloud Endpoints. The frontends use the APIs and implement their respective presentation logic. Currently, we’ve only build the web frontend.\n\nWe’ve implemented the frontend and backend as two AppEngine python modules - `default/crudapi` and `www`. \n\n## Developer Notes\n\nDependencies\n\n* Install [Google Cloud SDK](https://cloud.google.com/sdk/downloads)\n\n* Install vendor dependencies for each module’s directory - `pip install -r requirements-vendor.txt -t lib`\n\nTo run the application locally, run the following command.This starts the default service on port 8080 and the www service on port 8081\n\n`dev_appserver.py crudapi/app.yaml web/app.yaml`\n\nDatabase setup\n\n```\n\n$ cd crudapi\n\n$ pip install alembic pymysql\n\n$ mysql -u root\n\n$ mysql\u003e create database simple_bills;\n\n$ alembic upgrade head\n\n```\n\nCaveats\n\n* Setting up Google Cloud Storage python library - [https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/setting-up-cloud-storage](https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/setting-up-cloud-storage) - We chose to install the library in the lib folder.\n\n* Running endpoints as a non default module - http://stackoverflow.com/questions/24232580/putting-a-cloud-endpoints-api-in-a-separate-app-engine-module\n\n## Deployment\n\nDeploying a service involves providing the environment’s relevant variables to the* appcfg.py* command. For example, to deploy the www service to AppEngine run\n\n```\n\nappcfg.py --no_cookies update web -E WEB_CLIENT_ID:'\u003cINSERT WEB_CLIENT_ID\u003e' -E WEB_CLIENT_SECRET:'\u003cINSERT WEB_CLIENT_SECRET\u003e' -E CRUDAPI_SERVER:’\u003cINSERT API_SERVER\u003e’\n\n```\n\nTo run migrations in AppEngine\n\n1. Update the sqlachemy.url in crudapi/alembic.ini\n\n2. Run alembic upgrade head\n\n## Todo\n\n* Build an iOS application.\n\n* Build an Android application.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeautiful-code%2Fsimple_bills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeautiful-code%2Fsimple_bills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeautiful-code%2Fsimple_bills/lists"}