πŸ“¦ An independent package manager that every hacker deserves.

Overview


An independent package manager for unix and linux🌷

MIT LICENSE

Table of contents πŸ“”

Why?? 🚩

I am a CTF player (Capture the flag) who often finds myself without my main laptop in places that lack the tools I need. Some distros don't carry the packages I require and some doesn't keep them updated. That's why I created my own package manager :). It fetches tool binaries easily, ensuring I always have what I need to compete.

Dont touch my shrug

Features ⚾

  1. Versatile : Hysp operates on (*nix) systems and various architectures (x86, aarch64_arm), providing flexibility for your needs.
  2. Simple : No prerequisites is needed for Hysp or hysp-pkgs. Install Hysp as a single binary, no need for Go, Rust, or any other dependencies. Saves space, storage, and time.
  3. Customizable : Pkg-Source can be self-hosted by anyone, allowing hysp to use your very own instead of the default source and local configuration as well. See #Self hosting
  4. Statically compiled : The default source metis-os/hysp-pkgs) has all statically compiled binaries, only statically linked binaries that will run anywhere. You can always host dynamic or whatever you want.
  5. No Special Privileges : Hysp requires no special perms or privileges. It can run completely in userspace with all of its features.
  6. Everything is open source : Hysp uses github actions to build and ship the packages. On top of that it uses sha for varifying the binary.
7. Security Considerations  

It is never a good idea to install random binaries from random sources.

Check these HackerNews Discussions

!# PKG Metadata
# Everything is automated via Github Actions & Scripts
Repo --> https://github.com/metis-os/hysp-pkgs
WorkFlows --> https://github.com/metis-os/hysp-pkgs/tree/main/.github/workflows
Scripts --> https://github.com/metis-os/hysp-pkgs/tree/main/.github/scripts

!# Upstream Source
# Everything is automated via Github Actions & Build Scripts
Repo --> https://github.com/Azathothas/Toolpacks
WorkFlows --> https://github.com/Azathothas/Toolpacks/tree/main/.github/workflows
Build Scripts --> https://github.com/Azathothas/Toolpacks/tree/main/.github/scripts

Installation πŸ“©

πŸͺ„ Binary  
  • Manual : You can directly download the binary of your arch and run it.
  • One liner : Run this script, requires jq,curl, tar & wget
wget -qO- "$(curl -qfsSL "https://api.github.com/repos/pwnwriter/hysp/releases/latest" | jq -r '.assets[].browser_download_url' | grep -Ei "$(uname -m).*$(uname -s).*musl" | grep -v "\.sha")" | tar -xzf - --strip-components=1
./hysp -h
🌼 Source  
git clone --depth=1 https://github.com/pwnwriter/hysp --branch=main
cd hysp
cargo build --release 

Then go to release dir and ./hysp or move the binary to your any $PATH for instant access from anywhere.

🎠 Cargo
  • Using crates.io

    cargo install hysp
  • Using binstall

    cargo binstall hysp

    Note ⚠️ This requires a working setup of rust/cargo & binstall.

🚩 METIS Linux  
sudo/doas pacman -Sy hysp
πŸ’’ Arch user repository  
paru/yay -S hysp-git

Hysp usages 🎠

Firstly, if you intend to access the binaries installed via hysp over the system, you may want to...

🏡️ Setup path for hysp bin
  • Add the following line to your shellrc. [ zshrc, bashrc etc. ]

    export PATH="$HOME/.local/share/hysp/bin/:$PATH"
🐀 Help menu  
hysp |install|uninstall|search| -h # check for help menu

screenshot_2023-11-28_13-45-12

πŸ”» Installing a pkg  
hysp install -p <pkg> # use --force to overwrite already installed binary 

screenshot_2023-11-25_22-38-24

🧁 Removing a pkg  
hysp remove -p <pkg> 

screenshot_2023-11-27_18-56-49

πŸ”­ Search for available pkgs  
hysp search -p <pkg> # use --silent to strip down the console i/o

screenshot_2023-11-26_14-24-57

βš•οΈ Checking configuration health  
hysp health

screenshot_2023-11-28_13-51-37

Hosting custom repo πŸ’Ύ

  • Hysp provies the following configuration, which can be overwritten by defining a config file. Default config

      [source]
      remote = "https://raw.githubusercontent.com/metis-os/hysp-pkgs/main/data/"
      aarch = "Architecture"
    
      [local]
      home="/home/user/.local/share/hysp"
      bin="/home/user/.local/share/hysp/bin/" 
      data="/home/user/.local/share/hysp/data/Architecture/" 
  • Explanation

