imobs / crab-reader Goto Github PK
View Code? Open in Web Editor NEWA typesafe RSS reader in Rust and React-TS
License: MIT License
A typesafe RSS reader in Rust and React-TS
License: MIT License
Might as well get in the habit even if it's just me and I only know english and bad english. Watch this video.
The naive approach would be to serialize the subscriptions and stories (maybe as JSON, maybe using bincode) as a file in the app data directory.
The more complex approach would be to instead use SQLite (either through something like sea-orm or the Tauri SQL plugin) and normalize everything into relational structures.
Either way, there are questions about what needs to be saved, what the unique keys would be, and what are the complex relationships between different kinds of data.
Husky will run lint-staged pre-commit and commitlint for commit-msg. lint-staged should run eslint for *.{ts,tsx}
and prettier for *.{css,html,json,md}
.
Blocked by #3.
Not sure if testing-library/jest-dom will just work with vitest or if it's easier to just stick with jest despite using vite to build. The tauri docs also have some helpers for setting up mocks.
This should run in a matrix across all OS:
Dealing with build artifacts will come later when thinking about releases.
This should use typescript-eslint and extend eslint/recommended, react/recommended, react/jsx-runtime, react-hooks/recommended, import/recommended, import/typescript, and prettier/recommended.
Add a module to handle fetching feeds. This would be a good time to explore libraries like reqwest for getting data. This should all be async and can even see about parallelizing the list of URLs like Promise.all
but the rust version. For now, the raw XML string can be returned but in the future maybe it'll be better to use serde-xml.
When an entry is clicked on from the list, this will show the whole article.
Potentially blocked by adding a feed, fetching a feed, and caching feeds. Could use mock data before then.
This will be a simple text input that takes a URL and then sends an IPC command to rust. There it will be added to a vector (for now).
Could use the store plugin to save a config that can be accessed from both FE and BE. There should still be an IPC command to trigger a fetch of the feed.
This would allow for import and export like others.
This might necessitate a more complex storage solution than the store plugin and maybe then it'll be helpful to have something like SQLite. The list of feeds could live in a proper database and be relational to articles. This also plays into how caching could be handled to read the database first, trigger a fetch, and then upsert the results.
This list will pull from all feeds and sort by most recent. It will show the item title, date, and short description.
The list should be paginated or have some kind of infinite scroll (preferred) so that it's not necessary to get all feeds for all time.
Potentially blocked by adding a feed, fetching a feed, and caching feeds. Could use mock data before then.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
src-tauri/Cargo.toml
tauri 1.5
serde 1.0
serde_json 1.0
log 0.4.20
reqwest 0.11.22
anyhow 1.0.75
thiserror 1.0.50
futures 0.3.28
rss 2.0.6
chrono 0.4.31
specta 1.0.5
tauri-specta 1.0.2
ammonia 3.3.0
strum 0.25.0
opml 1.1.5
mockito 1.2.0
tokio 1.33.0
tauri-build 1.5
.github/workflows/ci.yml
actions/checkout v4
actions/setup-node v4
actions/checkout v4
actions/setup-node v4
actions/checkout v4
Swatinem/rust-cache v2
actions/checkout v4
Swatinem/rust-cache v2
.github/workflows/release-please.yml
google-github-actions/release-please-action v3
actions/checkout v4
.github/workflows/release.yml
actions/checkout v4
actions/setup-node v4
Swatinem/rust-cache v2
tauri-apps/tauri-action v0
package.json
@headlessui/react ^1.7.13
@heroicons/react ^2.0.16
@hookform/resolvers ^3.0.0
@tauri-apps/api ^1.2.0
clsx ^2.0.0
date-fns ^2.29.3
react ^18.2.0
react-dom ^18.2.0
react-hook-form ^7.43.5
zod ^3.21.4
@commitlint/cli ^18.0.0
@commitlint/config-conventional ^18.0.0
@tailwindcss/typography ^0.5.9
@tauri-apps/cli ^1.2.2
@testing-library/dom ^9.0.1
@testing-library/jest-dom ^6.0.0
@testing-library/react ^14.0.0
@testing-library/user-event ^14.4.3
@types/node ^18.7.10
@types/react ^18.0.15
@types/react-dom ^18.0.6
@typescript-eslint/eslint-plugin ^6.0.0
@typescript-eslint/parser ^6.0.0
@vitejs/plugin-react ^4.0.0
@vitest/coverage-v8 ^0.34.1
autoprefixer ^10.4.14
eslint ^8.36.0
eslint-config-prettier ^9.0.0
eslint-import-resolver-typescript ^3.5.3
eslint-plugin-import ^2.27.5
eslint-plugin-jsx-a11y ^6.7.1
eslint-plugin-prettier ^5.0.0
eslint-plugin-react ^7.32.2
eslint-plugin-react-hooks ^4.6.0
husky ^8.0.3
jsdom ^22.0.0
lint-staged ^15.0.0
postcss ^8.4.21
prettier ^3.0.0
sass ^1.59.3
tailwindcss ^3.2.7
typescript ^5.0.0
vite ^4.0.0
vitest ^0.34.0
It might be possible to use selenium (or cypress) to drive E2E testing using tauri-driver. It's still in early development but would be nice to automate the full app experience.
All logging for both frontend and backend can be centralized using a plugin.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.