๐Ÿ“ธ website screenshots as a service

Overview

website-screenshot

Rust: 1.60+ Continuous Delivery Continuous Integration

๐Ÿ“ธ website screenshots as a service

Features

  • ๐Ÿ’ซ powered by Rust
  • ๐Ÿš€ blazing fast
  • ๐Ÿ‘ฎ โ€‹โ€‹โ€‹โ€โ€โ€‹ built-in ratelimiter
  • ๐Ÿ‘œ built-in storage providers
  • ๐Ÿ—ผ configurable

Deployment

Prerequisites

Environment Variables

  • PORT - the port that the application will run (optional, defaults to 3000)
  • REDIS_URL - the address of your redis database (required)

Railway

Deploy on Railway

Pre-built Binaries

โš ๏ธ - You can't change the provider when using the pre-built binaries.

Linux

curl -fsSL https://raw.githubusercontent.com/devtomio/website-screenshot/main/install.sh

Other

See the Releases page of this repository and download the appropriate binary.

Docker

โš ๏ธ - You can't change the provider when using the docker image.

A dockerized version of this application is available here.

Cargo

Installing website-screenshot as a crate.

cargo install website-screenshot

Building from source

  1. Clone this repository. e.g. git clone https://github.com/devtomio/website-screenshot
  2. Build the binary cargo build --release

Storage Providers

Fs (Filesystem) Provider

๐Ÿ“ - This is the default provider.

Build Command

cargo build --release

Cloudinary Provider

๐Ÿ“ - You must make an unsigned upload preset.

Environment Variables

  • CLOUDINARY_API_KEY - your api key (required)
  • CLOUDINARY_UPLOAD_PRESET - the name of your unsigned upload preset (required)
  • CLOUDINARY_CLOUD_NAME - the cloud name that you set during registration (required)

Build Command

cargo build --release --no-default-features --features cloudinary_provider

Amazon AWS S3 Provider

โš ๏ธ - This is untested. If you encounter a bug please don't hesitate to open an issue.

Environment Variables

  • S3_BUCKET_NAME - the name of your s3 bucket (required)
  • S3_REGION - the region of your s3 bucket (required)
  • S3_ACCESS_KEY - your access key (required)
  • S3_SECRET_KEY - your secret key (required)
  • S3_SECURITY_TOKEN - your security token (optional)
  • S3_SESSION_TOKEN - your session token (optional)

Build Command

cargo build --release --no-default-features --features s3_provider

Tixte Provider

Environment Variables

  • TIXTE_UPLOAD_KEY - your upload key, can be found on the integrations tab (required)
  • TIXTE_DOMAIN_CONFIG - whether to use random domains or a specific domain (required, can only be standard, or random)
  • TIXTE_CUSTOM_DOMAIN - the specific domain to use (only required when TIXTE_DOMAIN_CONFIG is set to standard)

Build Command

cargo build --release --no-default-features --features tixte_provider

Sled Provider

Environment Variables

  • SLED_PATH - the path to provide when opening the sled database (optional, defaults to .website-screenshot)

Build Command

cargo build --release --no-default-features --features sled_provider

Endpoints

GET /

Hello, world!

Example Response:

Hello, world!

POST /screenshot

Creates a screenshot.

JSON payload with the url key.

Example Payload:

{
  "url": "https://rust-lang.org" 
}

Example Response

{
  "slug": "abcdefghijk",
  "path": "/s/abcdefghijk",
  "metadata": {
    "url": "https://rust-lang.org"
  }
}

GET /s/:slug

Gets the screenshot that is corresponding to the slug.

Example URL

http://localhost:3000/s/abcdefghijk

Example Response

Rust Website

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Contributors โœจ

Thanks goes to these wonderful people (emoji key):


Tomio

๐Ÿ’ป ๐Ÿ“– ๐Ÿš‡ ๐Ÿšง

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
Releases(v1.2.0)
Owner
Tomio
has a doctorate on @rust-lang and @nodejs
Tomio
๐Ÿง–๐Ÿปโ€โ™€๏ธ Symlink your Steam screenshots to a sensible place

lnshot ????โ€โ™€๏ธ Symlink your Steam games' screenshot directories into your Pictures folder About This is a little utility to work around a bugbear of m

Jessica Stokes 23 Jan 31, 2023
UpVent Website (Powered by Rust + Svelte & Fernet Branca).

UpVent Website Source Build Status Description This is the source code for the UpVent's website under upvent.codes. Development occurs on the master b

UpVent 3 Dec 2, 2022
Use the osu!direct button on the osu! website to download beatmaps directly to osu

