{"id":13541955,"url":"https://github.com/hugokernel/micropython-nanoweb","last_synced_at":"2025-04-10T01:52:13.474Z","repository":{"id":43641205,"uuid":"293023421","full_name":"hugokernel/micropython-nanoweb","owner":"hugokernel","description":"Full async Micropython web server with small memory footprint.","archived":false,"fork":false,"pushed_at":"2024-06-09T07:39:43.000Z","size":36,"stargazers_count":111,"open_issues_count":3,"forks_count":19,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-24T03:34:46.930Z","etag":null,"topics":["async","esp","esp32","esp8266","python","raspberry-pi-pico","webserver"],"latest_commit_sha":null,"homepage":"","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/hugokernel.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":"2020-09-05T07:10:34.000Z","updated_at":"2025-02-08T21:08:43.000Z","dependencies_parsed_at":"2024-08-01T10:26:06.531Z","dependency_job_id":null,"html_url":"https://github.com/hugokernel/micropython-nanoweb","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugokernel%2Fmicropython-nanoweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugokernel%2Fmicropython-nanoweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugokernel%2Fmicropython-nanoweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugokernel%2Fmicropython-nanoweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hugokernel","download_url":"https://codeload.github.com/hugokernel/micropython-nanoweb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248142941,"owners_count":21054671,"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":["async","esp","esp32","esp8266","python","raspberry-pi-pico","webserver"],"created_at":"2024-08-01T10:00:59.341Z","updated_at":"2025-04-10T01:52:13.445Z","avatar_url":"https://github.com/hugokernel.png","language":"Python","readme":"# Nanoweb\n\nNanoweb is a full asynchronous web server for micropython created in order to benefit from\na correct ratio between memory size and features.\n\nIt is thus able to run on an ESP8266, ESP32, Raspberry Pico, etc...\n\n## Features\n\n* Completely asynchronous\n* Declaration of routes via a dictionary or directly by decorator\n* Management of static files (see assets_extensions)\n* Callbacks functions when a new query or an error occurs\n* Extraction of HTML headers\n* User code dense and conci\n* Routing wildcards\n\n## Installation\n\nYou just have to copy the `nanoweb.py` file on the target (ESP32, Nano, etc...).\n\n## Use\n\nSee the [example.py](example.py) file for an advanced example where you will be able to:\n\n* Make a JSON response\n* Use pages protected with credentials\n* Upload file\n* Use `DELETE` method\n* Read `POST` data\n\nAnd this is a simpler example:\n\n```Python\nimport uasyncio\nfrom nanoweb import Nanoweb\n\nnaw = Nanoweb()\n\nasync def api_status(request):\n    \"\"\"API status endpoint\"\"\"\n    await request.write(\"HTTP/1.1 200 OK\\r\\n\")\n    await request.write(\"Content-Type: application/json\\r\\n\\r\\n\")\n    await request.write('{\"status\": \"running\"}')\n\n# You can declare route from the Nanoweb routes dict...\nnaw.routes = {\n    '/api/status': api_status,\n}\n\n# ... or declare route directly from the Nanoweb route decorator\n@naw.route(\"/ping\")\nasync def ping(request):\n    await request.write(\"HTTP/1.1 200 OK\\r\\n\\r\\n\")\n    await request.write(\"pong\")\n\nloop = asyncio.get_event_loop()\nloop.create_task(naw.run())\nloop.run_forever()\n```\n\n## Contribute\n\n* Your code must respects `flake8` and `isort` tools\n* Format your commits with `Commit Conventional` (https://www.conventionalcommits.org/en/v1.0.0/)\n","funding_links":[],"categories":["Frameworks for Micropython","Libraries"],"sub_categories":["More","Communications"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugokernel%2Fmicropython-nanoweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhugokernel%2Fmicropython-nanoweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugokernel%2Fmicropython-nanoweb/lists"}