The RCOS website and Discord bot.

Overview

Telescope - https://rcos.io

Telescope is the RCOS website.

Cargo Docker GitHub release version

User Notes

If you find issues with Telescope or have a feature you want added, please make an issue under the issues tab. You should also feel free to contribute your own. Pull requests are welcome. See below for detailed information on building & contributing to telescope.

Development Notes

These are note for Telescope Developers on how to find and update Telescope itself.

Project Structure

Telescope is a large enough project that it may not be immediately obvious where certain files are. This section provides a map to this repository.

  • .github: This folder holds configuration files related to this repository's interactions with GitHub.com. This includes the GitHub issue templates, the continuous integration workflows, and the Dependabot configuration.
  • proposals: This folder contains the project proposal files that Telescope has been submitted under for the Rensselaer Center for Open Source (RCOS).
  • rcos-data: This git submodule points to the repository that contains the migrations for the central RCOS database.
  • graphql: This folder contains the introspected schema.json file for the central RCOS GraphQL API exposed via Hasura over the central RCOS database. This folder also contains GraphQL files for all of the different queries that Telescope will send to the central API.
  • static: This folder contains statically served files and assets, including
    • Telescope icons
    • RCOS icons and branding
    • The global CSS style file
    • All of Telescopes javascript
    • Sponsor logos and branding
  • templates: This folder contains all of the Handlebars templates used to render Telescope's frontend.
  • src: This is the main Telescope codebase, written in Rust.

Schema Introspection

When the central RCOS GraphQL API (a Hasura wrapper over the central RCOS Postgres database) gets updated, Telescopes schema needs to get updated to match. After merging whatever changes or migrations have been made to the telescope-dev-version branch of the rcos-data repository, update Telescope's git rcos-data submodule to point to the newest commit on the telescope-dev-version branch. After you have done this and pulled the submodule, update the local database using the hasura client. The commands should look like this:

$ hasura --project rcos-data/ migrate --admin-secret xxxxxxxxxxxxxxxxxxxxxxxx --endpoint http://localhost:8000 apply
$ hasura --project rcos-data/ metadata --admin-secret xxxxxxxxxxxxxxxxxxxxxxxx --endpoint http://localhost:8000 reload

where xxxxxxxxxxxxxxxxxxxxxxxx is replaced by the hasura admin secret in your .env file. After applying the migrations, go to the hasura console to make sure that all the proper tables are tracked, and all the types and queries are available. To go to the hasura console on your local machine, navigate to http://localhost:8000/console/settings/metadata-actions in your browser.

If you haven't already, you should install a GraphQL client to introspect the schema. There are several of these that are probably acceptable, but for consistency we use the graphql-rust client. Install this using the command from its README.

$ cargo install graphql_client_cli --force

Finally, regenerate Telescope's schema.json file as follows:

$ graphql-client introspect-schema --header 'x-hasura-admin-secret: xxxxxxxxxxxxxxxxxxxxxxxx' --output graphql/rcos/schema.json http://localhost:8000/v1/graphql

again, xxxxxxxxxxxxxxxxxxxxxxxx is replaced by the hasura admin secret in your .env file.

You may also have to introspect the GitHub V4 API schema, since we also keep a copy of that in telescope. This requires a GitHub Personal Access Token (PAT) which you can generate here. Once you have generated your PAT, you can introspect/update the local GitHub Schema using

$ graphql-client introspect-schema --output graphql/github/schema.json --authorization "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://api.github.com/graphql

where xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx is replaced by your PAT.

