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

0.1.0 Roadmap #107

Closed
aaronleopold opened this issue Mar 25, 2023 · 1 comment
Closed

0.1.0 Roadmap #107

aaronleopold opened this issue Mar 25, 2023 · 1 comment

Comments

@aaronleopold
Copy link
Collaborator

aaronleopold commented Mar 25, 2023

Roadmap

This issue will serve as a roadmap outlining the major features planned for the first release candidate of Stump, v0.1.0, as well as some notes regarding potential post-release goals. This should be treated as a mostly static document, as the features listed are what I consider to be the minimum set to reach a viable release. The section dedicated to post-release features may receive more updates, though. Also note that a few features listed will be more-so nice to haves, rather than hard requirements.

Pre-Release Items

Below are all of the essential features that will need to be completed with at least minimal functionality before the first v0.1.0 release candidate is slated:

  • Miscellaneous maintenance and code smell cleaning
    • Reorganize and consolidate some of the client code, its very messy
      • Split api into separate package to house all the axios functions
      • Rework gross hooks + callback types
        • Fix base query hooks, e.g. custom useQuery
        • Use corrected base queries for all existing hooks
    • Revert the whole prelude crate, organize in other crates where it makes sense
    • Audit dependencies, prune where needed
    • Fix all the peer dependency warnings (where needed, F you storybook lol)
    • cargo report future-incompatibilities --id 4 --package rustc-serialize@0.3.24
    • local-ip-address check if release yoinked comes back okay
    • Optimize [moonrepo](https://moonrepo.dev/docs) setup
    • Tighten logging noise in core
    • Revisit rework of StumpConfig for more efficient environment parsing
  • General server upgrades
  • Add proper testing
    • This will not hold up a release, it is a fairly large and complicated undertaking. I feel that initially, while not ideal, it would be OK to release without this. Then, to to help ensure general code safety, testing should be prioritized alongside new features and bug fixes.
    • Rework integration_tests
    • Add unit testing throughout core
    • Add unit testing throughout server
    • Consider testing UI elements
  • Refine Stump color palette (gray colors are :barf:)
  • Start building out, but don't use quite yet, custom UI components in new package components
  • Rewrite job system
    • Note that these are super complicated with Rust, and they all might not fit into the first release. At a minimum, jobs will be cancellable.
    • Introduce more stateful-ness with job variants
    • Support cancelling jobs
    • Support pausing jobs
    • Save job queue / active workers state during a graceful shutdown
    • Restore job queue / active workers state after graceful shutdown
  • Complete major UI scenes to at least MVP stage:
    • HomeScene
      • Continue Reading, Recently Added, Etc.
      • Statistics
        • Note: I'd like more, but I think this is enough for MVP
      • TopBar
        • Currently unsure what should go here
    • book/epub
      • BookOverviewScene
        • Show progress (if any)
        • Show next in series (using a new cursor page param?)
        • Render book description
          • Plain text
          • Support markdown
        • File information and tags
      • readers:
        • ImageBasedReader
          • ToolBar
            • Fix overly eager image loading
          • Support two-page layout
            • This may be post-release
        • AnimatedImageBasedReader
          • This will not hold up a release, as it is mostly “extra” functionality on top of non-animated variant
          • Correctly implement desired page swipe animation.
        • EpubLazyReader
          • syncs epubcfi and progress_percentage tracking updates with server as reading
          • Restores progress accordingly in UI (i.e. go to correct page based on epubcfi)
          • Epub reader controls #114
    • series
      • SeriesOverviewScene
        • Add series information on 0th page
        • Support filtering and ordering of grids/lists
    • library
      • LibraryOverviewScene
        • Add library information on 0th page
        • Support filtering and ordering of grids/lists
      • LibraryExplorerScene
        • This will not hold up a release
        • Support basic filesystem navigation
        • Double-clicking media should route to appropriate scene
      • CreateLibraryScene
        • Replaces all functionalities from the previous modal implementation
        • Support configuring scanner options
        • Tag management
      • UpdateLibraryScene
        • Replaces all functionalities from the previous modal implementation
        • Support updating scanner options
        • Tag management
    • settings
      • GeneralSettingsScene
        • Users can update their username and password
        • Users can update their locale preferences
        • Users can update their avatar image URL
        • Probably one or two more things (this page is rather bland ATM)
      • UserManagementScene
        • Admins can create users
        • Admins can delete users
          • soft delete
          • hard delete
        • Admins can view users
        • Admins can update certain user attributes
          • e.g. remove offensive or otherwise unwanted avatars
      • JobsAndConfigurationScene
        • TODO
      • SeverConfigurationScene
        • TODO
    • Remove all those Loading... placeholders 🤢
  • Store redirects for unauthenticated access via HTTP calls
    - I.e. if I visit /some-page/1, and get redirected to /auth, should redirect instead with query params to restore state: /auth?redirect=/some-page/1
    • All client side routing and API calls
    • Swagger UI
  • Scanner
    • Create new option for series dedicated scan
    • More content-aware scan resolutions
      • This is very complex, and might be pushed to post-release.
      • Support restoring missing library if newly scanned library “matches” missing one
      • Support restoring missing series if newly scanned series “matches” missing one
        • Note that there is a VERY naive implementation of these, but it simply won't cut it. So I am not counting them as done.
    • Restrict concurrency to avoid performance degradation
    • Configuration
      • Per-library basis
      • Support .stumpignore files to alter what the scanner will look at
      • Support generating thumbnails Thumbnail quality options #44
        • Generic, downscaled webp generation
        • Specific, user-configured, scaling options:
          • Custom scaled height and width (e.g. 0.5 x 0.75)
          • Custom scaled (e.g. 0.5, equal to 0.5 x 0.5 above)
          • Custom size in pixels (e.g. 331.5 x 512)
        • Specific, user-configured, output formats:
          • png
          • jpg
          • webp
  • Minimal RBAC / ABAC RBAC / ABAC for managed accounts #41
  • Basic reading list support Basic reading list support #37
    • At the very least, I'd like to be able to have users create a reading list and edit/delete them.
  • Format support
  • Finish CI workflows CI Roadmap #93
    • Setup self hosted runner
  • Add some automated system for versioning/releases
  • Documentation
    • Finish writing it lol
    • Ensure all configuration options are documented
  • Thorough user testing!!
    • I’d like a solid 2-week period of at least a handful of testers using Stump trying to break it wherever possible

Post-Release Items

First and foremost, the top priority after the initial release will be bug fixes and maintenance. If you've read the entire Pre-Release Items section, you'll know that v0.1.0 is intended to be a sort of MVP, and not a fully featured option yet. That being said, the following are things I'd like to explore afterwards, also not necessarily in priority order:

  • Desktop App
    • Note: this should be very little effort, and will only really require:
  • Tachiyomi Support Tachiyomi support/extension #48
    • While one day I would like to create an in-house mobile application, since I can re-use some of the code for web/desktop, priority will be here
  • Look into better validation for some HTTP inputs via https://github.com/Keats/validator
  • Rethink HTTP endpoints allow better range of filter options
    • Basic structure implemented, just a matter of prioritizing it time permitting
  • Consider paying for small hosted Stump instance for demo purposes
    • Support a sort of demo mode with restricted functionalities
  • Start work towards benchmarks crate
@aaronleopold
Copy link
Collaborator Author

Closing this as to not maintain multiple lists. I'll just be using projects

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant