This repository serves as the backend for the Torrust Index project.

Overview

Torrust Index Backend

README HEADER

Open Source Cool

Nautilus Sponsored


๐Ÿ“ข Important Updates ๐Ÿ“ข


Index

Project Description

This repository serves as the backend for the Torrust Index project.

Roadmap

Coming soon.

Documentation

You can read the documentation here.

Installation

  1. Install prerequisites:

    • Rust/Cargo - Compiler toolchain & Package Manager (cargo).
  2. Clone the repository:

    git clone https://github.com/torrust/torrust-index-backend.git
  3. Open the project directory and create a file called: .env:

    cd torrust-index-backend
    echo "DATABASE_URL=sqlite://data.db?mode=rwc" > .env
  4. Install sqlx-cli and build the sqlite database:

    cargo install sqlx-cli
    sqlx db setup
  5. Build the binaries:

    cargo build --release
  6. Run the backend once to generate the config.toml file:

    ./target/torrust-index-backend
  7. Edit the newly generated config.toml file (config.toml documentation):

    nano config.toml
  8. Run the backend again:

    ./target/torrust-index-backend

Contact and Contributing

Feel free to contact us via:

Message Warm Beer#3352 on Discord or email [email protected].

or

Please make suggestions and report any Torrust Index Back End specific bugs you find to the issue tracker of this repository here

Torrust Index Front End specific issues can be submitted here.

Universal issues with the Torrust Index can be submitted here. Ideas and feature requests are welcome as well!


Credits & Sponsors

This project was developed by Dutch Bits for Nautilus Cyberneering GmbH.

The project has been possible through the support and contribution of both Nautilus Cyberneering, its team and collaborators, as well as that of our great open source contributors. Thank you to you all!

