{"id":20695958,"url":"https://github.com/FxEmbed/mosaic","last_synced_at":"2025-05-10T18:31:34.039Z","repository":{"id":48275717,"uuid":"516823742","full_name":"FxEmbed/mosaic","owner":"FxEmbed","description":"A multi-image stitcher used by FixTweet written in Rust","archived":false,"fork":false,"pushed_at":"2024-10-20T02:24:15.000Z","size":147,"stargazers_count":12,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-22T20:49:50.216Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FxEmbed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-22T16:49:40.000Z","updated_at":"2024-08-01T09:33:54.000Z","dependencies_parsed_at":"2023-01-17T19:30:13.930Z","dependency_job_id":"8805b034-8a0e-4691-abd2-63fd8d073efe","html_url":"https://github.com/FxEmbed/mosaic","commit_stats":null,"previous_names":["fxembed/mosaic"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FxEmbed%2Fmosaic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FxEmbed%2Fmosaic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FxEmbed%2Fmosaic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FxEmbed%2Fmosaic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FxEmbed","download_url":"https://codeload.github.com/FxEmbed/mosaic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253463656,"owners_count":21912866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T00:12:02.147Z","updated_at":"2025-05-10T18:31:33.598Z","avatar_url":"https://github.com/FxEmbed.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FixTweet Mosaic\n![](https://skillicons.dev/icons?i=rust)\n\nMosaic is the name of FixTweet's multi-image combining component. It takes a list of images in its URL and automatically pulls and stitches them.\n\nExample URL: `https://mosaic.fxtwitter.com/jpeg/1692367302300172424/F3x-ebzWgAACauT/F3x-eb3XUAAnEEb`\n\nWherein the schema is /:format/:tweet_id/:list_of/:image_ids. Up to 4 images may be specified. JPEG and WebP are supported as formats. WebP takes considerably longer to compress, but provides smaller images. FixTweet currently only natively uses JPEG for the broadest compatibility and fastest response times for users.\n\nMosaic is written in Rust for its balance of blazing fast performance (very important here!), memory safety, and availability of 3rd party Cargo packages.\n\nThe default http port is 3030. You can override this by passing through an environment variable `PORT`.\n\nNote: This server does not provide its own cache management solution. We assume you are running this behind a reverse proxy or CDN (i.e. Cloudflare) that caches image responses for you for when multiple requests are made to the same image.\n\n## Building\n\nThis is not a full tutorial on how to build and use Rust, but TL;DR:\n\n1. Make sure you have [Rust/Cargo and necessary OS build dependencies installed](https://rustup.rs/)\n2. Run `cargo build --release` in the repository\n3. You can now run `target/release/mosaic` to start the server\n\nYou can also build a Docker image with `docker build -t mosaic .` and run it with `docker run -p 3030:3030 mosaic`.\n\nCredits:\n- [Antonio32A](https://github.com/Antonio32A) (writing Rust version)\n- [dangered wolf](https://github.com/dangeredwolf) ([Original TypeScript reference](https://github.com/FixTweet/mosaic-reference) and minor improvements)\n- [Deer-Spangle](https://github.com/Deer-Spangle) (Improved image stitching algorithm)\n- [Syfaro](https://github.com/Syfaro) (Rust server/implementation improvements)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFxEmbed%2Fmosaic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFxEmbed%2Fmosaic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFxEmbed%2Fmosaic/lists"}