This is the source for alisoglu.com, my personal website for software and projects. File tools that stay local, a Windows dashboard for GitHub projects, and a PCB AIO Tool currently in progress.
- About me — a little about the person behind the tabs.
- FileForge — browser tools for images, PDFs, spreadsheets, video and text. There’s a connected workspace for passing results from one tool to another, too. Windows 0.3.0 bundles that workspace and its engines, alongside the native converters.
- Repodock — a Windows app for running local GitHub projects and following their logs.
- Other experiments — separate from the main software portfolio, including the unofficial Skate Scape fan project.
- Downloads — desktop releases and setup notes.
Questions or ideas? Say hello, or open an issue.
You’ll need Node.js 22.13 or newer. I use Node 24.
npm ci
npm run devOpen 127.0.0.1:8780. To check and preview the production build:
npm test
npm run build
npm run previewindex.htmlandabout/are the personal pages.projects/,downloads/andcontact/have project information and ways to get in touch.src/site/templates.jsexpands shared navigation and footers into plain HTML at build time. Navigation works without JavaScript.src/site/personal.csshandles the personal pages and shared site shell. The artwork is CSS, SVG and existing project images; there are no external font requests.src/site/premium.cssrefines the shared surfaces and project presentation.experience.jsadds the mobile menu and short section reveals, with a reduced-motion option and no dependencies. The navigation remains available without JavaScript.src/fileforge/contains the file-processing tools;src/site/workspace.jsconnects them.tools/contains the tool directory, individual guides and workspace entry point.
The directory starts with a conversion picker. It shows supported output formats and the same limits used by the tool guides, then opens the converter with that output selected. Files are chosen inside the tool; the picker makes no upload or preference-storage requests. The browser and Windows editions have different feature sets, compared on the FileForge project page.
Run npm run test:conversions against the local preview to check picker routing, real JPEG/CSV exports, narrow screens and navigation without JavaScript.
Run npm run test:design to check the shared navigation, keyboard controls, six screen widths, reduced motion, metadata and the static fallback. It saves screenshots in .local/premium-check/.
Run npm run test:experience to check the site-wide tool finder, shareable directory searches, compact active workspace, export progress, reset and recovery from a stalled tool. Screenshots go to .local/experience-check/. Run it against the production preview, like the other browser checks.
Use Image Studio for batch conversion and resizing, or the guided product-photo job for manual cutout refinement and cropping. Product Kit Studio has been retired; its old URL remains as a noindex page linking to those tools.
/tools/workspace/?job=attachment, ?job=product, and ?job=document open guided tasks using the existing local engines. Attachment preparation routes an image, HEIC, PDF or short video to an appropriate tool. Product images pass a cutout through a crop and PNG export. Document photos pass through the scanner and an image-to-PDF export. Each step requires review; no model or video engine starts automatically. The full toolbox remains available, and resetting returns to the original file.
The workspace shows one file picker, one shared result with actual size changes and bounded image previews, and an optional panel for original-file branching. Offline installation is a collapsed, optional section. Browser Quick Jobs are a website feature; the existing Windows 0.3.0 download is an independently published package.
Run npm run test:quick-jobs against the production preview for real JPEG/PDF exports, the complete cutout/crop/PNG chain, alpha transparency, presets, invalid-file recovery and narrow screens. It saves screenshots to .local/quick-jobs-check/.
The FileForge product demo is a real, silent browser recording. node scripts/record-attachment-demo.mjs regenerates it against TEST_URL using the original headphones sample; it needs Playwright's FFmpeg runtime (node node_modules/playwright/cli.js install ffmpeg). Repodock's demo is an explicitly labelled walkthrough of its existing dashboard screenshot. Neither product demo auto-plays. The recording has a text transcript and does not enter offline tool packs.
The participant script and observation sheet in docs/usability-session.md are ready for 3–5 real users. No participant sessions or results are claimed by the automated checks.
npm run test:products checks the product recording, keyboard walkthrough, lazy media, release notes, shared cancellation and responsive screenshots. Product media are deliberately excluded from offline processing packs.
Run npm run check:releases after publishing a desktop app or updating download links. It checks the pinned website versions against each public latest stable GitHub release, verifies that the expected assets exist, and checks the public download responses and sizes. This network check is separate from normal builds and unit tests.
After a production build, npm run check:seo validates unique page titles/descriptions, canonical URLs, sitemap coverage, linked structured-data entities, visible desktop download facts and Markdown summaries. Retired pages remain noindex. The existing machine-readable guides are supplemental references; no AI citation or search ranking is promised.
- Word → PDF and PowerPoint → PDF: preview DOCX/PPTX locally, then export flattened page images. Up to 10 MB and 20 pages/slides. Layout can differ from Office; use the original app when exact layout or tagged, accessible PDFs are required. Older DOC/PPT formats, macros and embedded OLE objects aren’t supported.
- Text → PDF: paste notes or open a UTF-8 TXT; choose A4 or Letter and export selectable text.
- PDF → text: read existing selectable text, with page ranges and editable TXT output. Scans use the separate OCR tool.
- CSV ↔ JSON: convert comma-separated tables and arrays of flat row objects. CSV values stay strings. Formula-like CSV text protection is enabled by default.
All five tools work in the connected workspace. Office engines load only after Preview; an optional offline pack keeps them separate from the basic tools.
The build publishes /llms.txt, a /llm.txt compatibility alias, /llms-full.txt, and Markdown summaries at each public page’s index.md. Pages link to these summaries and include structured person, website and tool metadata. Tool claims and limits come from the shared catalogue. These files help readers and crawlers understand the site; they don’t promise search placement.
The home page title is “Umut Alisoglu — Software & personal projects”. Search engines can keep an older listing until they recrawl the page. Use Google Search Console’s URL inspection to request indexing of https://alisoglu.com/ if the old title is still showing. The sitemap is at /sitemap.xml; its home-page modification date reflects the latest content update. node scripts/render-site-icons.mjs regenerates the PNG favicon and home-screen icon from the SVG monogram.
Selected files are processed on the visitor’s device. There’s no conversion server, account system, analytics or file-upload endpoint. Engines, fonts and models are served from this site and load as needed. Each tool explains its own formats and limits.
The workspace keeps files and results in memory. Download what you need before leaving. Optional favourites and image settings are stored locally only when requested. Offline installation is optional and caches public tool assets, never selected files or results. The service worker is scoped to /tools/; the separately hosted game manages its own storage.
Background removal uses the bundled U2NETP model. OCR supports English, German and Turkish; its output is editable text, not a searchable PDF. Browser tools and the Windows app have different capabilities. More detail is on the project page and privacy page.
The contact form prepares a draft locally. Visitors review and send it through their own email app or GitHub. The idea machine also works locally and just puts a starting brief together.
With a production preview running, these checks use installed Google Chrome:
npm run test:pages
npm run test:workspace
npm run test:workshop
npm run test:finder
npm run test:documentsThey cover routes and links, phone-to-desktop layouts, feedback drafts and actual file workflows. More focused checks are listed in package.json. Set TEST_URL to test another local server, or BROWSER_CHANNEL to use another Playwright browser channel. Output goes into ignored .local/.
GitHub Pages builds and deploys this repo through .github/workflows/pages.yml after a push to main. Set the Pages source to GitHub Actions. The workflow runs the tests, builds dist/ and publishes it. CNAME keeps the custom domain.
Repodock’s screenshot and FileForge’s icon come from their project assets. Sample artwork is described in assets/demos/README.md. Dependency and asset credits are in THIRD_PARTY_NOTICES.md.