{"id":34167731,"url":"https://github.com/thenorstroem/todo-management-tool","last_synced_at":"2026-05-08T03:04:14.267Z","repository":{"id":42066249,"uuid":"424932840","full_name":"theNorstroem/todo-management-tool","owner":"theNorstroem","description":"Creating an enterprise-flavoured ToDo application from scratch with the Furo Web Stack. Story line: Peter has been working in a software company for 10 years and he even managed to get a stake in the company. Recently, the company got a new investor and Peter had to sell his shares. With the realised profit, he bought a modern apartment building with 8 flats and reduced his workload to 60%. This allows him to do the work on the newly acquired house in his free time. Everything is going well, but Peter has underestimated the amount of work involved. He writes notes everywhere about what still needs to be done. Of course, Peter sometimes loses some of these notes and thus annoys his tenants a little. Peter promises to do better and he plans to build a web application to organise the tasks that come up.","archived":false,"fork":false,"pushed_at":"2022-05-23T09:15:50.000Z","size":9599,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-18T06:33:03.185Z","etag":null,"topics":["furo","golang","grpc","grpc-gateway","javascript","protocol-buffers","upperdb","webstack"],"latest_commit_sha":null,"homepage":"https://furo.pro/docs/guides/ebook-tutorial/","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/theNorstroem.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}},"created_at":"2021-11-05T12:00:24.000Z","updated_at":"2022-04-14T11:08:29.000Z","dependencies_parsed_at":"2022-08-12T03:51:06.642Z","dependency_job_id":null,"html_url":"https://github.com/theNorstroem/todo-management-tool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/theNorstroem/todo-management-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theNorstroem%2Ftodo-management-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theNorstroem%2Ftodo-management-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theNorstroem%2Ftodo-management-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theNorstroem%2Ftodo-management-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theNorstroem","download_url":"https://codeload.github.com/theNorstroem/todo-management-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theNorstroem%2Ftodo-management-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32764771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T02:36:36.067Z","status":"ssl_error","status_checked_at":"2026-05-08T02:36:07.210Z","response_time":54,"last_error":"SSL_read: 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":["furo","golang","grpc","grpc-gateway","javascript","protocol-buffers","upperdb","webstack"],"created_at":"2025-12-15T10:33:54.447Z","updated_at":"2026-05-08T03:04:14.262Z","avatar_url":"https://github.com/theNorstroem.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Creating an enterprise-flavoured ToDo application from scratch with the Furo Web Stack\n\n- _eBook_: [eBook.pdf](./eBook.pdf) [eBook.epub](./eBook.epub)\n- _Repository_: https://github.com/theNorstroem/todo-management-tool\n- _Furo Web Stack_: https://furo.pro/\n\n## ToDo Application\n![screenshot](assets/search_fiori_3.png \"Screenshot default theme\")\n![screenshot](assets/search_fiori_3_dark.png \"Screenshot dark theme\")\n\n## System Prerequisites\nFor this example to fly, the following software components should be installed on the system.\n- git, https://git-scm.com/book/en/v2/Getting-Started-Installing-Git\n- Docker, https://docs.docker.com/get-docker/\n- Go, https://go.dev/doc/install\n- NodeJS / npm, https://nodejs.org/en/download/\n\n\n## Getting Started\nWe recommend 2+ years of programming experience in JavaScript / HTML / CSS and a basic knowledge of Protocol Buffers. Experiences in Go is also a plus. But don’t worry, you don’t have to be an expert.\n\ndownload the eBook:\n[eBook.pdf](./eBook.pdf) [eBook.epub](./eBook.epub)\nThe e-book includes a usecase-driven guide through the chapters\n\nclone the repository: \n``` \ngit clone git@github.com:theNorstroem/todo-management-tool.git \n```\n\ncheckout chapter 01: \n```\ngit checkout c01_todos_api_contract\n```\n\n \n## Final Project Structure\n.\n|-- LICENSE\n|-- README.md\n|-- api\n|-- client\n`-- grpc-backend\n\n## Local API Development\n\n### Use local container build\n[Furo build environment docker container](https://github.com/eclipse/eclipsefuro/tree/main/BEC)\n\nhttps://hub.docker.com/r/thenorstroem/furo-bec\n\n```shell script\ndocker pull thenorstroem/furo-bec:v1.35.1\n```\n\nExample Usage: docker run -it --rm -v $(pwd):$pwd/specs -v ~/.ssh:/root/.ssh thenorstroem/furo-bec:v1.35.1\n\nCommands: https://furo.pro/docs/commands/\n\n**start the furo build environment container from /api**\n\n## Local Web Application Development\nAll the web application source is located in the subfolder `client`.\n\n### Install dependencies\n```\nnpm i\n```\n\n### Starting Web Application in mock mode\n```\nnpm run start:mock\n```\n\n### Starting Web Application with backend proxy (backend for frontend)\n```\nnpm run start\n```\n\n## Local gRPC Server Development\nAll the gRPC server code is located in the subfolder `/grpc-backend`.\n\n```\ncd grpc-backend\ngo run ./...\n```\n\nor with the built version\n```\ncd grpc-backend\ngo install ./cmd/...\ntmt-grpc\n```\n\n## Local gRPC Gateway\nAll the gRPC gateway code is located in the subfolder `/api/dist/grpc-gateway`.\n\n```\ncd api\nGW_SERVER_ADDRESS=localhost:8481 GRPC_SERVER_ADDRESS=localhost:7070 go run ./...\n```\n\nor with the built version\n```\ncd api\ngo install ./dist/grpc-server/cmd/...\nGW_SERVER_ADDRESS=localhost:8481 GRPC_SERVER_ADDRESS=localhost:7070 cmd\n\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenorstroem%2Ftodo-management-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthenorstroem%2Ftodo-management-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenorstroem%2Ftodo-management-tool/lists"}