Name Description Default
remote Package repository metis-os/hysp-pkgs
home Home for hysp hysp
bin Directory to save the binaries ~/.local/share/hysp/bin
data Directory to save pkg data ~/.local/share/hysp/data/Architecture
aarch Your system Architecture Only supported X86_64,aarch64
πŸŽ„ Tree view of the repo  
.
β”œβ”€β”€ available.toml # Storing available pkgs info (Optional)
β”œβ”€β”€ data
β”‚   └── x86_64 # Your cpu Architecture (aarch64 and x86_64) supported for now
β”‚       └── foo.toml # where the package data are stored (needed)
πŸ“‚ Sample pkg  
[bin]
name = "$BIN" # Name of the pkg to be installed as

[package]
architecture = "x86_64" # Your aarchitecture 
name = "$BIN" # Your package name
description = "$DESCRIPTION" # Description
author = "$AUTHOR" # Author 
repo = "$REPO_URL" 
stars = "${STARS}"
version = "$PKG_VERSION"
updated = "$PKG_RELEASED"
size = "$SIZE"
sha = "$SHA" 
source = "$SOURCE_URL" # Source of the binary wherever it's hosted
language = "$LANGUAGE"
license = "$LICENSE"

[package.conditions]
conflicts  = ["$BIN"] # Conflictions 
requires = [] # Dependencies 

[package.metadata]
keywords = $TOPICS
categories = ["Utilities"]

Packages whuat?? πŸ“¦

There is a list of packages available in metis-os/hysp-pkgs . You can confidently utilize the default configuration without any hesitation. However, if you prefer to host your own packages, you have the option to do so by creating your own custom configuration file under ~/.config/hysp/config.toml. See #repo

Support πŸ’Œ

I am a student currently attending university. I like working for Open Source in my free time. If you find my tool or work beneficial, please consider supporting me via KO-FI or ESEWA* (Nepal only), Or by leaving a star ⭐ ; I'll appreciate your action :)

License γŠ™οΈ

Everything is license under the MIT except for the packages... They hold their own livess :oOO

Copyright © 2023 pwnwriter xyz ☘️

