Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development Overview #2

Open
26 tasks done
oscartbeaumont opened this issue Jun 30, 2022 · 8 comments
Open
26 tasks done

Development Overview #2

oscartbeaumont opened this issue Jun 30, 2022 · 8 comments
Assignees
Labels
v1.x A change for version 1.x.x

Comments

@oscartbeaumont
Copy link
Member

oscartbeaumont commented Jun 30, 2022

Pre open-source:

  • Website
  • Basic Typescript runtime
  • Do query & mutation over websocket
  • Primitive Subscriptions working
  • Publish Crate and NPM package
  • Add npm link to sidebar on website

Spacedrive Features:

  • Rename CompiledRouter to Router and Router to RouterBuilder + Give CompiledRouter a set of default generics
  • selection!(x, { field_one, field_two }) macro
  • selection! macro on lists
  • Error Handling
  • Provide ctx function access to context/session/data/extensions + Alllow it to capture data
  • feat: generate code as side effect of build #5
  • Subscriptions
    • Access Context
    • Export type definitions
    • Subscription start/stop
  • Subscriptions working with middleware
  • React-query support
  • Tauri bindings
  • Handling tenants or libraries. I am thinking maybe the ID comes from the request context but how would the frontend inject context. Maybe something on client but that has React context???
  • Remove trpc compatibility to clean up code + typescript support for error handling
  • Mattrax bindings are not generating correctly! This is Exporting dependencies of dependencies #6

Fixes:

@oscartbeaumont oscartbeaumont self-assigned this Jun 30, 2022
@oscartbeaumont
Copy link
Member Author

oscartbeaumont commented Aug 5, 2022

Future:

  • selection! macro add abritary values Eg. selection!(user, { __type: "user", name, email }); - This would be cool but may not be possible
  • selection! macro subselection Eg. selection!(userWithPets, { name, email, pets: { name, email });
  • Example with how to do pagination with Prisma Client Rust
  • Websocket heartbeat and kill stale connections
  • Allow application to detect if websocket connection is dropped -> This could be used for a visual warning.
  • Passthrough Rust deprecated to Typescript doc comment

Long Term:

  • Remove tokio from dependencies if possible
  • Content Types #7
  • Better system for entending frontend hooks. Like Spacedrive does with useBridgeQuery and useLibraryQuery to automatically handle injecting the library id. This shouldn't be such a burden on end application developers.
  • Snippets on the documentation website should be unit tested
  • Client-side navigation on the documentation website with preloading

@oscartbeaumont
Copy link
Member Author

oscartbeaumont commented Aug 18, 2022

v0.0.5:

  • Redo the Typescript monorepo. Jump to definition working, Split Tauri and React out of base client.
  • Split up all Typescript packages
  • New syntax for defining plugins
  • Plugin architecture
  • Migrate to httpz -> Fixes Support for all common Rust webserver #22
  • Specta #17
  • Move example to Astro so it can use microfrontends
  • Open source httpz
  • OpenAPI #29
  • Handling Config defined on a subrouter when merging. Warning when mounting multiple Config's.
  • sqlx types in Specta
  • Rust documentation for docs.rs
  • Docs for beginners -> Using Arc + Mutex to get state into rspc. Contrast with Axum and Actix-web approaches to state.
  • Contributing guide, PR and Issue template
  • GitHub Social Banner + OpenGraph tags on documentation website
  • Typescript helpers

@oscartbeaumont
Copy link
Member Author

oscartbeaumont commented Aug 18, 2022

Future:

@oscartbeaumont oscartbeaumont changed the title Version One Development Overview Aug 18, 2022
@oscartbeaumont oscartbeaumont pinned this issue Aug 18, 2022
@oscartbeaumont
Copy link
Member Author

Document using a Cargo Alias to run the unit test

@oscartbeaumont
Copy link
Member Author

oscartbeaumont commented Sep 25, 2022

Next release plans:

  • Redo Axum extractor system
  • Test cases for middleware and context switching
  • Alpha of create-rspc-app
  • ctx.invalidateQuery
  • Batching
  • AbortController
  • Ability to authenticate in the HTTP endpoint (for WS or HTTP) before executing router #47
  • OpenAPI #29
  • Rust client
  • Cleaning up examples -> They are suck a mess currently
  • Plugin metadata store and hooks - So something like OpenAPI could be done.
  • Actix-web support
  • Rocket support
  • Netlify Functions support
  • Cloudflare Workers support
  • Vercel Functions support
  • Ensure everything from my other work is backported
  • use Specta for internal types
  • Specta support for flatten
  • rustdocs on everything
  • System for rate limiting http & websocket connections from specific clients (based on IP, cookies, etc)
  • Catch panics in resolvers and correctly return an error instead of terminating the HTTP connection.
  • Upgrade vscode extension with new middleware syntax
  • CI/CD process moved over from rspc

@oscartbeaumont
Copy link
Member Author

oscartbeaumont commented Sep 29, 2022

Documentation Site v3 Upgrades:

  • 404 page is bad in dark mode
  • Sidebar on midsized screen text size goes bigger and sucks
  • Document the taurignore functionality
  • SPA routing
    • Morphdom
    • Disable navigation buttons while in navigation phase
  • Reset scroll state of changing page
  • IOS support broken with the morphdom stuff
  • Edit this page button
  • Warnings section like the Spacedrive docs
  • Jump to content thing for accessibility
  • Interactive demos -> Idk how but make it happen (Rust compiler on Netlify Functions would be wack).
  • Search
  • Upgrading landing page to show code examples and discuss advantages
  • Right click logo for brand page
  • Valid link checker in CI
  • Unit test examples to ensure they are valid
  • Random animation on homepage
  • Button to copy entire code snippet
  • Minimisable sidebar sections
  • Cleanup styles and Tailwind config
  • JS Doc for Typescript API

@oscartbeaumont
Copy link
Member Author

oscartbeaumont commented Sep 30, 2022

  • Generic middleware response type
  • Middleware func takes in impl Serialize + Type
  • Build impl GenericRouter to fix the Spacedrive problem of returning routers
  • Move operation names into Cow or trie router
  • mw.middleware should be shorten to mw(...) like what is done for procedures
  • Non-async middleware
  • Middleware which don't return a result?

@oscartbeaumont
Copy link
Member Author

  • rspc.useInfiniteQuery
  • rspc.invalidateQuery

@oscartbeaumont oscartbeaumont unpinned this issue Jan 8, 2023
@oscartbeaumont oscartbeaumont added the v1.x A change for version 1.x.x label May 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v1.x A change for version 1.x.x
Development

No branches or pull requests

1 participant