A JavaScript implementation of the Spring 83 protocol

Overview

An implementation of the Spring 83 protocol.

Very much a work-in-progress. This was built in reference to draft-20220616.md@0f63d3d2.

Setup

Requires node.js 16 or greater.

$ npm install

Tools

putnew

To put a single board: putnew host privKeyHex htmlFile
To put path of boards: putnew boardPath hostsCommaSeperated

Operates in two modes: single board PUT or multi-board PUT.

Single-board

Puts a new board with HTML source htmlFile to host with private key (in hex) privKeyHex.

Will insert the required tag, with the appropriate datetime value, if it doesn't exist in the document already.

Multi-board

Expects boardPath to be a directory containing board HTML files named with their full hex public key, and keypair files named according to the canonical pattern. So for example, a path named ./my-boards with the following contents is valid (assuming the keypair files are valid of course):

1b30ed15e51e6faa3afb3605212d8cdb80177dfedc30a0d0939d26ec683e1023.html
977b0a43de51225240128101105f0397cb2cde59801a74c40ad99c69183e0423.html
spring-83-keypair-2022-06-19-1b30ed15e51e.txt
spring-83-keypair-2022-06-19-977b0a43de51.txt

If putnew is then invoked like so:

$ putnew ./my-boards https://bogbody.biz,https://0l0.lol

it will post both boards to both listed hosts.

serve

Runs a Spring-83 server on port specified by environment variable SPRING83_BIND_PORT (or 1783 by default) & binding to SPRING83_BIND_HOST (or 0.0.0.0 by default).

Writes boards into SPRING83_CONTENT_DIR (or ./.content by default).

If Docker is available, can be run simply with docker compose up --build -d: SPRING83_CONTENT_DIR_HOST must be specified to be the host-side path for which SPRING83_CONTENT_DIR will map to internally.

Other environment variables you should set:

  • SPRING83_FQDN: your fully-qualified domain name (no protocol scheme, e.g. 0l0.lol)
  • SPRING83_CONTACT_ADDR: a contact email address for your site

findkey

Update: This script is left in the repo for posterity, but PT's Go keyfinder is much faster and generates canonically-formatted keys as well. It's what I'm using now.

Randomly generates Ed25519 key pairs until one matching the specified format has been found.

If called with --strict, will only return when a key pair is found that is valid this calendar year.

The output format matches the format that Robin's client expects and will be named in the same format.

Interacting

Robin has an impressive demo client available here. His host is running at https://bogbody.biz.

This implementation is running at https://0l0.lol and https://spring83.rkas.net. If you'd like to be listed here, just send mail to [email protected] with your hex public key as the subject, or submit a PR with your key added to public-boards.json.

Other known implementations