Comments
  • [pkg request]: Package presenterm for hysp-pkgs

    [pkg request]: Package presenterm for hysp-pkgs

    Package Name

    presenterm

    Package Homepage

    https://github.com/mfontanini/presenterm

    Software Architecture

    x86_64, aarch64_arm

    Purpose/Description

    It's a terminal slideshow tool.

    Additional Information

    No response

    Check Package Availability

    No

    package request 
    opened by pwnwriter 1
  • inconsistent docs re default data location

    inconsistent docs re default data location

    Default config file: data="/home/user/.local/share/hysp/data/Architecture/"

    Explanation immediately below data Directory to save pkg data ~/.local/share/hysp/data

    Noticed because it seemed strange to have a single bin dir for x64 and aarch64 with different data dirs for the two. Probably just a documentation misfire.

    opened by JonChesterfield 1
  • Suggestion for Improved User Feedback When No Packages are Installed in hysp

    Suggestion for Improved User Feedback When No Packages are Installed in hysp

    Dear @pwnwriter,

    First and foremost, I'd like to extend my heartfelt appreciation for your work on this fascinating project. It's been an exciting journey exploring what hysp has to offer.

    I've recently encountered a minor issue that I believe could be improved for a better user experience. Upon initial use of hysp, specifically when running hysp list, I received an error message due to the absence of any installed packages. While the error makes sense given that no packages were installed, I propose a more user-friendly approach to this scenario.

    Currently, the system responds with the following error:

    $ hysp list
    Info: Using default configuration.
    ────────────────────────────────
    Error listing files in /home/steinbrueckri/.local/share/hysp/bin: No such file or directory (os error 2)
    
    

    A more informative and less technical response could enhance the user's understanding of what needs to be done next. For instance, a message like "You have not installed any packages yet" would immediately clarify the situation without implying a system error.

    This small change could significantly improve the user experience, especially for those who are new to hysp.

    Thank you for considering this suggestion. I am looking forward to your thoughts and the continued evolution of this project.

    Best regards, Richard

    enhancement 
    opened by steinbrueckri 1
  • chore(deps): bump serde from 1.0.192 to 1.0.193

    chore(deps): bump serde from 1.0.192 to 1.0.193

    Bumps serde from 1.0.192 to 1.0.193.

    Release notes

    Sourced from serde's releases.

    v1.0.193

    Commits
    • 44613c7 Release 1.0.193
    • c706281 Merge pull request #2655 from dtolnay/rangestartend
    • 65d75b8 Add RangeFrom and RangeTo tests
    • 332b0cb Merge pull request #2654 from dtolnay/rangestartend
    • 8c4af41 Fix more RangeFrom / RangeEnd mixups
    • 24a78f0 Merge pull request #2653 from emilbonnek/fix/range-to-from-de-mixup
    • c91c334 Fix Range{From,To} deserialize mixup
    • 2083f43 Update ui test suite to nightly-2023-11-19
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump spinoff from 0.7.0 to 0.8.0

    chore(deps): bump spinoff from 0.7.0 to 0.8.0

    Bumps spinoff from 0.7.0 to 0.8.0.

    Release notes

    Sourced from spinoff's releases.

    0.8.0

    What's Changed

    • Spinner instances can now be locked between mutexes and shared between threads
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Quality of Life Changes & Some must have features in Hysp

    Quality of Life Changes & Some must have features in Hysp

    1. Add/Use metadata in config.toml

    • Note : This should be an optional feature, toggled only if config.toml contains [source].metadata, else print [source].metadata not defined in config file (for self-hosting people)
    • Default config.toml should contain this field as all the backend work is already done
      [source]
      aarch = "Architecture"
      metadata = "https://raw.githubusercontent.com/metis-os/hysp-pkgs/main/data/metadata.toml" 
      remote = "https://raw.githubusercontent.com/metis-os/hysp-pkgs/main/data/"
      
      [local]
      home="/home/user/.local/share/hysp"
      bin="/home/user/.local/share/hysp/bin/" 
      data="/home/user/.local/share/hysp/data/"
    
    • Why ?
    1. Implement cli to list all available packages based on metadata.toml
    hysp list (-a | --all) --> List all available Packages
    # Default: hysp cli to list only installed packages can be changed to something like: 
    hysp list (-i | --installed) --> List only Installed Packages
    

    1. Implement cli to fuzzy search packages based on metadata.toml
    hysp search -p foo --> Should search for *foo*
    # Default: hysp cli to install packages should stick to using exact matches
    hysp install -p foo --> Should install exactly foo, based on foo.toml
    

    1. Allow Installing/Uninstalling multiple packages at once

    hysp install -p foo bar xyz --> Should install all three, one after another based on their `.toml` files.
    # If it's not too much work, the search cli should also be able to search for multiple packages at once:
    hysp search -p foo bar xyz --> Should search & print info for all three, and if fuzzy search is already implemented, then it should cotinue to fuzzy search for all three
    
    #Similarly, the remove cmd should also be able to uninstall multiple packages at once
    hysp remove -p foo bar xyz --> Should uninstall all three, one after another based on $BIN/$PKG
    
    enhancement 
    opened by Azathothas 1
  • [PKG xyz Request] How to request your favorite tools/pkgs to be included in hysp-pkgs [Guide]

    [PKG xyz Request] How to request your favorite tools/pkgs to be included in hysp-pkgs [Guide]

    1. Check if it's already included in hysp-pkgs:
    hysp search -p "$PKG"
    
    #-----------------------------------------------------------------------------#
    ↣ x86_64
    #Total Ported Packages --> metis-os/hysp-pkgs
    curl -qfsSL "https://raw.githubusercontent.com/metis-os/hysp-pkgs/main/data/metadata.json" | jq -r '.packages[] | select(.architecture == "x86_64")' | jq -r '.name' | sort -u 
    #Detailed: https://github.com/metis-os/hysp-pkgs/blob/main/data/x86_64/README.md
    #-----------------------------------------------------------------------------#
    ↣ aarch64 || arm64
    curl -qfsSL "https://raw.githubusercontent.com/metis-os/hysp-pkgs/main/data/metadata.json" | jq -r '.packages[] | select(.architecture == "aarch64_arm64")' | jq -r '.name' | sort -u
    #Detailed: https://github.com/metis-os/hysp-pkgs/blob/main/data/aarch64_arm64/README.md
    
    1. Check if it's being built at Azathothas/Toolpacks but not yet ported to hysp-pkgs
    Diff:  https://github.com/metis-os/hysp-pkgs/blob/main/.github/PKGS_DIFF.txt
    
    #-----------------------------------------------------------------------------#
    ↣ x86_64
    #Total Hosted pkgs --> Azathothas/Toolpacks
    curl -qfsSL "https://api.github.com/repos/Azathothas/Toolpacks/contents/x86_64/" | jq -r '.[].name' | sort -u
    #Detailed: https://github.com/Azathothas/Toolpacks/blob/main/x86_64/README.md
    #-----------------------------------------------------------------------------#
    ↣ aarch64 || arm64
    #Total Hosted pkgs --> Azathothas/Toolpacks
    curl -qfsSL "https://api.github.com/repos/Azathothas/Toolpacks/contents/aarch64_arm64/" | jq -r '.[].name' | sort -u
    #Detailed: https://github.com/Azathothas/Toolpacks/blob/main/aarch64_arm64/README.md
    
    • If PKG xyz shows up here, have patience, it will eventually be added to hysp-pkgs
    • There's a pinned issue https://github.com/metis-os/hysp-pkgs/issues/1 that tracks this very thing
    1. If PKG xyz really doesn't exist
    1. Search if it already exists at : https://github.com/metis-os/hysp-pkgs/issues
    2. Create an issue at : metis-os/hysp-pkgs
    3. Use this template:
    Title : [PKG REQUEST] $Package_Name for $AARCH
    # Example: [PKG REQUEST] fzf for x86_64 Linux
    Body :
    - Repo : Include Link to Source Code (Github/Gitlab etc)
    - Description : A brief description about the pkg, what it is about/does etc.
    - Binary Releases : Whethere pre-compiled binaries are provided, if they are then `Yes` else `No`
       - If Binaries are already provided, download/extract it & include output for `file $PKG` & `ldd $PKG`
       - #Example : https://github.com/metis-os/hysp-pkgs/issues/2
    - Needs to compile : If Releases are not provided,, or they are dynamic, write `Yes` else `No`
    - Compile Instructions : If $PKG needs to be compiled & you know how to make it static, please include the build description.
    
    • Note: Your PKG xyz must be able to be compiled statically (Usually go/rust) or have their static binaries published as Releases.
    • An attempt will be made to compile PKG xyz, but ***if it's always dynamic***, PKG xyz wont be added to hysp-pkgs
    • Compiled Binary must be less than 100 MB in size. This is because of Github's Size limit.
    opened by Azathothas 0
  • chore(deps): bump clap from 4.4.8 to 4.4.10

    chore(deps): bump clap from 4.4.8 to 4.4.10

    Bumps clap from 4.4.8 to 4.4.10.

    Release notes

    Sourced from clap's releases.

    v4.4.10

    [4.4.10] - 2023-11-28

    Documentation

    • Link out to changelog
    • Cross link derive's attribute reference to derive tutorial

    v4.4.9

    [4.4.9] - 2023-11-27

    Fixes

    • (help) Show correct Command::about under flattened headings
    • (help) Respect hide when flattening subcommands
    Changelog

    Sourced from clap's changelog.

    [4.4.10] - 2023-11-28

    Documentation

    • Link out to changelog
    • Cross link derive's attribute reference to derive tutorial

    [4.4.9] - 2023-11-27

    Fixes

    • (help) Show correct Command::about under flattened headings
    • (help) Respect hide when flattening subcommands
    Commits
    • c0a1814 chore: Release
    • c83e681 docs: Update changelog
    • 91bcac4 Merge pull request #5230 from epage/migrate
    • 030d875 docs: Link out to the changelog at the relevant tag
    • b661a9d Merge pull request #5229 from epage/derive
    • a08587b docs(derive): Link to tutorial sections for attributes
    • 21b671f chore: Release
    • 93ba76d docs: Update changelog
    • c1c55b3 Merge pull request #5228 from epage/flat
    • b13f6d9 fix(help): Hide 'help' if only flattened subcommand
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.1.1)
Owner
Nabeen Tiwaree
19, creator of @metis-os, infosec *nix systems.
Nabeen Tiwaree
experimental package manager for node.js

