{"id":19298994,"url":"https://github.com/javierbyte/resorte","last_synced_at":"2026-05-14T18:32:47.947Z","repository":{"id":205632222,"uuid":"676755491","full_name":"javierbyte/resorte","owner":"javierbyte","description":"Custom size phone / book stand generator to 3D print in vase mode.","archived":false,"fork":false,"pushed_at":"2023-11-05T16:29:12.000Z","size":1014,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-24T01:16:21.447Z","etag":null,"topics":["3d","3dprint","react-three-fiber","stl","threejs"],"latest_commit_sha":null,"homepage":"https://javier.xyz/resorte","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javierbyte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-10T00:07:20.000Z","updated_at":"2023-11-11T21:17:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"e2f581b5-3b98-4c50-b0cf-ee955c4a5b6b","html_url":"https://github.com/javierbyte/resorte","commit_stats":null,"previous_names":["javierbyte/resorte"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/javierbyte/resorte","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javierbyte%2Fresorte","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javierbyte%2Fresorte/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javierbyte%2Fresorte/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javierbyte%2Fresorte/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javierbyte","download_url":"https://codeload.github.com/javierbyte/resorte/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javierbyte%2Fresorte/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33037833,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["3d","3dprint","react-three-fiber","stl","threejs"],"created_at":"2024-11-09T23:09:43.354Z","updated_at":"2026-05-14T18:32:47.934Z","avatar_url":"https://github.com/javierbyte.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Resorte](https://javier.xyz/resorte)\n\nCustom size phone / book stand generator to 3D print in vase mode.\n\n[![](docs-assets/screenshot.jpg)](https://javier.xyz/resorte)\n\n## Made with resorte\n\n| ![](docs-assets/berlin-back.jpg) | ![](docs-assets/berlin-front.jpg) |\n| -------------------------------- | --------------------------------- |\n| ![](docs-assets/kindle-back.jpg) | ![](docs-assets/kindle-front.jpg) |\n| ![](docs-assets/toily-back.jpg)  | ![](docs-assets/toily-front.jpg)  |\n\n## How to use and print\n\nConfigure your slicer to print in Vase Mode. In PrusaSlicer this\nis called Spiral Vase. You can activate in Print Settings → Layers\nand perimeters → Spiral vase.\n\n**Print tips**\n\n- Extrusion width to `0.9mm`. Since this is a single layer the ticker it is the better for this purpose. In any case, it seems that exceeding 1.5 your nozzle size is not recommended.\n- I remove the bottom layers, I prefer the look of the hollow parts.\n- The exported .stl should have the correct size already, but you can verify its Z dimensions against the `extrude` value set when exported (also in the filename) to be sure.\n\n![](docs-assets/prusaslicer.jpg)\n\n## Working with the code\n\nThis is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n```bash\npnpm i\npnpm dev\n```\n\nGiven that this project was setup to be mounted on `/resorte` on my website the run the project locally you have to go to `http://localhost:3000`.\n\n### Adding a new design\n\nDesigns are stored in `src/components/designs/`. Each design should export its configuration requirements and a path function that returns a `MultyPolygon`.\n\n```\nconst config = [\n  {\n    key: \"angle\",\n    label: \"Angle\",\n    min: 0,\n    max: 90,\n    suffix: \"°\",\n    default: 60,\n    step: 1,\n    advanced: false,\n  },\n  [...]\n]\n\n// params is an object with every `key` in config as a property with a `number`.\nexport function path(params) {\n  // return MultiPolygon\n}\n```\n\n## Dependencies\n\n- [polygon-clipping](https://github.com/mfogel/polygon-clipping) to merge and handle polygons.\n- [Next.js](https://github.com/vercel/next.js)\n- [shadcn/ui](https://github.com/shadcn-ui/ui)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavierbyte%2Fresorte","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavierbyte%2Fresorte","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavierbyte%2Fresorte/lists"}