osum!direct-web Use the osu!direct button on the osu! website to download beatmaps directly to osu! - without osu! supporter. Badges Usage Run the app

oSumAtrIX 1 Jan 21, 2022
Navigating around TUM with excellence โ€“ An API and website to search for rooms, buildings and other places

NavigaTUM NavigaTUM is a non-official tool developed by students for students, that aims to help you get around at TUM. Feel free to contribute. Featu

TUM Developers 21 Dec 22, 2022
Are we lang yet? A simple website providing information about the status of Rust's language development ecosystem.

Are We Lang Yet This project answers the question "Is the Rust ecosystem ready to use for language development yet?". arewelangyet.com What is this? C

null 8 Dec 7, 2022
A website for the Leptos Web Framework!

Leptos Website A Repo for the public facing Leptos website. Still a WIP. Client Side Rendering This example cannot be built as a trunk standalone CSR-

Leptos 7 May 2, 2023
๐ŸŒŠ ~ seaward is a crawler which searches for links or a specified word in a website.

?? seaward Installation cargo install seaward On NetBSD a pre-compiled binary is available from the official repositories. To install it, simply run:

null 3 Jul 16, 2023
policy-driven signing service

SigningService (maybe we'll have a more clever name one day!) What is this? This repo has a little "serverless" (runs on lambda and some other service

null 4 Jul 15, 2022
Galileo OSNMA (Open Service Navigation Message Authentication)

galileo-osnma galileo-osnma is a Rust implementation of the Galileo OSNMA (Open Service Navigation Message Authentication) protocol. This protocol is

Daniel Estรฉvez 26 Nov 25, 2022
By mirroring traffic to and from your machine, mirrord surrounds your local service with a mirror image of its cloud environment.

mirrord lets you easily mirror traffic from your Kubernetes cluster to your development environment. It comes as both Visual Studio Code extension and

MetalBear 2.1k Jan 3, 2023
Bracket QOS - a Quality of Service/Experience server system writtin in Rust. Derived from the excellent LibreQOS Project.

Bracket QOS - Open Source Edition This project is based on the excellent LibreQOS project. It is hoped that this can be useful for the upstream projec

Herbert 12 Dec 2, 2022
Conference Monitoring Project based on Image Recognition that uses Rust Language and AWS Rekognition service to get the level of image similarity.

Conference Monitoring System based on Image Recognition in Rust This is a Conference Monitoring Project based on Image Recognition that uses Rust Lang

Pankaj Chaudhary 6 Dec 18, 2022
Plex webhook service to automatically update your Anilist watching list.

anifunnel Plex webhook service to automatically update your Anilist watching list. Description anifunnel is a web server that will consume incoming Pl

Hamuko 3 Dec 12, 2022
Safer Nostr is a service that helps protect users by loading sensitive information (IP leak) and using AI to prevent inappropriate images from being uploaded.

Safer Nostr is a service that helps protect users by loading sensitive information (IP leak) and using AI to prevent inappropriate images from being uploaded. It also offers image optimization and storage options. It has configurable privacy and storage settings, as well as custom cache expiration.

Thomas 4 Dec 29, 2022
COCONUT Secure VM Service Module

This is the source code repository for the COCONUT Secure VM Service Module (SVSM), a software which aims to provide secure services and device emulations to guest operating systems in confidential virtual machines (CVMs). It requires AMD Secure Encrypted Virtualization with Secure Nested Paging (AMD SEV-SNP), especially the VM Privilege Level (VMPL) feature.

null 15 Mar 28, 2023
Infino - Fast and scalable service to store time series and logs - written in Rust

Infino ใ€ฝ๏ธ ?? โ€” ?? ?? โ€” โš–๏ธ ?? Ingest Metrics and Logs โ€” Query and Insights โ€” Scale and Save $$ Infino is an observability platform for storing metrics

null 6 Apr 23, 2023
Service-Oriented Design Patterns for Rust

SOD: Service-Oriented Design Overview This crate provides Service, MutService, and AsyncService traits and associated utilities to facilitiate service

Eric Thill 3 Apr 26, 2023
Backend service to build customer facing dashboards 10x faster. Written in Rust.

Frolic is an open source backend service (written in Rust) to build customer facing dashboards 10x faster. You can directly connect your database to t

Frolic 82 Aug 7, 2023
Authentication and authorization service, written in Rust

auth-rs auth-rs provides a simple authentication and authorization service for use in other services. The service is written in Rust and uses the acti

OpServa 3 Aug 17, 2023