pacquet Experimental package manager for node.js written in rust. Disclaimer: This is mostly a playground for me to learn Rust and understand how pack

pnpm 349 Aug 22, 2023
Package used by the cosmos-rust-interface. Makes direct use of cosmos-rust.

Package used by the cosmos-rust-interface. Makes direct use of cosmos-rust (cosmos‑sdk‑proto, osmosis-proto, cosmrs).

Philipp 4 Dec 26, 2022
A package that has a collection of unspent p2wsh bitcoin transactions.

P2WSH-UTXO A package that has a collection of unspent p2wsh transactions. Useful to see what are potential unspent multisig transactions. Library Crea

Tony Giorgio 3 Oct 22, 2022
Tooling for the simple-package-paths Nix RFC

Implementation Index the tree for references. If .git exists, use ls-tree equivalent Check the validity of the pkgs/unit directory Should only contain

Nixpkgs Architecture Team 3 Jan 18, 2023
The simple password manager for geeks, built with Rust.

Rooster Rooster is a simple password manager for geeks (it works in the terminal). Rooster is made available free of charge. You can support its devel

Conrad Kleinespel 131 Dec 25, 2022
🐴 RusTOTPony β€” CLI manager of one-time password generators aka Google Authenticator

?? RusTOTPony CLI manager of time-based one-time password generators. It is a desktop alternative for Google Authenticator. Installation Arch Linux Pa

