mirror of
https://github.com/TautvydasDerzinskas/Thingport.git
synced 2026-10-19 05:10:01 -05:00
Import, collection import and synced collections from MyMiniFactory, alongside MakerWorld, Printables and Thingiverse. - Backend: API v2 client with an instance-wide API key for metadata, collections and authors; files from MyMiniFactory's own download links (free models need no login). Paid models, and free ones whose files are archives, download as the user from their MyMiniFactory library through their session (PHPSESSID), fetching the model files MyMiniFactory unpacked from each archive. Paid models are left out of collection listings and syncs. - One migration: MyMiniFactory category ids, username and session columns, plus a data migration giving existing users' starter categories the new category ids. Category matching now prefers the most specific site category. - Frontend: provider everywhere the others appear (badges, Configuration and Administration providers, sync Browse tab, user menu, link detection, System Health, category ids), shared instance-key form for Thingiverse and MyMiniFactory, en and lt. - Thingport Grab: new provider sites are allowed once from the popup (optional all-sites access, content script registered at runtime), so adding one never makes the browser disable the extension; captures the signed-in MyMiniFactory username and session; paid-model notice. - Docs, website, store assets and screenshots updated.
Thingport website
The product site, docs and blog, published to GitHub Pages by
.github/workflows/web-pages.yml. Built with Astro as
plain static HTML. The little JavaScript there is: the theme toggle, copy buttons, and the seasonal logo, which
the visitor's browser picks by date (the pages are built ahead of time).
cd web
npm install
npm run dev # http://localhost:4321/
npm run build # static output in dist/
npm run check # type-check
Requires Node 24+ (see the root .nvmrc).
Where the content lives
- Docs are not copied here. The docs pages render the repo's own Markdown (
docs/,extension/README.md,bridge/README.md,CONTRIBUTING.md) at build time. Edit those files, not the site. The list of pages, with their titles, sidebar groups and SEO descriptions, isDOCSinsrc/lib/site.mjs. Relative links in those files are rewritten bysrc/lib/rehypeRepoLinks.mjs: links to another rendered doc stay on the site, and everything else points to GitHub. - The Docker Compose install page (
src/pages/docs/install.astro) embeds the realdocker-compose.deploy.ymland.env.example. - Blog posts are Markdown files in
src/content/blog/. Frontmatter:title,description,pubDate, and optionallyupdatedDate,tagsanddraft: true. Link to site pages root-relative (/docs/install/); the base path is added automatically. - Logos, fonts, favicons and screenshots come from
frontend/, so the site always matches the app. - Colours mirror
THEME_DEFSinfrontend/src/theme.ts, as CSS variables insrc/styles/global.css. The site follows the visitor's system light/dark setting, and the header button overrides it.
URL and custom domain
The site is served from https://thingport.net/ (a custom domain set in the repo's Pages settings). In CI the URL
and base path come from GitHub Pages itself; local and PR builds default to that domain with base /. Override with
SITE_URL=https://example.com BASE_PATH=/sub-path npm run build.