stry
is a self hosted web server that is an interface for reading ePubs and other text content, specifically fanfiction.
It allows you to have Archive of Our Own style tagging, along with its powerful search system all the while being enchanted by booru inspired tag search.
- Tagging system
- Search
- Importer from various sites
- Built upon story-dl
- Single user only, made for the phone and Raspberry Pi
- Keyboard controls (WIP)
- Rust
- Specifically
stable-1.45.2
- Specifically
cargo-make
- C/C++ compiler
- Optionally:
cross
(If you are cross-compiling)- cURL
- OpenSSL
- SQLite
stry
support multiple different platforms through use of cross
and native compilation.
This is a list of platforms that stry
should be able to ran on.
If you managed to get it running on a unlisted platform, either let me know or submit a pull-request.
- AArch64
- Samsung S7
- ARMv7
- Raspberry Pi 3 B+
- Linux x64
- Not Yet Tested
- MacOSX
- Not Yet Tested
- Windows x64
NOTE: stry
is primarily developed on a Windows machine so some platforms may not be tested.
To build stry
using the bundled/static libraries is just a simple build command:
cargo make build-<PLATFORM>
stry
by default uses bundled/static versions of cURL
, OpenSSL
, and SQLite
.
While a bad idea generally, it does this to allow for easier building on the AArch64
, ARMv7
, and Windows
targets.
To build stry
without bundling you have to disable the default features:
cargo make build-<PLATFORM> --no-default-features
stry
can be controlled by command line argument and/or a config file.
The config options can be overridden by command line arguments, which allows you to quickly test features without editing a file.
Most config file options can be controlled with command line argument but not all of them. This would be due to either not being implemented (yet), not being fully implemented, or I haven't figured out a way to implement them (yet).
See the stry --help
for all options as it is undergoing work, and could change at any time.
stry
's config file is written in RON
or Rusty Object Notation
which is similar in structure to normal JSON.
Have a look at is page as it may confuse you quite a bit.
By default stry
will try to read its config (stry.ron
) from the current directory, if it can't be found it will fallback onto its default built-in config.
In the future stry
will look for its config the normal UNIX and Windows config paths.
Have a look at stry.ron.example
which shows the default built-in config along with comments describing parts of it.
stry
, being written in Rust, uses a number of libraries from other developers.
A list can be found in the Cargo.toml
file but some notable libraries include:
- The Tokio team's async runtime Tokio and application level tracing Tracing
- Sean McArthur's async web server Warp
- Dirkjan Ochtman's compile time template engine Askama
- John Gallagher's SQLite3 bindings Rusqlite
- Steven Fackler's native PostgreSQL driver Rust-Postgres
Non managed, but bundled, libraries include:
- Jeroen Akkerman's markdown editor EasyMDE
- Craig Campbell's keyboard shortcut handler Mousetrap
- yairEO's tag input Tagify
- Font Awesome, required by EasyMDE
This project is licensed under the MIT License - see the LICENSE file for details.
Thanks to Archive of Our Own for being a great inspiration for most of this project, along with being a goal to work towards.