All notable changes to this project, newest first.
v1.0.0
Navbar More dropdown, opaque mobile drawer, smarter blog sorting, two new posts on database pooling and Supabase production patterns, avatar load improvement, and a comprehensive SEO pass across all routes.
Navigation
ChangedBlog and Changelog links compressed into a 'More' dropdown on the desktop navbar — reduces crowding on smaller desktop widths
FixedMobile drawer background changed from semi-transparent glass to solid bg-background — text is now legible against any page content beneath the menu
Blog
AddedgetSortedBlogPosts() utility exported from data/blog.ts — blog list page and homepage preview now always display posts newest-first
AddedNew post: 'Database Connection Pooling in Serverless' — covers Postgres connection exhaustion in serverless, Supabase Supavisor (port 6543 vs 5432), Prisma dual-URL config, and connection monitoring
AddedNew post: 'Supabase in Production' — covers Row-Level Security patterns, multi-tenant RLS with org membership helpers, Realtime Broadcast vs Postgres Changes, Edge Functions, Storage RLS policies, and performance tips
SEO & Metadata
AddedBlogPosting JSON-LD structured data injected in blog/[slug]/layout.tsx — includes headline, datePublished, keywords, author, publisher, and isPartOf WebSite references
AddedPer-post dynamic Open Graph image at app/blog/[slug]/opengraph-image.tsx — renders post title, author badge, and tag pills at 1200×630 on the edge runtime
AddedTwitter card metadata (summary_large_image, site, creator) added to /blog and /changelog route layouts
AddedgoogleBot directive (max-image-preview: large, max-snippet: -1) added to /blog, /changelog, and blog/[slug] layouts — matches root layout
AddedopenGraph.siteName added to /blog, /changelog, and blog/[slug] metadata for consistent social card rendering
FixedSitemap blog entries now use actual post.date for lastModified instead of new Date() — ensures Google sees accurate freshness signals
RemovedNon-standard host field removed from robots.ts
Performance
ChangedProfile photo container in About section now has bg-primary/10 as a branded placeholder shown while the WebP loads; fetchPriority='high' added alongside the existing priority prop
v0.9.0
Added /blog section with 4 posts, blog preview on landing page, restructured navbar into section/page groups, updated domain to tanamaroby.com, and improved LCP with next/image priority on profile photo.
New Features
Added/blog route — list page at /blog with all posts in reverse-chronological order
Added4 blog posts: Next.js App Router deep-dive, React performance patterns, AG Grid in production lessons, and modern ERP vs SaaS bespoke analysis
AddedBlog preview section on landing page — 3 most recent posts in a card grid with a "View all posts" CTA
Navigation
ChangedNavbar redesigned with two groups: section links (scroll anchors) and page links (Blog, Changelog) separated by a visual divider
ChangedMobile drawer now shows "Sections" and "Pages" labels to reduce crowding
ChangedLogo and Hire Me CTA now navigate to /#contact when viewed from non-home pages
AddedPage links (Blog, Changelog) show active underline indicator based on current pathname
SEO & Infrastructure
ChangedDomain updated sitewide from robytanama.dev to tanamaroby.com (layout.tsx, sitemap.ts, robots.ts, changelog layout, OG image)
ChangedOG image bottom row now displays tanamaroby.com
AddedSitemap expanded with /blog index (priority 0.8) and individual post entries (priority 0.6)
AddedBlog shortcut added to PWA manifest between Projects and Get in Touch
AddedBlog route layout with canonical URL, OpenGraph article metadata, and per-post metadata via generateMetadata
Performance
ChangedProfile photo in About section replaced with next/image (fill + priority + sizes=160px) for improved LCP
FixedLighthouse audit run: Performance 74 (dev mode), Accessibility 100, Best Practices 100, SEO 100
Housekeeping
RemovedDeleted 7 stale image originals from public/: Aether.png, love-letter.png, Radomir.png, Trivial.png, Savenus.jpg, Yogapets.jpg, Roby.jpg (WebP versions retained)
Fixedz-[999] arbitrary class in loading.tsx simplified to z-999 (Tailwind CSS v4)
v0.8.0
Added dark/light mode toggle, active nav indicator, project tech filtering, Testimonials section, and Vercel Analytics.
UI & UX
AddedDark/light mode toggle in navbar — powered by next-themes with mounted-state guard to prevent hydration mismatches; defaults to dark
AddedActive nav indicator — IntersectionObserver watches each section and highlights the corresponding nav link as you scroll (underline transitions in/out)
AddedProject tech filtering — filter pill buttons above the projects grid let visitors filter by technology; AnimatePresence handles card enter/exit transitions
Content
AddedTestimonials section — four client testimonials from founders, operators, and product leaders; placed between Projects and Contact
Analytics
AddedVercel Analytics integrated via @vercel/analytics/react — <Analytics /> injected inside Providers in the root layout
Infrastructure
Addedcomponents/providers.tsx — ThemeProvider wrapper; root layout html element no longer hardcodes className="dark"
Changedviewport colorScheme updated from "dark" to "dark light"; themeColor media query now returns #ffffff for light mode
v0.7.0
SEO & performance: WebP image conversion, WebSite/WebPage JSON-LD @graph, apple-touch-icon meta links, and Twitter card alt text.
Performance
ChangedAll project screenshot images converted to WebP (cwebp -q 85 -resize 1200 0) — original PNGs were up to 5 MB; WebP counterparts are 48–64 KB (97–99% reduction)
ChangedAll image paths in projects.tsx and about.tsx updated to reference the new .webp files
SEO
AddedJSON-LD restructured as @graph with WebSite and WebPage schemas alongside the existing Person schema, with @id anchors for cross-referencing
Addedapple-touch-icon meta links added via Next.js metadata icons.apple (192×192 and 512×512)
FixedTwitter card images array now uses object form { url, alt } so the OG image has correct alt text for accessibility audits
Docs
ChangedCopilot instructions updated: WebP conversion workflow added to 'Adding a Project' section, checklist updated to reference structuredDataJsonLd and new image optimisation item
v0.6.0
UI polish: semi-transparent back-to-top button, scroll-driven hero orb parallax, green glow consulting badge, Next.js added to backend skills, and production web apps tagline.
UI & UX
ChangedBack-to-top button is now semi-transparent (opacity-40) at rest and fades to full opacity on hover, so it no longer obscures page text
AddedHero background orbs now move with scroll via Framer Motion useScroll + useTransform — performant transform-only parallax with no layout reflows
Changed"Open to consulting" badge now uses the new --available green token with a soft glow (glow-available-sm), making availability clearly visible at a glance
ChangedHero description updated to highlight specialization in production-ready, industry-grade web applications
Content
AddedNext.js added to the Backend skills category in the Skills section
v0.5.0
New UI polish: custom 404 page, full-screen loading spinner, scroll-progress bar, and back-to-top button.
UI & UX
AddedCustom 404 page (app/not-found.tsx) — branded with the RT monogram, animated background orbs, gradient 404 heading, and Home / Go Back action buttons
AddedFull-screen loading spinner (app/loading.tsx) — spinning ring around the RT monogram badge with a pulsing tracking label, shown automatically by Next.js during navigation
AddedScroll-progress indicator (components/scroll-progress.tsx) — spring-animated 3px bar fixed at the very top of the viewport, driven by Framer Motion useScroll + useSpring
AddedBack-to-top button (components/back-to-top.tsx) — floating circular button in the bottom-right corner; appears after 400px of scroll with an animated entrance/exit via Framer Motion AnimatePresence
v0.4.0
Maximum SEO and enhanced PWA: dynamic OG image, JSON-LD Person schema, sitemap, robots.txt, rich metadata, and expanded web app manifest with shortcuts.
SEO
AddedDynamic OG image (1200×630) generated at the edge via Next.js ImageResponse — branded with name, role, and colour scheme
AddedJSON-LD Person schema injected in the root layout — includes name, job title, employer (TrieTech), NUS alumni, address, email, and sameAs social links for Google rich results
Addedapp/sitemap.ts — dynamic sitemap.xml covering / and /changelog with lastModified, changeFrequency, and priority
Addedapp/robots.ts — robots.txt with sitemap reference, allow all, and disallow /api/
ChangedRoot layout metadata: richer title (includes CTO / Full-Stack Engineer), expanded keywords (18 terms), creator/publisher fields, canonical URL, granular googleBot directives (max-image-preview large, max-snippet -1), Twitter site/creator handles (@SCourtest), OG image reference, and formatDetection for address and email
ChangedChangelog route metadata: added canonical URL, OG tags, and robots directive
Changedviewport: themeColor now uses media query array (dark + light) instead of a bare string
PWA
Changedmanifest.json: added id, lang, dir, prefer_related_applications, display_override (window-controls-overlay), start_url with ?source=pwa tracking, and expanded categories
Addedmanifest.json: shortcuts for Projects, Contact, and Changelog — appear in the OS home-screen long-press menu
v0.3.0
Added love-letter — a full-stack social media platform — to the Projects section.
Projects
Addedlove-letter — full-stack social media web app with real-time notifications, Supabase Realtime presence & broadcast, global chat, personal and admin analytics dashboards, versioned public REST API, and PWA support
v0.2.0
Content update: populated all sections with real personal information, added profile photo, project screenshots, and a new Experience timeline section.
New Sections
AddedExperience section — vertical timeline with 4 roles (TrieTech, One X Tech, GIC, oCap Management) plus NUS education card
Real Content
ChangedHero — updated subtitle to "Co-Founder & CTO @ TrieTech · Full-Stack Engineer", real social links (GitHub, LinkedIn, Twitter/X, Email), and real description
ChangedAbout — added real profile photo (Roby.jpg), Singapore location, real bio paragraphs, and updated interest tags
ChangedSkills — replaced all placeholders with full real tech stack across 6 categories (Languages, Frontend, Backend, Database, DevOps & Cloud, Tools & Practices)
ChangedProjects — replaced placeholder cards with 5 real projects (Trivial, YogaPets, Aether, SaveNUS, Radomir) each with project images, real descriptions, and an award badge for Aether
ChangedContact — updated all links to real email (tanamaroby@gmail.com), LinkedIn, GitHub (tanamaroby), and Twitter/X (SCourtest)
Navigation
AddedExperience link added to Navbar between About and Skills
v0.1.1
Developer tooling update: added automated "bump the version" workflow to GitHub Copilot instructions.
Developer Tooling
Added"Bump the Version" workflow in Copilot instructions — collates git commits since last release, determines semver bump, and atomically updates data/changelog.ts, CHANGELOG.md, and package.json
v0.1.0
Initial public release. Built from the ground up with Next.js 16, Tailwind CSS v4, ShadCN UI, and Framer Motion.
Layout & Navigation
AddedSticky glass Navbar with scroll-aware styling, smooth entrance animation, and mobile drawer
AddedFooter with copyright, attribution, and changelog link
Sections
AddedHero section — animated background orbs, headline, social links, and CTA buttons
AddedAbout section — avatar, stats grid, bio, and interest badges
AddedSkills section — grouped technical toolkit organized by category
AddedProjects section — cards with tech badges, featured label, GitHub and demo links
AddedContact section — email CTA and social link grid
Design System
AddedFull light / dark color token system via CSS custom properties
AddedNamed theme variables for accent gradients and hero background orbs