{"id":19485888,"url":"https://github.com/georgreen/cp2a-bucketlist-application","last_synced_at":"2026-04-20T14:03:29.434Z","repository":{"id":120737595,"uuid":"94365039","full_name":"georgreen/CP2A-BucketList-Application","owner":"georgreen","description":"🕵 ✍ 📝  API for an online BucketList.  📅 📚","archived":false,"fork":false,"pushed_at":"2017-07-15T18:59:18.000Z","size":6015,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-25T18:43:31.493Z","etag":null,"topics":["api-rest","bucketlist","flask","flask-api","flask-restplus","python3"],"latest_commit_sha":null,"homepage":"https://cp2-bucketlist-prd.herokuapp.com/api/#/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/georgreen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-06-14T19:16:32.000Z","updated_at":"2023-09-14T21:24:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"2f152b53-4873-4a06-8628-bf2e163d04c2","html_url":"https://github.com/georgreen/CP2A-BucketList-Application","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/georgreen/CP2A-BucketList-Application","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgreen%2FCP2A-BucketList-Application","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgreen%2FCP2A-BucketList-Application/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgreen%2FCP2A-BucketList-Application/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgreen%2FCP2A-BucketList-Application/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/georgreen","download_url":"https://codeload.github.com/georgreen/CP2A-BucketList-Application/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgreen%2FCP2A-BucketList-Application/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32050452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api-rest","bucketlist","flask","flask-api","flask-restplus","python3"],"created_at":"2024-11-10T20:30:58.067Z","updated_at":"2026-04-20T14:03:29.418Z","avatar_url":"https://github.com/georgreen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/georgreen/CP2A-BucketList-Application.svg?branch=develop)](https://travis-ci.org/georgreen/CP2A-BucketList-Application) [![Coverage Status](https://coveralls.io/repos/github/georgreen/CP2A-BucketList-Application/badge.svg?branch=develop)](https://coveralls.io/github/georgreen/CP2A-BucketList-Application?branch=develop) [![Code Issues](https://www.quantifiedcode.com/api/v1/project/675d48c654bc43aa9936634b72415f36/badge.svg)](https://www.quantifiedcode.com/app/project/675d48c654bc43aa9936634b72415f36) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/1fc976228f5c41b3a9c756242a63f754)](https://www.codacy.com/app/georgreen/CP2A-BucketList-Application?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=georgreen/CP2A-BucketList-Application\u0026amp;utm_campaign=Badge_Grade) [![Packagist](https://img.shields.io/packagist/l/doctrine/orm.svg)](https://github.com/georgreen/CP2A-BucketList-Application/blob/master/LICENSE) [![state badge](https://img.shields.io/badge/state-Alpha-red.svg)]() [![pep 8](https://img.shields.io/badge/code%20style-Pep%208-green.svg)](https://www.python.org/dev/peps/pep-0008/)\n\n\n# BucketList API  ✍\n Create an API for an online Bucket List service using Flask.\n\n```Bucket list``` can also be refered to as ```things/something to do before you die```. It is possibly derived from the English idiom to kick the bucket. It is used as an informal way or as a slang and it is believed that the idiom comes from method of execution such as hanging. The origin of the word remains unclear. [Read more here.](https://www.quora.com/Why-is-a-bucket-list-called-a-bucket-list) 🤔\n\n- ## API\nThis App exposes endpoints that allows ```clients/Users``` to manage a bucketlist of their choise.\n\n- #### Available Resource Endpoints\n\n|Method | Endpoint | Usage |\n| ---- | ---- | --------------- |\n|POST| `/api/v1.0/register` |  Register a user. |\n|POST| `/api/v1.0/login` | Login user.|\n|POST| `/api/v1.0/bucketlists/` | Create a new bucket list. |\n|GET| `/api/v1.0/bucketlists/` | Get all the created bucket lists. |\n|GET| `/api/v1.0/bucketlists/\u003cbucket_id\u003e` | Get a single bucket list. |\n|PUT| `/api/v1.0/bucketlists/\u003cbucket_id\u003e` | Update a single bucket list. |\n|DELETE| `/api/v1.0/bucketlists/\u003cbucket_id\u003e` | Delete single bucket list. |\n|POST| `/api/v1.0/bucketlists/\u003cbucket_id\u003e/items` | Add a new item to this bucket list. |\n|GET| `/api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e` | Get an item from this bucket list. |\n|PUT|`/api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e` | Update an item in this bucket list. |\n|PATCH|`/api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e` | Patch an item in this bucket list. |\n|DELETE|`/api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e` | Delete this single bucket list. |\n|GET| `/api/v1.0/bucketlists?limit=10\u0026page=1` | Pagination to get 10 bucket list records.|\n|GET| `/api/v1.0/bucketlists?q=travelling bucket` | Search for bucket lists with name like travelling bucket.\n\n\n## Getting Started 🕵\n- To run on local machine git clone this project :\n```\n $ git clone https://github.com/georgreen/CP2A-BucketList-Application.git\n ```\n\n Copy and paste the above command in your terminal, the project will be downloaded to your local machine.\n\n- To consume API in client of choice navigate to:\n ```\n https://cp2-bucketlist-prd.herokuapp.com/api/\n ```\n ![post man](Assets/heroku.png)\n\n This link will open up a running version of the project on heroku, a detailed documentation is provided on the site.\n\n### Prerequisites\nThe application is built using python: flask framework.\n\u003e[Flask](http://flask.pocoo.org/) is a microframework for the Python programming language.\n\n\nTo Install python checkout:\n```\nhttps://www.python.org/\n```\n\n\n### Installing\nFor this section I will assume you have python3 and it's configured on your machine. \u003c/br\u003e\nNavigate to the folder you cloned and run: \u003c/br\u003e\n\n- Install Requirements\n```\n$ pip install -r requirements.txt\n```\n\n- Configure Environment.\n```\n$ export APP_SETTINGS=\"default\"\n$ export DEV_DATABASE=\"path to your database\"\n$ export SECRET=\"Secret Key Here\"\n```\n\u003e Note replace the value for DEV_DATABASE with real database path and SECRET with a strong string value\n\n\n- Configure database\n```\n$ python manage.py database init\n$ python manage.py database migrate\n$ python manage.py database upgrade\n```\n\n- Run App 🏃🏃‍\n```\n$ python manage.py runserver\n```\nThe app should be accessiable via : http://127.0.0.1:5000/\n\n### Session Examples\nTo Follow along with this examples get postman : A powerful GUI platform to make your API requests. [READ MORE HERE](https://www.getpostman.com/)\n- Set up postman\n ![post man](Assets/postmanhome.png)\n\n\n- Signup/ register\n![post man](Assets/register.png)\n    - Post data in the format below to the register endpoint: ```/api/v1.0/register```\n    ```\n    {\n\t    \"username\":\"geogreen ngunga\",\n\t    \"email\":\"demoenail@gmail.com\",\n\t    \"password\":\"demoPassword12#\"\n    }\n    ```\n\n\n- Login\n![post man](Assets/login.png)\n    - Post data in the format below to the login endpoint : ```/api/v1.0/login```\n    ```\n    {\n        \"email\":\"demoenail@gmail.com\",\n        \"password\":\"demoPassword12#\"\n    }\n    ```\n- Copy the token returned and add it into the headers as a key pair value of ```Authorization : Bearer [put token here]```\n\n    ![post man](Assets/Authorization.png)\n\n\n- Create BucketList\n![post man](Assets/createbucket.png)\n    - Post data in the format below to the bucketlist endpoint: ```/api/v1.0/bucketlists/```\n    ```\n    {\n        \"name\":\"new bucketlist name\"\n    }\n    ```\n\n\n- Get BucketList\n![post man](Assets/getbuckets.png)\n    - Get data from the  bucketlist endpoint: ```/api/v1.0/bucketlists/```\n\n\n- Get one BucketList\n![post man](Assets/getonebucket.png)\n    - Get data from the  bucketlist endpoint: ```/api/v1.0/bucketlists/bucket_id```\n\n\n- Update BucketList\n![post man](Assets/updatebucket.png)\n    - Put data to the endpoint :```/api/v1.0/bucketlists/bucket_id```\n    ```\n    {\n        \"name\":\"new name\"\n    }\n    ```\n\n\n- Delete BucketList\n![post man](Assets/deletebucket.png)\n    - Delete data at an endpoint:```/api/v1.0/bucketlists/bucket_id```\n\n\n- Add Item to BucketList\n![post man](Assets/additem.png)\n    - Post data to ```/api/v1.0/bucketlists/\u003cbucket_id\u003e/items``` in the format:\n    ```\n    {\n        \"name\":\"Item name\",\n        \"description\":\"Item description\"\n    }\n    ```\n\n\n- Get Item from BucketList\n![post man](Assets/getitem.png)\n    - Get data from the endpoint:```/api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e```\n\n\n- Update Item from BucketList\n![post man](Assets/uodateitem.png)\n    - Put data to ```/api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e``` in the format:\n    ```\n    {\n        \"name\":\"This will update name\",\n        \"description\":\"This will update description\"\n    }\n    ```\n\n\n- Patch Item from BucketList\n![post man](Assets/patchitem.png)\n    - Patch item endpoint ```/api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e ``` data format:\n    ```\n    {\n        \"done\":\"True\"\n    }\n    ```\n\n\n- Delete Item from BucketLists\n![post man](Assets/deleteitem.png)\n    - Delete item at the endpoint ``` /api/v1.0/bucketlists/\u003cbucket_id\u003e/items/\u003citem_id\u003e```\n\n\n- Search for BucketLists\n![post man](Assets/searching.png)\n    - Get bucketlist by searching ```/api/v1.0/bucketlists/\u003cbucket_id\u003e/?q=search```\u003c/br\u003e\n    Search can be any sub string to be queried from the resource\n\n\n- Paginate BucketLists\n![post man](Assets/paginate.png)\n    - Get paginated buckets ```/api/v1.0/bucketlists/\u003cbucket_id\u003e/?limit=2\u0026page=1```\u003c/br\u003e\n    This will get two bucketlists per page, limit can be set to any number of bucketlist required per page; page is the required page 1st, 2nd , 3rd ....etc\n\n\n## Running the tests\n\n```\n$ python manage.py test\n```\n- With Coverage\n\n```\n $ nosetests --rednose --with-coverage --cover-package=app -v\n```\n\n- Coding style tests\n\n[Pep8](https://www.python.org/dev/peps/pep-0008/) standards are followed in project.\n\n```\n$ pep8 app --count\n```\n\n## Deployment 🚀\n\n- [Check this out to deploy to heroku](https://devcenter.heroku.com/articles/getting-started-with-python#introduction)\n\n## Built With  🏗 🔨⚒\n\n* [Flask](http://flask.pocoo.org/) - The web framework used\n* [Flaskrestplus](https://flask-restplus.readthedocs.io/en/stable/) - Extension for Flask that adds support for quickly building REST APIs.\n* [webargs](https://webargs.readthedocs.io/en/latest/) - webargs is a Python library for parsing HTTP request arguments\n* [Flask JWT Extended](https://flask-jwt-extended.readthedocs.io/en/latest/) - Extension for Flask that adds support for tokken authentication\n\n## Contributing 👍\n\n- Please Fork me! :-)\n\n## Versioning ⚙\n\n- [Checkout our releases](https://github.com/georgreen/CP2A-BucketList-Application/releases)\n\n## Authors 📚\n\n* **Georgreen Mamboleo** - *Initial work* - [Dojo](https://github.com/georgreen/Geoogreen-Mamboleo-Dojo-Project)\n\n\n## License 🤝\n\n- This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\n\n## Acknowledgments 👊 🙌 👏 🙏\n\n* [Andela ](https://andela.com/) - We are hiring !\n* [Taracha Roger](https://github.com/TheDancerCodes) - Cool Human being.🤓🤓\n* [Motivation](https://www.youtube.com/watch?v=dQw4w9WgXcQ) - BEST RESOURCE EVER!!!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgreen%2Fcp2a-bucketlist-application","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeorgreen%2Fcp2a-bucketlist-application","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgreen%2Fcp2a-bucketlist-application/lists"}