Comments
  • Command to migrate DB data from `v1.0.0` to `v2.0.0`

    Command to migrate DB data from `v1.0.0` to `v2.0.0`

    Depends on: https://github.com/torrust/torrust-index-backend/pull/87

    I've created the basic scaffolding of the command. My plan is:

    • Migrate all the table records.
    • Insert torrents in DB from uploads dir.

    Potential problems are:

    • AUTOINCREMENTS
    • Foreign keys

    UPDATE 2022-11-30

    Tasks

    • [x] Transfer torrent_categories
    • [x] Transfer torrent_user
    • [x] Allow login for the transferred users using the Pbkdf2 for hashing the password
    • [x] Use date and time in today_iso8601 function instead of only the date
    • [x] Transfer torrent_tracker_keys
    • [x] Remove unused content from dir upgrades. We do not need the MySQL stuff for this migration. There was no MySQL support for version v1.0.0
    • [x] Transfer torrent_torrents. See below the subtasks for this task
    • [x] Transfer torrent_torrent_files. It was not used in v1.0.0
    • [x] Make registration_date optional and leave it empty for imported users
    • [x] Add a new DB field imported_date to the torrust_users table with the importation date for user records imported with this command
    • [x] Refactor
    • [x] Add automated tests
    • [x] Intensive testing
    • [x] Write documentation explaining how to upgrade
    • [x] Rename destiny DB to target DB.

    Subtasks from issue #84

    This rework is needed because @ldpr found a bug in the current version that affects the upgrader. We have to fix that bug and update the "upgrader".

    • [x] Fix issue #84
    • [x] Rework: remove the torrust_torrent_tracker_stats::tracker_url column. DISCARDED.
    • [x] Populate table torrust_torrent_tracker_stats with one record per torrent.

    Transfer torrents subtasks

    • [x] Fill table torrust_torrents
    • [x] Fill table torrust_torrent_files
    • [x] Fill table torrust_torrent_announce_urls
    • [x] Fill table torrust_torrent_info

    Testing subtasks

    Assertions for integration test:

    • [x] torrust_users table
    • [x] torrust_user_authentication table
    • [x] torrust_user_profiles table
    • [x] torrust_tracker_keys table
    • [x] torrust_torrents table
    • [x] torrust_torrent_files table
    • [x] torrust_torrent_info table
    • [x] torrust_torrent_announce_urls table

    Some cases to test:

    • [x] Torrent with pieces.

    Using a single tracker URL or multiple URLs:

    • [x] Torrent with announce (single tracker url).
    • [x] Torrent with announce_list (multiple tracker URLs).

    Containing one file or multiple files:

    • [x] Torrent with one file.
    • [x] Torrent with multiple files.

    Add tests for the application behaviour changed:

    • [x] User can use have the password hashed with "argon2id" or a "pbkdf2-sha256". Add a test for the "verify_password" function.

    Things I'm not going to test:

    • [ ] Torrent with MD5 checksum?. I do not know how to include this MD5 checksum in the torrent file.
    • [ ] Torrent with root_hash (BEP-0030).
    • [ ] The user registration date can be null for users that have been imported. We do not test it for MySQL since the upgrader is only for SQLite.
    opened by josecelano 38
  • Backend cann't parse new response from tracker for newly generated key

    Backend cann't parse new response from tracker for newly generated key

    The tracker has an endpoint to generate new keys.

    The response for that endpoint was like:

    {
      "key": "IaWDneuFNZi8IB4MPA3qW1CD0M30EZSM",
      "valid_until": 1674804892
    }
    

    But now is like this:

    {
      "key": "IaWDneuFNZi8IB4MPA3qW1CD0M30EZSM",
      "valid_until": 
        { 
          "secs": 1674804892, 
          "nanos": 423855037
        }
    }
    

    The change was introduced in this commit cab093c026cf253ba6f7208211953a25b3d1c91b by @da2ce7.

    The struct:

    pub struct AuthKey {
        pub key: String,
        pub valid_until: Option<u64>,
     }
    

    changed to:

    pub struct AuthKey {
        pub key: String,
        pub valid_until: Option<DurationSinceUnixEpoch>,
    }
    

    Since we automatically build the json objects exposed in the API, that change was exposed to API consumers.

    The backend cannot parse the new response, and keys are not stored in the table torrust_tracker_keys. So the function TrackerService::retrieve_new_tracker_key is called every time we use the TrackerService.

    opened by josecelano 8
  • Provide a migration script for older Torrust versions

    Provide a migration script for older Torrust versions

    There have been quite some database changes between V1 and V2 of the backend and this renders the database of a backend running V1 incompatible with backend V2. The biggest change we made to the database is the way torrents are stored. In V1, torrents were stored as actual .torrent files in a dedicated uploads folder on the backend server. As of V2, all torrents are completely stored in the database.

    To make sure all V1 users can move to V2 of the backend, we want to provide some kind of migration script. This script would take a V1 database (dump) and torrent uploads folder as input and should be able to convert this data to a new database dump that is suitable for the backend V2.

    We will start working on this script when we believe V2 is in a usable state.

    opened by WarmBeer 6
  • Endpoint to get a list of torrents does not return all torrents

    Endpoint to get a list of torrents does not return all torrents

    Endpoint: http://0.0.0.0:3000/torrents?page_size=20&page=0&sort=UploadedDesc&categories=&search=

    Expected response:

    {
      "data": {
        "total": 2,
        "results": [
          {
            "torrent_id": 1,
            "uploader": "user01",
            "info_hash": "9e0217d0fa71c87332cd8bf9dbeabcb2c2cf3c4d",
            "title": "A Mandelbrot Set 2048x2048px picture",
            "description": "A beautiful Mandelbrot Set picture in black and white. \n - Hybrid torrent V1 and V2. \n - Single-file torrent. \n - Public. \n - More than one tracker URL. \n ",
            "category_id": 10,
            "date_uploaded": "2022-11-04 07:19:18",
            "file_size": 9219566,
            "seeders": 0,
            "leechers": 0
          },
          {
            "torrent_id": 2,
            "uploader": "user01",
            "info_hash": "0902d375f18ec020f0cc68ed4810023032ba81cb",
            "title": "Two Mandelbrot Set 2048x2048px pictures",
            "description": "Two beautiful Mandelbrot Set pictures in black and white. \n - Hybrid torrent V1 and V2. \n - Multiple-files torrent. \n - Private. \n - Only one tracker URL. \n ",
            "category_id": 10,
            "date_uploaded": "2022-11-04 07:19:18",
            "file_size": 9219566,
            "seeders": 0,
            "leechers": 0
          }
        ]
      }
    }
    

    Actual response:

    {
      "data": {
        "total": 1,
        "results": [
          {
            "torrent_id": 1,
            "uploader": "user01",
            "info_hash": "9e0217d0fa71c87332cd8bf9dbeabcb2c2cf3c4d",
            "title": "A Mandelbrot Set 2048x2048px picture",
            "description": "A beautiful Mandelbrot Set picture in black and white. \n - Hybrid torrent V1 and V2. \n - Single-file torrent. \n - Public. \n - More than one tracker URL. \n ",
            "category_id": 10,
            "date_uploaded": "2022-11-04 07:19:18",
            "file_size": 9219566,
            "seeders": 0,
            "leechers": 0
          }
        ]
      }
    }
    

    How to reproduce

    1. Run this backend test: cargo test upgrades_data_from_version_v1_0_0_to_v2_0_0 -- --nocapture. It's still only available on PR #77 77. That will produce a tests DB in thetests/upgrades/from_v1_0_0_to_v2_0_0/output dir.
    2. Run the tracker
    3. Run the backend using the previously generated database.
    4. Run the frontend
    5. Load this URL: http://localhost:8080/torrents/trending. You will see only one torrent A Mandelbrot Set 2048x2048px picture.
    6. Click on the torrent name to go to the torrent details page and back to the previous list page. You will now see two torrents.
    7. If you go to the DB and delete all records in the torrust_toprrent_tracker_stats, you will see only one result again.

    Conclusion

    There must be a problem with the SQL sentence. Maybe there is an inner join that uses that table. The torrent that does not appear is private if that helps find the issue.

    Attachments

    The bug. THe list with only one torrent.

    image

    The torrent detail page.

    image

    The correct list page with two torrents.

    image

    The stats table with one record. ONce you have that record, the list page is right.

    image

    bug 
    opened by josecelano 5
  • Initial user/admin creation

    Initial user/admin creation

    I've successfully installed the three components of Torrust (tracker, index-backend, index-frontend) and have it all appearing in a client side browser, but can't log in.

    My index-backend data.db has a table torrust_users which is empty, and I can populate it with data via the command line sqlite3 tool, but don't know how to hash a password correctly to be recognised as valid and let me log in.

    Is there a command line tool to do this for me? Alternatively is there a simple openssl style command to generate the hashed password?

    bug 
    opened by danmons 3
  • [bug] users not getting logged out when their sessions expire

    [bug] users not getting logged out when their sessions expire

    [moved from here torrust/torrust-index/issues/82]

    this is a pretty painful bug, i actually thought there was an issue open already.

    in short:

    user logs in
    user doesn't log out and keeps the same session active for X amount of weeks
    eventually the session will time out (but they will still show as logged in) and any torrents they download won't work - they show as "400 error unauthenticated" - AKA no passkey.
    

    Having users do this:

    Delete the torrent from the client
    Sign out from the site
    Sign back in again and download the torrent fresh
    re-add new torrent - this fixes it.
    

    This would be a huge QOL improvement for us - again, thanks so much guys, you're the best

    opened by ldpr 1
  • Add MySQL support

    Add MySQL support

    MySQL would be a better default database to use for the index. It has a lot more features than SQLite3 and can handle heavy traffic more efficiently. I think however that we should not yet drop support for SQLite3.

    enhancement 
    opened by WarmBeer 1
  • Error installing `sqlx-cli`: `cargo install sqlx-cli`

    Error installing `sqlx-cli`: `cargo install sqlx-cli`

    Running this command cargo install sqlx-cli I get this error:

    Compiling radix_trie v0.2.1
    error: failed to run custom build command for `openssl-sys v0.9.74`
    
    Caused by:
      process didn't exit successfully: `/tmp/cargo-install9r6wn4/release/build/openssl-sys-b7846f0d7e417835/build-script-main` (exit status: 101)
      --- stdout
      cargo:rustc-cfg=const_fn
      cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
      X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
      OPENSSL_LIB_DIR unset
      cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
      X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
      OPENSSL_INCLUDE_DIR unset
      cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
      X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_DIR
      OPENSSL_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG
      cargo:rerun-if-env-changed=OPENSSL_STATIC
      cargo:rerun-if-env-changed=OPENSSL_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
      run pkg_config fail: "`\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"` did not exit successfully: exit status: 1\nerror: could not find system library 'openssl' required by the 'openssl-sys' crate\n\n--- stderr\nPackage openssl was not found in the pkg-config search path.\nPerhaps you should add the directory containing `openssl.pc'\nto the PKG_CONFIG_PATH environment variable\nNo package 'openssl' found\n"
    
      --- stderr
      thread 'main' panicked at '
    
      Could not find directory of OpenSSL installation, and this `-sys` crate cannot
      proceed without this knowledge. If OpenSSL is installed and this crate had
      trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
      compilation process.
    
      Make sure you also have the development packages of openssl installed.
      For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.
    
      If you're in a situation where you think the directory *should* be found
      automatically, please open a bug at https://github.com/sfackler/rust-openssl
      and include information about your system as well as this message.
    
      $HOST = x86_64-unknown-linux-gnu
      $TARGET = x86_64-unknown-linux-gnu
      openssl-sys = 0.9.74
    
      ', /home/josecelano/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.74/build/find_normal.rs:191:5
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `sqlx-cli v0.6.0`, intermediate artifacts can be found at `/tmp/cargo-install9r6wn4`
    
    Caused by:
      build failed
    
    • Ubuntu: 21.10
    • Cargo: cargo 1.60.0
    • rustc 1.60.0
    opened by josecelano 1
  • Link to documentation on the README is broken

    Link to documentation on the README is broken

    Link: https://torrust.com/torrust-web-backend/about/ On this line: https://github.com/torrust/torrust-index-backend/blob/main/README.md?plain=1#L37

    ## Documentation
    
    You can read the documentation [here](https://torrust.github.io/torrust-documentation/torrust-web-backend/about/).
    
    ## Installation
    
    bug 
    opened by josecelano 1
  • Remove unused struct `NewTrackerKey`

    Remove unused struct `NewTrackerKey`

    It was added because the tracker API was changed, but that change was reverted here:

    https://github.com/torrust/torrust-tracker/pull/109

    and it is not used anymore.

    opened by josecelano 0
  • Restore broken behavior: after uploading a new torrent its tracker stats must be updated

    Restore broken behavior: after uploading a new torrent its tracker stats must be updated

    When a new torrent is uploaded, we must update the tracker torrent stats in the torrust_torrent_tracker_stats table.

    It worked from the UI but not for the DB migration script because the frontend makes a request to get the torrent info after the upload, and that endpoint updates the torrent tracker stats.

    It must update the stats even if that endpoint is not called after uploading a new torrent.

    Tasks

    • [x] After uploading a new torrent, update its tracker stats.
    • [x] Change SQL query for torrent list result if we allow torrents without stats.

    Potencial refactors

    • Extract TrackerApiClient from TrackerService
    • Rename TrackerService::get_torrent_info to TrackerService::update_torrent_tracker_stats
    opened by josecelano 0
  • Add

    Add "cspell" configuration

    I've only added the config file. You can run it locally if you want. I used the IDE to check typos, and this file is very useful for ignoring false positives.

    In the future, we can force the check with a workflow if we want.

    opened by josecelano 0
  • Use a `.cspell.json` repo config file

    Use a `.cspell.json` repo config file

    Add a .cspell.json file in the root dir:

    {
      "version": "0.2",
      "language": "en",
      "ignorePaths": [
        ".vscode",
        "**/.git/**",
        "**/vscode-extension/**",
        "megalinter"
      ],
      "words": [
      ]
    }
    

    Same as we did for the tracker here: https://github.com/torrust/torrust-tracker/issues/111

    opened by josecelano 0
  • [suggestion] webhook support/integration

    [suggestion] webhook support/integration

    this would go hand in hand with #74 & #73

    for example, if a torrent gets uploaded, reported or deleted, a webhook is triggered so we have a way to keep track of user actions.

    opened by ldpr 0
  • [suggestion] roles (moderator & uploader)

    [suggestion] roles (moderator & uploader)

    (sorry, i had an issue open for this before but couldn't find it, my apologies if it exists elsewhere, i might just be blind)

    1. It would be great if we could hard-limit who can upload torrents to only uploaders/moderators/admins.

    2. Currently, only the uploader can edit torrents they upload. if we could have a secondary group under admin that's able to edit/delete any/all torrents it'd be a great QOL improvement.

    Further, allowing admin to edit all torrents would be nice too.

    opened by ldpr 0
Releases(v2.0.0-dev.1)
  • v2.0.0-dev.1(Sep 12, 2022)

    What's Changed

    • fix: link to documentation and binaries path by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/40
    • 45 add mysql support by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/50
    • Add integration tests for Database trait by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/51
    • chore(deps): bump regex from 1.5.4 to 1.6.0 by @dependabot in https://github.com/torrust/torrust-index-backend/pull/54
    • chore(deps): bump crossbeam-utils from 0.8.5 to 0.8.11 by @dependabot in https://github.com/torrust/torrust-index-backend/pull/53
    • chore(deps): bump tokio from 1.10.1 to 1.13.1 by @dependabot in https://github.com/torrust/torrust-index-backend/pull/52
    • store torrents completely in database by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/55
    • change from pbkdf2 to argon2 or bcrypt for user authentication by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/57
    • added endpoints for verifying and renewing login token by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/58
    • fix: fail torrent uploading when tracker whitelisting fails by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/61
    • fix: reuse valid tracker keys by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/62
    • fix: verify email address validity on signup by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/64
    • 67 embed the license in the application and make it easily accessible for users by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/68
    • workflow: added a test, build and release workflow by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/65

    New Contributors

    • @dependabot made their first contribution in https://github.com/torrust/torrust-index-backend/pull/54

    Full Changelog: https://github.com/torrust/torrust-index-backend/commits/v2.0.0-dev.1

    Source code(tar.gz)
    Source code(zip)
    LICENSE(914 bytes)
    torrust-index-backend_v2.0.0-dev.1_x86_64-apple-darwin.zip(5.82 MB)
    torrust-index-backend_v2.0.0-dev.1_x86_64-apple-darwin.zip.sha256sum(123 bytes)
    torrust-index-backend_v2.0.0-dev.1_x86_64-pc-windows-gnu.zip(11.19 MB)
    torrust-index-backend_v2.0.0-dev.1_x86_64-pc-windows-gnu.zip.sha256sum(125 bytes)
    torrust-index-backend_v2.0.0-dev.1_x86_64-unknown-linux-musl.tar.xz(5.25 MB)
    torrust-index-backend_v2.0.0-dev.1_x86_64-unknown-linux-musl.tar.xz.sha256sum(132 bytes)
  • v1.0.0(Aug 29, 2022)

    What's Changed

    • fix: link to documentation and binaries path by @WarmBeer in https://github.com/torrust/torrust-index-backend/pull/40
    • chore(deps): bump regex from 1.5.4 to 1.6.0 by @dependabot in https://github.com/torrust/torrust-index-backend/pull/54
    • chore(deps): bump crossbeam-utils from 0.8.5 to 0.8.11 by @dependabot in https://github.com/torrust/torrust-index-backend/pull/53
    • chore(deps): bump tokio from 1.10.1 to 1.13.1 by @dependabot in https://github.com/torrust/torrust-index-backend/pull/52

    New Contributors

    • @dependabot made their first contribution in https://github.com/torrust/torrust-index-backend/pull/54

    Full Changelog: https://github.com/torrust/torrust-index-backend/commits/v1.0.0

    Source code(tar.gz)
    Source code(zip)
Owner
Torrust
Modern BitTorrent applications made with Rust.
Torrust
Zomby7e's Blog - Backend

7eblog_backend Zomby7e's Blog - Backend, is just a micro blog backend. This project is written in Rust, it depends on Actix, uses SQLite to store data

Zomby7e 2 Aug 26, 2022
A backend framework for building fast and flexible APIs rapidly.

Andromeda Andromeda is a backend framework for Rust, to simplify the development of the kinds of basic API services that we developers have to build s

Framesurge 7 Dec 28, 2022
A candidate backend for the Telegram channel @KonachanPopular

Konachan Popular (Rust) This repository contains the source code of the backend program running the Telegram channel @KonachanPopular. Run in a Contai

K4YT3X 10 Jan 3, 2023
A real-time data backend for browser-based applications.

DriftDB DriftDB is a real-time data backend for browser-based applications. For more information, see driftdb.com. Structure of this repo docs/: main

drifting in space 453 Feb 6, 2023
A Noir's backend implementation using gnark

Using gnark as a backend for Noir If you want to develop a backend for Noir, basically what you need to do is to translate an ACIR (Abstract Circuit I

Lambdaclass 13 Mar 4, 2023
This repository contains the source of "The Rust Programming Language" book.

The Rust Programming Language This repository contains the source of "The Rust Programming Language" book. The book is available in dead-tree form fro

The Rust Programming Language 11.2k Jan 8, 2023
A repository for showcasing my knowledge of the Rust programming language, and continuing to learn the language.

Learning Rust I started learning the Rust programming language before using GitHub, but increased its usage afterwards. I have found it to be a fast a

Sean P. Myrick V19.1.7.2 2 Nov 8, 2022
The ray tracer challenge in rust - Repository to follow my development of "The Raytracer Challenge" book by Jamis Buck in the language Rust

The Ray Tracer Challenge This repository contains all the code written, while step by implementing Ray Tracer, based on the book "The Ray Tracer Chall

Jakob Westhoff 54 Dec 25, 2022
This repository contains the Rust source code for the algorithms in the textbook Algorithms, 4th Edition

Overview This repository contains the Rust source code for the algorithms in the textbook Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.

chuan 549 Dec 26, 2022
Download a single file from a Git repository.

git-download Microservices architecture requires sharing service definition files like in protocol buffer, for clients to access the server. To share

Akira Hayakawa 2 Jun 7, 2022
In this repository you can find modules with code and comments that explain rust syntax and all about Rust lang.

Learn Rust What is this? In this repository you can find modules with code and comments that explain rust syntax and all about Rust lang. This is usef

Domagoj Ratko 5 Nov 5, 2022
Rust template repository.

Rust template repository. An opinionated starting point for rust projects such as systemd services command line tools client programs server programs

Kris Nรณva 42 Dec 28, 2022
Repository to learn fractal generation algorithms.

Fractalrs Created this project so I can study Rust while programming fractals! I have always wanted to learn fractal generation. Fractals Fractals are

Luke Dias 4 Jun 10, 2023
A learning project/fun experiment in internet protocol

Piper a learning project/fun experiment in internet protocol Version 0.4.0 (SEMVER) Goals Piper is Simple. A page is a page. There are no secondary re

null 13 Oct 27, 2022
Gecko is a high-level, general-purpose programming language built on top of the LLVM project.

Gecko is a high-level, general-purpose programming language built on top of the LLVM project. Gecko Technology & principles Gecko is a general-purpose

Gecko 19 Oct 3, 2022
Quickly set up a `probe-run` + `defmt` + `flip-link` embedded project

app-template Quickly set up a probe-run + defmt + flip-link embedded project Dependencies 1. flip-link: $ cargo install flip-link 2. probe-run: $ # ma

Knurling 201 Dec 29, 2022
Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Jason Shin 9 Apr 10, 2022
This project contains small exercises to get you used to reading and writing Rust code

rustlings ?? โค๏ธ Greetings and welcome to rustlings. This project contains small exercises to get you used to reading and writing Rust code. This inclu

Cynthia Tran 1 May 24, 2022
A project for developing Rust applications

rust_dev This is a project for developing Rust applications. The goal of this project is to provide a solid foundation for building robust and scalabl

Harsh agarwal 4 Feb 7, 2023