Name Language Instance
davemenninger/exspring83 elixir
llimllib/springer golang
motevets/springboard golang https://spring83.kindrobot.ca/
pteichman/ahoy golang
royragsdale/s83 golang
cellu_cc/so83-gpu (gitlab) opencl
michael-lazar/lets-dance python https://spring83.mozz.us
Comments
  • Safari tries to download 404 responses

    Safari tries to download 404 responses

    I tried to access https://0l0.lol/db8a22f49c7f98690106cc2aaac15201608db185b4ada99b5bf4f222883e1223 (which should have royragsdale's spring) in Safari and it prompted me to download a zero byte file. I'm not good enough at this HTTP stuff to know what's causing that- maybe it's the missing content-type: header?

    It would be nice to return a "spring not found" page in this case

    HTTP/2 404 
    cache-control: no-store
    date: Sun, 19 Jun 2022 18:50:45 GMT
    feature-policy: geolocation 'none'; midi 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none';
    pragma: no-cache
    referrer-policy: no-referrer
    strict-transport-security: max-age=31536000; includeSubDomains
    x-content-type-options: nosniff
    x-frame-options: DENY
    x-xss-protection: 1; mode=block
    content-length: 0```
    opened by farktronix 4
  • 500 Error when posting update to a page

    500 Error when posting update to a page

    When I try to post an update to AMERICA'S HOTTEST TALKLINE I'm getting a 500 internal server error:

    ./putnew https://0l0.lol c7f42a28888a80322418faa5d65b4410847bdfca0e220a415689702d661424c0 myboards/6450bc6ba37ccf5390c3d46034bbcf518d31cee1cda5c281cf5c19df283e0323.html
    6450bc6ba37ccf5390c3d46034bbcf518d31cee1cda5c281cf5c19df283e0323.html: appended tags added 44 bytes
    ERROR: POST https://0l0.lol 500 "Internal Server Error"
    node:internal/errors:477
        ErrorCaptureStackTrace(err);
        ^
    
    TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined
        at new NodeError (node:internal/errors:388:5)
        at Function.from (node:buffer:326:9)
        at preprocess (/Users/pharkas/code/spring83/putnew:63:28)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at async putOne (/Users/pharkas/code/spring83/putnew:105:25)
        at async main (/Users/pharkas/code/spring83/putnew:139:3) {
      code: 'ERR_INVALID_ARG_TYPE'
    }
    
    Node.js v18.4.0
    

    Here's the HTML (Github won't let me upload it as .html so it's renamed to .txt): 6450bc6ba37ccf5390c3d46034bbcf518d31cee1cda5c281cf5c19df283e0323.txt

    $ putnew --version
    1.2.0
    

    Note: I don't have time to debug this right now so I'm leaving this for myself to follow up on later (or feel free to fix this if you know what it is and it's easy!)

    bug priority 
    opened by farktronix 3
  • Handle OPTIONS

    Handle OPTIONS

    CORS is broken for servers using this software, and accordingly hosted boards can't be displayed in external clients like @robinsloan's -- thank you for the heads up Robin! This was just an oversight on my part. "(Mostly) conforming..." 😉

    Relevant section in the spec for reference.

    bug priority 
    opened by rpj 3
  • Bump fastify from 4.1.0 to 4.8.1

    Bump fastify from 4.1.0 to 4.8.1

    Bumps fastify from 4.1.0 to 4.8.1.

    Release notes

    Sourced from fastify's releases.

    v4.8.1

    ⚠️ Security Release ⚠️

    This release fixes https://github.com/fastify/fastify/security/advisories/GHSA-455w-c45v-86rg for the v4.x line. This is a HIGH vulnerability that can lead to a crash, resulting in a total loss of availability. The CVE for this vulnerability is CVE-2022-39288.

    Full Changelog: https://github.com/fastify/fastify/compare/v4.8.0...v4.8.1

    v4.8.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/fastify/fastify/compare/v4.7.0...v4.8.0

    v4.7.0

    What's Changed

    New Contributors

    ... (truncated)

    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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Fixup/simplify key expiry validation

    Fixup/simplify key expiry validation

    Ahoy! I am working on a golang implementation of the spring83 protocol at motevets/springer, and I was testing my client against your server, but I was getting a 400 because the key was invalid.

    My understanding of the rules are for a valid key when PUTting are:

    • the expiry day must be greater than today
    • the expiry day cannot be more than two years into the future

    It looks like your implementation was asserting that the key expiry was the same as the current year, when it would be valid for it to also be the next year if it was within the two year window.

    Of course the protocol is new and shifting, and my understanding may be incomplete, but I hope this is helpful.

    opened by kindrowboat 1
  • Bump undici from 5.4.0 to 5.5.1

    Bump undici from 5.4.0 to 5.5.1

    Bumps undici from 5.4.0 to 5.5.1.

    Release notes

    Sourced from undici's releases.

    v5.5.1

    ⚠️ v5.5.1 - Security release

    This releases fixes CVE CVE-2022-32210. See https://github.com/nodejs/undici/security/advisories/GHSA-pgw7-wx7w-2w33 for more details:

    Undici.ProxyAgent never verifies the remote server's certificate, and always exposes all request & response data to the proxy. This unexpectedly means that proxies can MitM all HTTPS traffic, and if the proxy's URL is HTTP then it also means that nominally HTTPS requests are actually sent via plain-text HTTP between Undici and the proxy server.

    Full Changelog: https://github.com/nodejs/undici/compare/v5.5.0...v5.5.1

    v5.5.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/undici/compare/v5.4.0...v5.5.0

    Commits
    • 19563f7 Bumped v5.5.1
    • 6b42910 Fix support for Node v12
    • 6fc7ffb test: add rejectUnauthorized for agent1 cert
    • df4f7e0 Merge pull request from GHSA-pgw7-wx7w-2w33
    • 2717d70 Bumped v5.5.0
    • 3fa762e fix: update error messages
    • a6cc7e4 feat: add FormData.prototype.forEach
    • 282a52b feat: implement FormData Iterator
    • 30a464b fix: moved async code in examples to top-level-await
    • e00bd1d fix: readme example codestyle
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump undici from 5.8.0 to 5.8.2

    Bump undici from 5.8.0 to 5.8.2

    Bumps undici from 5.8.0 to 5.8.2.

    Release notes

    Sourced from undici's releases.

    v5.8.2

    ⚠️ Security Release ⚠️

    • CRLF Injection in Nodejs ‘undici’ via Content-Type GHSA-f772-66g8-q5h3 CVE-2022-35948
    • undici.request vulnerable to SSRF using absolute URL on pathname GHSA-8qr4-xgw6-wmr3 CVE-2022-35949

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/undici/compare/v5.8.1...v5.8.2

    v5.8.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/undici/compare/v5.8.0...v5.8.1

    Commits
    • 52d1ce5 Bumped v5.8.2
    • 66165d6 Merge pull request from GHSA-f772-66g8-q5h3
    • 124f7eb Merge pull request from GHSA-8qr4-xgw6-wmr3
    • aef314c feat(webidl): better error message for ByteString converter (#1591)
    • 2f4b3b6 docs: mock different endpoints in a single file (#1589)
    • e1e1638 5.8.1
    • c1dd24a fix: make mock headers case-insensitive (#1585)
    • 1822ee6 docs: Fix DiagnosticsChannel sidebar link (#1582)
    • dd613ef fix: follow signal.reason in Request (#1580)
    • 40af2c0 fix: fetch a long base64 url will crash and nothing happens (close: #1574) (#...
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump undici from 5.5.1 to 5.8.0

    Bump undici from 5.5.1 to 5.8.0

    Bumps undici from 5.5.1 to 5.8.0.

    Release notes

    Sourced from undici's releases.

    v5.8.0

    ⚠️ Security Fixes ⚠️

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/undici/compare/v5.7.0...v5.7.1

    v5.7.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/undici/compare/v5.6.1...v5.7.0

    v5.6.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/nodejs/undici/compare/v5.6.0...v5.6.1

    v5.6.0

    What's Changed

    ... (truncated)

    Commits
    • 26f60b7 Bumped v5.8.0
    • 0a5bee9 Merge pull request from GHSA-q768-x9m6-m9qp
    • a29a151 Merge pull request from GHSA-3cvr-822r-rqcc
    • 722976c docs: updated proxy docs - renamed already used const proxy to proxyServer (#...
    • b6af4e6 fix(body mixin): only allow Uint8Array chunks (#1550)
    • 6c9e634 fix(mock utils): set Readable.abort (#1549)
    • 22e2f39 ci: fix up exclude (#1544)
    • 99205ec feat: use weighted round robin in balancedPool (#1069)
    • 5b57e8c chore: exclude windows node 16 (#1542)
    • 93e31a2 Drop PR title validation (#1543)
    • 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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump terser from 5.14.1 to 5.14.2

    Bump terser from 5.14.1 to 5.14.2

    Bumps terser from 5.14.1 to 5.14.2.

    Changelog

    Sourced from terser's changelog.

    v5.14.2

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    • Source maps improvements (#1211)
    • Performance improvements in long property access evaluation (#1213)
    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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump fastify from 4.1.0 to 4.10.2

    Bump fastify from 4.1.0 to 4.10.2

    Bumps fastify from 4.1.0 to 4.10.2.

    Release notes

    Sourced from fastify's releases.

    v4.10.2

    ⚠️ Security Release ⚠️

    Full Changelog: https://github.com/fastify/fastify/compare/v4.10.1...v4.10.2

    v4.10.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/fastify/fastify/compare/v4.10.0...v4.10.1

    v4.10.0

    What's Changed

    ... (truncated)

    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)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Testing federation / realms?

    Testing federation / realms?

    Hello again! :wave:

    Would you be interested in testing realms by federating our servers? I realize this part of the spec is still pretty fluid, and the discoverability of realms will probably change, but nothing would stop our two servers from gossiping with each other. :)

    opened by kindrowboat 23
  • Tweaks to the docker-compose file

    Tweaks to the docker-compose file

    I moved the environment variables into a file. It would be nice to be able to define SPRING83_CONTENT_DIR_HOST in that env file too, but I wasn't able to easily get that to work. I just defined the volume and path directly in the docker-compose file. It's simpler but may not be as good as what was there before.

    opened by farktronix 0
Releases(v1.3.1)
Owner
Ryan Joseph
Ryan Joseph
A simple implementation example (framework) of Deso Protocol's Smart Services.

This project serves as a simple implementation example (framework) of Deso Protocol's Smart Services. This framework comes with out-of-the-box SSL, MongoDB, dev/stage/prod environments, and modularity.

Hunter Paulson 5 Sep 22, 2022
A RESP 'Redis Serialization Protocol' library implementation to generate a server, uses a similar approach to express to define you serer, making it easy and fast.

RESPRESS A RESP 'Redis Serialization Protocol' library implementation to generate a server, uses a similar approach to express to define you serer, ma

Yousef Wadi 9 Aug 29, 2022
GO implementation of the Terra 2.0 Protocol

The full-node software implementation of the Terra blockchain. Explore the Docs » Terra Core reference · Go API · Rest API · Finder · Station Terra mi

Terra 326 Jan 4, 2023
A quotaless, partially limitless, and fast Node.js Multiplayer Piano server implementation that efficiently makes use of the protocol and uWebSockets.js

speedymppserver A quotaless, partially limitless, and fast Node.js Multiplayer Piano server implementation that efficiently makes use of the protocol

Lapis 4 Oct 14, 2022
Very simple full-stack application using React, Java Spring Boot, and PostgreSQL

Very simple full-stack application using React, Java Spring Boot, and PostgreSQL. The API was built following the N-Tier architecture. The goal was to explore and learn more in-depth the development of APIs, the use of Docker and deploying with AWS.

Diego Quintela 0 Apr 23, 2022
In game dev, generative art, and creative coding, sine is a ubiquitous function that is often used as a spring-like oscillator for a given parameter.

In game dev, generative art, and creative coding, sine is a ubiquitous function that is often used as a spring-like oscillator for a given parameter.

Mark Racette 3 Feb 22, 2022
Hi, Spring fans! In this installment we look at the just-released Hilla framework, from our friends at Vaadin

Custom project from Hilla This project can be used as a starting point to create your own Hilla application with Spring Boot. It contains all the nece

Spring Tips 11 Nov 17, 2022
Quick and easy spring animation. Works with other animation libraries (gsap, animejs, framer motion, motion one, @okikio/animate, etc...) or the Web Animation API (WAAPI).

spring-easing NPM | Github | Docs | Licence Quick and easy spring animations. Works with other animation libraries (gsap, animejs, @okikio/animate, mo

Okiki Ojo 34 Dec 14, 2022
PLSC 21510/31510: Introduction to Text as Data for Social Science (Spring 2022)

PLSC 21510/31510: Introduction to Text as Data for Social Science Spring 2022 About Social scientists increasingly use large quantities of text-based

Rochelle Terman 16 Oct 17, 2022
An OAuth2 Authorization Server,Based on Spring Authorization Server

?? id-server 一个基于Spring Authorization Server的开源的授权服务器。 概念 一些概念 OAuth2Client 客户端指的是OAuth2 Client,但又不单单是一个OAuth2 Client,连id server本身都是一个客户端。 role 角色必须依附

felord.cn 351 Dec 30, 2022
📦 Writing Express but feel like Spring Boot

Springpress Custom top-level framework of Express.js, especially on TypeScript. Springpress provides expressjs utilities out of the box, lets you deep

Vectier 8 Oct 14, 2022
A demo Spring '83 client.

The Oakland Follower-Sentinel is a demo Spring '83 client that you can try on the web at followersentinel.com or run locally on your computer. If you

Robin Sloan 36 Dec 26, 2022
A custom element that aims to make it easier to embed Spring '83 boards

<spring-board> element A custom element that makes it simple to embed Spring '83 boards! Usage If you are using <spring-board> in a client-side framew

Ryan Murphy 11 Jan 1, 2023
Spring framework for Node.

Spring Framework For Node 向Spring开源社区致敬! 原生javascript实现Spring框架,无缝还原,上手丝滑,秒级启动。适合轻应用和产品原型开发。 js本身不适合做大型后端项目,尤其对于持续性开发的项目简直是场灾难。 设计j-spring的出发点是让js更好的充

lanye 17 Dec 27, 2022
Spring Boot + Angular: File Upload & Download Example

Spring Boot + Angular: File Upload & Download Example User Interface Local setup Step 1: Download or clone the source code from GitHub to a local mach

Sibin Rasiya 3 Sep 3, 2022
This is service registry server based on Spring Cloud Config, Netflix and Eureka

Servicec Discovery and Registry This is service registry, based on Spring Cloud Netflix, Eureka and Spring Cloud Config. Full documentation is availab

Mohammad Nuruzzaman 1 Oct 11, 2022
Piccloud is a full-stack (Angular & Spring Boot) online image clipboard that lets you share images over the internet by generating a unique URL. Others can access the image via this URL.

Piccloud Piccloud is a full-stack application built with Angular & Spring Boot. It is an online image clipboard that lets you share images over the in

Olayinka Atobiloye 3 Dec 15, 2022
Chrome extension that switches default build tool to Maven at start.spring.io

start.spring.io default to Maven On the 18th of October 2022 https://start.spring.io switched the default build tool from Maven to Gradle spring-io/st

Maciej Walkowiak 11 Dec 14, 2022
Library for interacting with RMM protocol through ethers.js.

?? rmm-ethers Easily connect and transact with RMM protocol. ?? Features ?? Deploy RMM protocol ⚡️ Easily connect to an RMM deployment ?? Create RMM p

Primitive 14 Nov 13, 2022