Installation:

  1. Install dependencies:

    1. Rust (see https://www.rust-lang.org/ for more info)
      $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
      $ source ~/.cargo/env
    2. Hasura CLI to run database migrations. See the hasura CLI docs for more info.
      $ curl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash
    3. Docker and docker-compose to run telescope and the database locally. this can be a complicated process, but there are good instructions online here. Message me for help if you need it.
  2. Clone this repository:

    $ git clone --recurse-submodules https://github.com/rcos/Telescope.git

    You need to make sure you get all of the submodules here using --recurse-submodules otherwise you won't have any of the RCOS branding logos or icons, or any of the database migrations and setup.

  3. Copy the configuration templates as follows:

    • config_example.toml -> config.toml
    • .env.example -> .env (note: the config.toml and .env files must be created yourself.)

    Then modify them to match your environment. You may need to generate the GitHub related credentials. Go here to register a new GitHub OAuth application or get a new client secret. You will also have to create a discord OAuth app and bot token. Instructions can be found in config_example.toml.

  4. Build and start the docker images.

    $ docker-compose up -d 
  5. Run the database migrations. Replace the "xx.." in the command with the admin secret from your .env file. Make sure the admin-secret is at least 32 characters long.

    $ hasura --project rcos-data/ migrate --admin-secret xxxxxxxxxxxxxxxxxxxxxxxx --endpoint http://localhost:8000 apply
  6. Track the Hasura tables: In Hasura (http://localhost:8000), enter your admin-secret when prompted. Navigate to the "Data" tab, and click "Create Table". Track all tables, and hit "Add Table". You also want to press "Track All" for the foreign key relationships as well.

  7. Reload metadata:

    $ hasura --project rcos-data/ metadata --admin-secret xxxxxxxxxxxxxxxxxxxxxxxx --endpoint http://localhost:8000 reload
  8. At this point Postgres, the Hasura GraphQL API, Caddy, and Telescope should all be running on your system in individual docker containers. Docker exposes the Hasura console at http://localhost:8000 and https://localhost:8001, and Telescope is exposed at https://localhost:8443. To shut them all down, run

    $ docker-compose down

    If you only want to make changes to telescope, you don't need to take down all the containers. Simply make your changes, run cargo check to verify that it compiles, and then rebuild just telescope in docker using

    $ docker-compose up --build -d
Comments
  • Change models and/or use API

    Change models and/or use API

    In order to make use of the new central RCOS database and API the models have to be updated to match that database schema.

    Additionally we may want to consider entirely removing Diesel and replacing it with calls to the REST API itself. It would be a good example of dogfooding and would likely require a similar amount of work since all the models and queries are going to be rewritten anyway.

    CC: @Apexal

    enhancement 
    opened by rushsteve1 16
  • 128 add generate command

    128 add generate command

    Issue Number: close #128

    Problem Summary: Add /generate slash command to Discord bot.

    What is changed and how it works?

    graphql/rcos/discord_assoications, src/discord_bot/commands, src/api/rcos/discord_assoications: "generate.rs",...

    generate.rs:

    • Implemented /generate command.
    • /generate command has 4 subcommands: /generate roles, /generate categories, /generate channels and /generate all:
      • /generate roles:
        • Creates roles for projects and/or small groups in the ongoing semester.
      • /generate categories:
        • Creates categories for projects and/or small groups in the ongoing semester.
        • Categories are private and are only accessible by project/small group member, Faculty Advisors, Coordinators and Sysadmin.
      • /generate channels:
        • creates voice and text channels for projects and/or small groups in the ongoing semester.
        • If category for project/small group is created, channels will be generated under the project/small group category.
        • Channels are private and are only accessible by project/small group member, Faculty Advisors, Coordinators and Sysadmin.
      • /generate all:
        • Calls all /generate subcommands in the following order: /generate roles, /generate categories, /generate channels.
    • All the creations are updated to database.
    • All the commands are limited to Faculty Advisors, Coordinators and Sysadmin.

    Files under graphql/rcos/discord_assoications and src/api/rcos/discord_assoications:

    • Multiple API and .graphql files are created for "generate.rs" to update project/small groups data into database.

    Tests

    • [ ] Unit test
    • [ ] Integration test
    • [x] Manual test
    • [ ] No code

    Manual test:

    1. Create Discord Application.
    2. Create a new discord server.
    3. Create roles "Faculty Advisors" and "Coordinator", add yourself to these two roles.
    4. Start the docker image.
    5. Invite bots to discord server using the link generated by Telescope.
    6. Open Hasura console.
    7. Insert Row into Semesters table:
      • semester_id = 202201
      • title = Spring 2022
    8. Insert 3 Rows(arbitrary field data) into Projects table.
    9. Insert 1 Row into small group table.
      • semester_id = 202201
    10. Insert 2 Rows(arbitrary field data) into users table.
    11. Insert 2 Rows into enrollments table.
      • Project and user_id fields of two rows should be distinct.
      • So we got 2 projects being active in ongoing semester and 1 project being inactive in ongoing semester.
    12. Call /generate roles in discord server.
      • 2 project roles and 1 small group roles should be created at discord server.
      • The project_roles table and small_group_roles table should be updated.
    13. Call /generate categories in discord server.
      • 3 categories should be created at discord server.
      • The project_categories table and small_group_categories table should be updated.
      • Newly created categories should be visible to only project/small group members, Faculty Advisors and Coordinators.
    14. Call /generate channels in discord server.
      • 2 channels(1 voice channel and 1 text channel) should be created at each newly created category.
      • The project_channels table and small_group_channels table should be updated.
      • Newly created channels should be visible to only project/small group members, Faculty Advisors and Coordinators.
    15. Delete all the discord data in database.
    16. Remove all newly project/small group categories, channels and roles from discord server.
    17. Call /generate all to see if it produces the same result.
    enhancement rust Discord Interface 
    opened by ArberSephirotheca 4
  • Bump futures from 0.3.19 to 0.3.21

    Bump futures from 0.3.19 to 0.3.21

    Bumps futures from 0.3.19 to 0.3.21.

    Release notes

    Sourced from futures's releases.

    0.3.21

    • Fix potential data race in FlattenUnordered that introduced in 0.3.20 (#2566)

    0.3.20

    • Fix stacked borrows violations when -Zmiri-tag-raw-pointers is enabled. This raises MSRV of futures-task to 1.45. (#2548, #2550)
    • Change FuturesUnordered to respect yielding from future (#2551)
    • Add StreamExt::{flatten_unordered, flat_map_unordered} (#2083)
    Changelog

    Sourced from futures's changelog.

    0.3.21 - 2022-02-06

    • Fix potential data race in FlattenUnordered that introduced in 0.3.20 (#2566)

    0.3.20 - 2022-02-06

    NOTE: This release has been yanked due to a bug fixed in 0.3.21.

    • Fix stacked borrows violations when -Zmiri-tag-raw-pointers is enabled. This raises MSRV of futures-task to 1.45. (#2548, #2550)
    • Change FuturesUnordered to respect yielding from future (#2551)
    • Add StreamExt::{flatten_unordered, flat_map_unordered} (#2083)
    Commits
    • fc1e325 Release 0.3.21
    • 20279eb FlattenUnordered: improve wakers behavior (#2566)
    • 75dca5a Fix MSRV in futures-task readme
    • 55281c8 Release 0.3.20
    • 591b982 Redefine executor and compat modules in futures crate (#2564)
    • 94b508b Basic StreamExt::{flatten_unordered, flat_map_unordered} impls (#2083)
    • dca16fa Do not auto-create PR on fork
    • a9795a9 Automatically creates PR when no_atomic_cas.rs needs to be updated
    • 4841888 Update comments in build scripts
    • 85706b6 Clean up ci/no_atomic_cas.sh
    • 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 will merge this PR once CI passes on it, as requested by @bepvte.


    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 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 rust 
    opened by dependabot[bot] 4
  • Bump serenity from 0.10.8 to 0.10.9

    Bump serenity from 0.10.8 to 0.10.9

    Bumps serenity from 0.10.8 to 0.10.9.

    Release notes

    Sourced from serenity's releases.

    v0.10.9

    Thanks to the following for their contributions:

    Added

    • [model] Add model methods for creating public and private threads ([@​acdenisSK]) [c:dbf4d68]
    • [client/cache] Add support for defining cache settings in the Client builder. ([@​Splingush]) [c:ea8ec29]
    • [builder] Add 'number' type to ApplicationCommandOption ([@​Splingush]) [c:312ae16]
    • [collector] Add a generic collector for events ([@​sbrocket]) [c:3117f1d]
    • [model] Mention the type of event that failed to deserialise ([@​acdenisSK]) [c:1d446fe]
    • [model] Add methods to Event to get related user, guild, channel, and message IDs ([@​sbrocket]) [c:0aa1a6c]
    • [model] Derive PartialEq, Eq, PartialOrd, Ord, and Hash for UserPublicFlags ([@​KangarooCoder]) [c:e7ba5bf]
    • [cache] Add method Cache::channel_messages_field ([@​kangalioo]) [c:ca02662]
    • [http/builder/model] Add support for generation of invite links with custom OAuth2 scopes ([@​vicky5124]) [c:50cd285]
    • [model] Switch to API v9 and add support for threads ([@​HarmoGlace]) [c:4c53b48]
    • [model] Add field Guild::stage_instances ([@​HarmoGlace]) [c:13cf056]
    • [model] Support stage instances ([@​HarmoGlace]) [c:3e6d131]
    • [model] Add support for guild search members endpoint ([@​drklee3]) [c:09b523d]
    • [model] Add avatar field to member update event ([@​drklee3]) [c:4f488f8]
    • [http] Add support for fetching the current user's connections ([@​Dinnerbone]) [c:6a400f9]
    • [http] Allow passing bearer tokens to Http::new_with_token ([@​squili]) [c:537753b]
    • [model] Add support for per guild avatars ([@​drklee3]) [c:eb09d13]
    • [builder] Support sending multiple embeds in a message ([@​drklee3]) [c:e215c9d]
    • [model] Add support to (Partial)Guild::nsfw_level ([@​HarmoGlace]) [c:59ab451]

    Changed

    • [utils] Redesign the Parse trait and add support for most applicable model types ([@​kangalioo]) [c:eb14984]
    • [http] Include Discord's error explanations in http::Error's Display implementation ([@​kangalioo]) [c:ce97f9e]
    • [model] Separate interaction stuctures per kind ([@​HarmoGlace]) [c:2b2006c]
    • [misc] Move workspace up to repo root, instead of under examples ([@​sbrocket]) [c:46ace1f]
    • [model] Clarify slash commands implementation ([@​HarmoGlace]) [c:ae09e57]
    • [builder] Improve implementations of embed methods on Message builders ([@​kangalioo]) [c:0be7d1a]
    • [model] Guarantee the Interaction::user field ([@​HarmoGlace]) [c:9d18334]

    ... (truncated)

    Changelog

    Sourced from serenity's changelog.

    [0.10.9] - 2021-08-15

    Thanks to the following for their contributions:

    Added

    • [model] Add model methods for creating public and private threads ([@​acdenisSK]) [c:dbf4d68]
    • [client/cache] Add support for defining cache settings in the Client builder. ([@​Splingush]) [c:ea8ec29]
    • [builder] Add 'number' type to ApplicationCommandOption ([@​Splingush]) [c:312ae16]
    • [collector] Add a generic collector for events ([@​sbrocket]) [c:3117f1d]
    • [model] Mention the type of event that failed to deserialise ([@​acdenisSK]) [c:1d446fe]
    • [model] Add methods to Event to get related user, guild, channel, and message IDs ([@​sbrocket]) [c:0aa1a6c]
    • [model] Derive PartialEq, Eq, PartialOrd, Ord, and Hash for UserPublicFlags ([@​KangarooCoder]) [c:e7ba5bf]
    • [cache] Add method Cache::channel_messages_field ([@​kangalioo]) [c:ca02662]
    • [http/builder/model] Add support for generation of invite links with custom OAuth2 scopes ([@​vicky5124]) [c:50cd285]
    • [model] Switch to API v9 and add support for threads ([@​HarmoGlace]) [c:4c53b48]
    • [model] Add field Guild::stage_instances ([@​HarmoGlace]) [c:13cf056]
    • [model] Support stage instances ([@​HarmoGlace]) [c:3e6d131]
    • [model] Add support for guild search members endpoint ([@​drklee3]) [c:09b523d]
    • [model] Add avatar field to member update event ([@​drklee3]) [c:4f488f8]
    • [http] Add support for fetching the current user's connections ([@​Dinnerbone]) [c:6a400f9]
    • [http] Allow passing bearer tokens to Http::new_with_token ([@​squili]) [c:537753b]
    • [model] Add support for per guild avatars ([@​drklee3]) [c:eb09d13]
    • [builder] Support sending multiple embeds in a message ([@​drklee3]) [c:e215c9d]
    • [model] Add support to (Partial)Guild::nsfw_level ([@​HarmoGlace]) [c:59ab451]

    Changed

    • [utils] Redesign the Parse trait and add support for most applicable model types ([@​kangalioo]) [c:eb14984]
    • [http] Include Discord's error explanations in http::Error's Display implementation ([@​kangalioo]) [c:ce97f9e]
    • [model] Separate interaction stuctures per kind ([@​HarmoGlace]) [c:2b2006c]
    • [misc] Move workspace up to repo root, instead of under examples ([@​sbrocket]) [c:46ace1f]
    • [model] Clarify slash commands implementation ([@​HarmoGlace]) [c:ae09e57]
    • [builder] Improve implementations of embed methods on Message builders ([@​kangalioo]) [c:0be7d1a]
    • [model] Guarantee the Interaction::user field ([@​HarmoGlace]) [c:9d18334]

    ... (truncated)

    Commits
    • a576cc0 Bump to 0.10.9 (#1470)
    • dbf4d68 Add model methods for creating public and private threads (#1468)
    • 81267e2 Add missing slashes to form proper documentation comments
    • d31f3e5 Remove empty file
    • eb14984 Redesign the Parse trait and add support for most applicable model types (#...
    • ea8ec29 Add support for defining cache settings in the Client builder. (#1461)
    • ce97f9e Include Discord's error explanations in http::Error's Display implementat...
    • 312ae16 Add 'number' type to ApplicationCommandOption (#1450)
    • fb203ae Make GuildChannel::send_message work in threads (#1449)
    • 413e3ef Fix broken GuildChannel collector functionality (#1446)
    • 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 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 rust 
    opened by dependabot[bot] 4
  • Dynamic GraphQL Schema

    Dynamic GraphQL Schema

    There may be some benefits to being able to dynamically generate the GraphQL schema for Juniper. This is not yet currently possible. I will keep an eye on https://github.com/graphql-rust/juniper/issues/7 and other Juniper issues like it.

    opened by Alfriadox 4
  • Website CSS fails to load on Firefox

    Website CSS fails to load on Firefox

    Describe the bug When viewing https://rcos.io from Firefox, only a basic HTML page is displayed.

    To Reproduce Steps to reproduce the behavior:

    1. Open Firefox
    2. Go to https://rcos.io

    Expected behavior The website should look identical regardless of browser engine.

    Screenshots Ungoogled Chromium: image

    Firefox: image

    Desktop (please complete the following information):

    • OS: Ubuntu 22.04 LTS, Gnome, Xorg
    • Browser: Firefox 101.0.1, installed from snap store
    bug 
    opened by ArcWandx86 3
  • Bump jsonwebtoken from 7.2.0 to 8.0.1

    Bump jsonwebtoken from 7.2.0 to 8.0.1

    Bumps jsonwebtoken from 7.2.0 to 8.0.1.

    Changelog

    Sourced from jsonwebtoken's changelog.

    8.0.1 (2022-02-03)

    • Fix documentation of leeway

    8.0.0 (2022-02-02)

    • Add EdDSA algorithm
    • sign/verify now takes a &[u8] instead of &str to be more flexible
    • DecodingKey now own its data
    • Remove deprecated dangerous_unsafe_decode
    • Validation::iss is now a HashSet instead of a single value
    • decode will now error if Validation::algorithms is empty
    • Add JWKs types for easy interop with various Oauth provider, see examples/auth0.rs for an example
    • Removed decode_* functions in favour of using the Validation struct
    • Allow float values for exp and nbf, yes it's in the spec... floats will be rounded and converted to u64
    • Error now implements Clone/Eq
    • Change default leeway from 0s to 60s
    • Add Validation::require_spec_claims to validate presence of the spec claims
    • Add default feature for pem decoding named use_pem that can be disabled to avoid 2 dependencies
    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 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 rust 
    opened by dependabot[bot] 3
  • Only allow Discord sign-ups

    Only allow Discord sign-ups

    67% of users have a Discord account linked but not CAS. If they accidentally sign up with CAS then a duplicate is created with no way of us realizing it unless the user tries to connect Discord.

    If we only allow Discord sign-up, users cannot accidentally create duplicate accounts and we can direct everyone to signup/login with Discord and then immediately connect with CAS, filling in the blanks. Once we have done that, we can reenable the other signup methods.

    rust high priority Web Interface 
    opened by Apexal 3
  • Tweak page system

    Tweak page system

    Tweak the page system to support child templates passing parameters to their parent template. This will make it easier to pass parameters to the document's <head> tags for OGP support (#132).

    enhancement Web Interface 
    opened by Alfriadox 3
  • Meeting Functionality

    Meeting Functionality

    High priority because several of the timezones in the database are wrong, and need to be corrected.

    This issue covers several features/changes:

    • [x] Individual meeting pages that can be perma-linked.
      • [ ] These pages will show more info than is available in the preview. This could include the rendered slides if they are stored in the database, or something like that.
      • [x] Each page should also have a sub page with a form to edit the meeting shown to the user if they are the host or a coordinator or admin.
      • [x] A delete button should also be shown to those users.
    • [x] For coordinators and admins only, there should be a button on the meetings page to create a new meeting.
    enhancement high priority Web Interface 
    opened by Alfriadox 3
  • Use tilde for dependency versions

    Use tilde for dependency versions

    Remove all patch numbers in dependency package versions and add the ~ tilde operator prefix to the front. This limits all packages to the compatibility range (just the patch).

    This should reduce dependabot alerts, and make the ones that opened more meaningful instead of just patch bumps.

    Cargo.lock updated to match

    opened by rushsteve1 3
  • Bump async-trait from 0.1.52 to 0.1.60

    Bump async-trait from 0.1.52 to 0.1.60

    Bumps async-trait from 0.1.52 to 0.1.60.

    Release notes

    Sourced from async-trait's releases.

    0.1.60

    • Documentation improvements

    0.1.59

    • Support self: Arc<Self> async methods that have a default implementation provided by the trait (#210)

    0.1.58

    • Improve rust-analyzer "go to definition" on the method names of an async trait (#218)

    0.1.57

    • Add categories to crates.io metadata

    0.1.56

    • Fix build errors that involve use parentheses to disambiguate: `(impl 'async_trait + Trait)` (#204)

    0.1.55

    • Fix drop order of uncaptured arguments (_) when compiling in 2021 edition's closure capture rules (#199)

    0.1.54

    • Fix lifetime issue when using impl Trait in an async function argument type (#177)

    0.1.53

    • Improve diagnostic / suggested fixes which involve "consider further restricting this bound" (#194)
    Commits
    • 226521b Release 0.1.60
    • 288930d Update build status badge
    • 2d472d3 Prevent build.rs rerunning unnecessarily on all source changes
    • c1fba00 Release 0.1.59
    • b0466bb Merge pull request #223 from dtolnay/arc
    • 066f06e Match specifically Arc<Self>, not any other Arc
    • d1a4a23 Infer Sync+Send bound for Arc<Self> methods with default body
    • e5828bf Add regression test for issue 210
    • 9ed6489 Format with rustfmt 1.5.1-nightly
    • b100ace Merge pull request #222 from dtolnay/bound
    • 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 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 rust 
    opened by dependabot[bot] 0
  • Bump toml from 0.5.8 to 0.5.10

    Bump toml from 0.5.8 to 0.5.10

    Bumps toml from 0.5.8 to 0.5.10.

    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 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 rust 
    opened by dependabot[bot] 0
  • Bump jsonwebtoken from 8.0.1 to 8.2.0

    Bump jsonwebtoken from 8.0.1 to 8.2.0

    Bumps jsonwebtoken from 8.0.1 to 8.2.0.

    Changelog

    Sourced from jsonwebtoken's changelog.

    8.2.0 (2022-12-03)

    • Add DecodingKey::from_jwk
    • Can now use PEM certificates if you have the use_pem feature enabled

    8.1.1 (2022-06-17)

    • Fix invalid field name on OctetKeyParameters

    8.1.0 (2022-04-12)

    • Make optional fields in the spec really optional
    • Implements Hash for Header
    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 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 rust 
    opened by dependabot[bot] 0
  • Bump uuid from 0.8.2 to 1.2.2

    Bump uuid from 0.8.2 to 1.2.2

    Bumps uuid from 0.8.2 to 1.2.2.

    Release notes

    Sourced from uuid's releases.

    1.2.2

    What's Changed

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.2.1...1.2.2

    1.2.1

    What's Changed

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.2.0...1.2.1

    1.2.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.1.2...1.2.0

    1.1.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/uuid-rs/uuid/compare/1.1.1...1.1.2

    1.1.1

    What's Changed

    ... (truncated)

    Commits
    • 60ca9af Merge pull request #646 from uuid-rs/cargo/1.2.2
    • d413ed6 prepare for 1.2.2 release
    • ce445a2 Merge pull request #645 from uuid-rs/fix/extern-alloc
    • b7c845f remove extern crate alloc
    • f5a29cf Merge pull request #640 from uuid-rs/ci/cleanups
    • 876e466 remove missing moniker from job names
    • 6944c0d simplify CI and unpin arbitrary
    • b87760d Merge pull request #637 from KodrAus/cargo/1.2.1
    • b21f0cb prepare for 1.2.1 release
    • cac99f5 Merge pull request #636 from KodrAus/fix/v1-breakage
    • 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 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 rust 
    opened by dependabot[bot] 0
  • Enrollments Panel: project lead without a project

    Enrollments Panel: project lead without a project

    Presently, a coordinator or admin can edit a user's enrollment such that they are both a project lead and have no project assigned.

    image

    The solution is straightforward, uncheck and deactivate the checkbox when project is set to None.

    bug good first issue Web Interface 
    opened by WyattRoss 0
Releases(0.9.0)
Owner
Rensselaer Center for Open Source
Teaching, learning, practicing, and contributing to open source at Rensselaer Polytechnic Institute
Rensselaer Center for Open Source
A blazingly fast static web server with routing, templating, and security in a single binary you can set up with zero code. :zap::crab:

binserve ⚡ ?? A blazingly fast static web server with routing, templating, and security in a single binary you can set up with zero code. ?? UPDATE: N

Mufeed VH 722 Dec 27, 2022
Host These Things Please - a basic http server for hosting a folder fast and simply

http Host These Things Please - a basic HTTP server for hosting a folder fast and simply Selected features See the manpage for full list. Symlinks fol

thecoshman 367 Dec 23, 2022
Simple and fast web server

see Overview Simple and fast web server as a single executable with no extra dependencies required. Features Built with Tokio and Hyper TLS encryption

null 174 Dec 9, 2022
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.

Actix Web Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust Features Supports HTTP/1.x and HTTP/2 Streaming and pipelining

Actix 16.3k Jan 8, 2023
A flexible web framework that promotes stability, safety, security and speed.

A flexible web framework that promotes stability, safety, security and speed. Features Stability focused. All releases target stable Rust. This will n

Gotham 2.1k Jan 3, 2023
Sincere is a micro web framework for Rust(stable) based on hyper and multithreading

The project is no longer maintained! Sincere Sincere is a micro web framework for Rust(stable) based on hyper and multithreading. Style like koa. The

null 94 Oct 26, 2022
A library for simulating mouse and keyboard events

The Fat Controller TFC is a library for simulating mouse and keyboard events. This library was built for use by TFC-server, a server that allows for r

Indiana Kernick 37 Nov 28, 2022
A starter template for actix-web projects that feels very Django-esque. Avoid the boring stuff and move faster.

Jelly A.K.A, the actix-web starter you probably wish you had. This is provided as-is, and anyone is free to extend it or rework it as they desire - ju

SecretKeys 198 Dec 15, 2022
Add Facebook and Google authentication to your HTTP REST API in Actix-web

I created this project while learning Rust. Project shows how to handle Facebook and Google token verification in Rust using Actix-Web. Hope this help

null 37 Dec 31, 2022
OxHTTP is a very simple synchronous HTTP client and server

OxHTTP is a very simple synchronous implementation of HTTP 1.1 in Rust. It provides both a client and a server.

Oxigraph 13 Nov 29, 2022
A demo blog post engine in Rust, using Rocket and MongoDB

A demo blog post engine written in Rust, using Rocket and MongoDB Quick Start Setup a new MongoDB cluster https://cloud.mongodb.com/ create a new data

Nabil Hachicha 5 Oct 19, 2022
Tiny-lsm - super simple in-memory blocking LSM for constant-size keys and values

tiny-lsm Super simple in-memory blocking LSM for constant-size keys and values. Despite being single-threaded and blocking, this is still capable of o

Tyler Neely 50 Oct 15, 2022
Actix-extras - A collection of additional crates supporting the actix and actix-web frameworks.

actix-extras A collection of additional crates supporting the actix-web and actix frameworks. Crates by @actix Crate actix-cors Cross-origin resource

Actix 506 Dec 27, 2022
Operator is a web server. You provide a directory and Operator serves it over HTTP.

Operator Operator is a web server. You provide a directory and Operator serves it over HTTP. It serves static files the way you'd expect, but it can a

Matt Kantor 6 Jun 6, 2022
In-progress extractors and middleware for Actix Web

actix-web-lab Experimental extractors, middleware, and other extras for possible inclusion in Actix Web. Things To Know About This Crate It will never

Rob Ede 51 Dec 20, 2022
Completely OBSOLETE Rust HTTP library (server and client)

OBSOLETION NOTICE This library is DEAD. It was a useful experiment and is now being replaced under the scope of the Teepee (experimentation grounds at

Chris Morgan 390 Dec 1, 2022
Archibald is my attempt at learning Rust and writing a HTTP 1.1 web server.

Archibald To be a butler, is to be able to maintain an even-temper, at all times. One must have exceptional personal hygiene and look sharp and profes

Daniel Cuthbert 4 Jun 20, 2022
Salvo is a powerful and simplest web server framework in Rust world

Salvo is an extremely simple and powerful Rust web backend framework. Only basic Rust knowledge is required to develop backend services.

Salvo 1.2k Jan 5, 2023
Static Web Server - a very small and fast production-ready web server suitable to serve static web files or assets

Static Web Server (or SWS abbreviated) is a very small and fast production-ready web server suitable to serve static web files or assets.

Jose Quintana 496 Jan 2, 2023