Commit graph

8 commits

Author SHA1 Message Date
Vadym Samoilenko
4fc85ef99e Enable SPA prerendering in build pipeline
- Add puppeteer + mime-types to devDependencies
- Integrate prerender.mjs into build script (runs after vite build)
- Add Linux/Docker-safe Chrome flags (--disable-setuid-sandbox, --disable-dev-shm-usage, --disable-gpu)
- Fix static server to strip query strings from URLs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 21:39:01 +00:00
Vadym Samoilenko
272839d7a9 Add post-build SPA prerendering script with Puppeteer
Manual script (node scripts/prerender.mjs) that starts a local static
server, visits each route with Puppeteer, waits 3s for React to render,
and saves full HTML to dist/. Covers all static routes + blog posts.

Run after vite build when prerendering is needed. Requires puppeteer
installed (npm i -D puppeteer mime-types).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 21:37:34 +00:00
Vadym Samoilenko
b6a6a55e05 Generate dynamic sitemap with blog posts and lastmod dates
New script reads public/blog/posts.json at build time and outputs
public/sitemap.xml with all static routes + /blog/:slug entries,
each with lastmod from post dates or current date.

Build pipeline: sync-blog → generate-sitemap → tsc → vite build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 21:37:29 +00:00
Vadym Samoilenko
5d0aaab339 Migrate 5 server blog posts to TinaCMS-managed content/blog/
Converts existing server-side JSON blog posts to Markdown format with
YAML frontmatter so they appear in TinaCloud admin and are managed via git.
Also fixes sync-blog.mjs parseFrontmatter to support multi-line YAML lists
(TinaCMS writes hashtags as multi-line list items).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 22:28:11 +00:00
Vadym Samoilenko
985d21b53d Add TinaCMS Cloud integration (Phase 1)
- Add tina/config.ts with full schema for all site sections
- Convert i18n from TypeScript to nested JSON (content/translations/)
- Update LanguageContext to import JSON with flattenObject utility
- Update dev/build scripts to run tinacms build
- Add sync-blog.mjs support for content/blog/*.md (TinaCMS posts)
- Update CI/CD with Tina env vars, remove blog rsync exclusion
- Add tina/__generated__/ to .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 20:34:35 +00:00
Vadym Samoilenko
51114f1a20 Add reviews.json to public/ so it persists across deploys
Sync script will overwrite it on server with fresh data twice a month.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:46:10 +00:00
Vadym Samoilenko
9ca6272b98 Fix deploy to preserve reviews.json and show all rated reviews
- Exclude reviews.json from rsync --delete so deploy doesn't wipe it
- Show all reviews with rating >= 4 (not just those with text)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:30:37 +00:00
Vadym Samoilenko
67c7ab3289 Initial commit: Aimpress website
React 19 + TypeScript SPA with Vite, mobile responsive fixes,
GitHub Actions CI/CD pipeline for automated deployment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 13:47:37 +00:00