{"id":16345907,"url":"https://github.com/walidoux/todo-tauri-app","last_synced_at":"2025-10-26T01:31:44.381Z","repository":{"id":52186234,"uuid":"519509762","full_name":"Walidoux/todo-tauri-app","owner":"Walidoux","description":"📝 An opensource desktop to-do app.","archived":false,"fork":false,"pushed_at":"2023-08-18T22:02:50.000Z","size":7066,"stargazers_count":8,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2025-04-07T13:11:36.992Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Walidoux.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":"2022-07-30T12:24:04.000Z","updated_at":"2025-03-05T04:39:09.000Z","dependencies_parsed_at":"2025-02-11T05:41:11.321Z","dependency_job_id":null,"html_url":"https://github.com/Walidoux/todo-tauri-app","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Walidoux/todo-tauri-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Walidoux%2Ftodo-tauri-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Walidoux%2Ftodo-tauri-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Walidoux%2Ftodo-tauri-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Walidoux%2Ftodo-tauri-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Walidoux","download_url":"https://codeload.github.com/Walidoux/todo-tauri-app/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Walidoux%2Ftodo-tauri-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281047804,"owners_count":26435124,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-10-11T00:34:00.605Z","updated_at":"2025-10-26T01:31:43.908Z","avatar_url":"https://github.com/Walidoux.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐕 Productivity App\n\nDesign inspired from a [todo app on FrontendMentor](https://www.frontendmentor.io/challenges/todo-app-Su1_KokOW).\nFrontend Mentor challenges help you improve your coding skills by building real projects.\nBuilt on top of other technologies, more details about them are down below.\n\nThis is currently how it looks like:\n\n![Preview Light/Dark Theme App](./markdown/light-dark-app.png)\n\n## Table of contents\n\n- [Overview](#overview)\n  - [Challenges](#challenges)\n  - [Built with](#built-with)\n  - [What I learned](#what-i-learned)\n- [Continued development](#continued-development)\n  - [Useful resources](#useful-resources)\n  - [Misc](#misc)\n- [Author](#author)\n\n## Overview\n\n### Challenges\n\nUsers should be able to:\n\n- [x] See hover states for all interactive elements on the page\n- [x] Add new todos to the list\n- [x] Mark todos as complete\n- [x] Delete todos from the list\n- [x] Filter by all/active/complete todos\n- [x] Clear all completed todos\n- [x] Toggle light and dark mode\n- [ ] **Bonus**: Drag and drop to reorder items on the list\n\n### Built with\n\n| 🛠️ Technologies                                                                                                                                      | 📝 Descriptions                              |\n| ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |\n| [![Solidjs](https://img.shields.io/badge/Solid%20JS-2C4F7C?style=for-the-badge\u0026logo=solid\u0026logoColor=white)](https://www.solidjs.com/)                | An alternative to React based on reactivity. |\n| [![Rust](https://img.shields.io/badge/Rust-black?style=for-the-badge\u0026logo=rust\u0026logoColor=#E57324)](https://www.rust-lang.org/fr)                     | Programming system typed language.           |\n| [![Typescript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/) | Typed JS language.                           |\n| [![TailwindCSS](https://img.shields.io/badge/Tailwind_CSS-38B2AC?style=for-the-badge\u0026logo=tailwind-css\u0026logoColor=white)](https://tailwindcss.com/)   | CSS Framework.                               |\n| [![Vite](https://img.shields.io/badge/Vite-B73BFE?style=for-the-badge\u0026logo=vite\u0026logoColor=FFD62E)](https://vitejs.dev/)                              | Next generation front-end tooling.           |\n| [![Tauri](https://img.shields.io/badge/Tauri-FFC131?style=for-the-badge\u0026logo=Tauri\u0026logoColor=white)](https://tauri.studio/)                          | Desktop framework for building webviews.     |\n\n### What I learned\n\nAn Immer inspired utility function called `produce()`. This utility allows us to write code that mutates\ndata in the normal way but automatically creates immutable copies behind the scenes.\n\n```tsx\nexport const addTodo = (todo: ITodo) =\u003e setTodos(produce((currentTodos: ITodo[]) =\u003e currentTodos.push(todo)))\n```\n\nAlso, [SolidJS considerations](https://www.solidjs.com/guides/reactivity#considerations)\nare extremely important to understanad when it specifically comes to\nlogic top-level structure or props destructuring, see second one.\n\n## Continued development\n\n- More focus on code written in Rust rather than just in plain JS which reduce compilation time.\n\n- Sharing common design for all OS without breaking UI \u0026 UX desktop apps best practices and conventions. Keeping track of a user friendly interface avoiding an overload of functionalities.\n\n### Useful resources\n\n- [Tauri Action](https://github.com/tauri-apps/tauri-action) - Alternative to cross-platform compilation which builds Tauri binaries for the 3 most known operating systems.\n- [Tauri Docs (Window Module)](https://tauri.app/v1/api/js/modules/window/#appWindow) - Incredibly usefull API for having access to: Events listeners, interfaces, types and methods of the window.\n\n### Misc\n\nA fun cli tool to count lines of code, credits to [theoludwig](https://github.com/theoludwig/theoludwig).\n\n```shell\ncloc . --exclude-dir=target,node_modules --exclude-ext=yaml\n```\n\n## Author\n\n- My Website - [Walid Korchi](https://www.walidkorchi.com/)\n- FrontendMentor - [@Walidoux](https://www.frontendmentor.io/profile/Walidoux)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalidoux%2Ftodo-tauri-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwalidoux%2Ftodo-tauri-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwalidoux%2Ftodo-tauri-app/lists"}