German Lashevich 23 Jan 5, 2023
A small and modular media manager

Bookshelf - a small and modular media manager Bookshelf is made for managing media, mainly books. Modules are to be made by the user (or stolen from t

Chocolate Overflow 33 Jul 21, 2022
A simple password manager written in rust

Passman - A password manager written in rust. How to use?: USAGE: passman option Currently available options are: new - initalize passman with a new m

Strawkage 7 Aug 26, 2021
A simple password manager written in Rust

ripasso A simple password manager written in Rust. The root crate ripasso is a library for accessing and decrypting passwords stored in pass format (G

Joakim Lundborg 550 Dec 30, 2022
Manager for single node Rancher clusters

Bovine Manage single node Rancher clusters with a single binary, bovine. % bovine run Pulling [rancher/rancher:latest], this may take awhile... Ranche

Nick Gerace 51 Feb 17, 2022
A password manager coded in rust

pasman A password manager coded in rust Install Dependency rust Shell git clone https://github.com/AMTitan/pasman.git cd pasman cargo build --release

Arthur Melton 4 Nov 8, 2021
The free password manager for power users

The free password manager for power users

null 312 Oct 22, 2022
A lightning-fast password generator and manager written in Rust

Passlane A lightning-fast password manager for the command line Features Generate passwords Place the generated password into the clipboard Save previ

Anssi Piirainen 4 Dec 15, 2022
Cloup is a template manager that provides the files you desire when you need them, written in Rust.

cloup cloup is a template manager that delivers the files you desire when you need them, written in rust you no longer need to locate your previous pr

Benjamin Akar 62 Dec 5, 2022
A terminal-based password manager, generator, and importer/exporter (Firefox, Chrome) backed with a concurrent hashmap

rucksack A terminal-based password manager, generator, and importer/exporter (Firefox, Chrome) backed with a concurrent hashmap Features Password gene

null 6 Jan 18, 2023
CLI password manager with encryption: AES256, Salsa20 and Chacha20, with cross platform and exclusive features

Keep My House (CLI) CLI password manager with encryption: AES256, Salsa20 and Chacha20, with cross platform and exclusive features Features AES256 GCM

null 4 Sep 7, 2023
A Password Manager Using age for Encryption

A Password Manager Using age for Encryption Contents Features Usage Install Import from pass How It Works Features It is inspired by pass. senior's fe

Retirement Home 3 Nov 2, 2023
The Hacker's Machine Learning Engine

Juice This is the workspace project for juice - machine learning frameworks for hackers coaster - underlying math abstraction coaster-nn coaster-blas

spearow 982 Dec 31, 2022
hackernews_tui is a Terminal UI to browse Hacker News with vim-like key bindings.

hackernews_tui is written in Rust with the help of Cursive TUI library. It uses HN Algolia search APIs to get Hacker News data.

Thang Pham 364 Dec 28, 2022
A fast, resilient, isomorphic hacker news clone in ~1k lines of rust.

Hackernews sauron A hacker news clone in ~1k lines of rust. This is using sauron web-framework. Feature Isomorphic Completely identical server-side re

Jovansonlee Cesar 102 Nov 19, 2022