Publicolio is a high-end, editorial-grade portfolio generator for developers. It converts GitHub profiles into stunning, responsive single-page applications with zero configuration.
- Technical Discovery & Socratic Gate
- Infrastructure Setup (Vite + React + Tailwind v4 + Lucide)
- GitHub API Integration with CORS proxy
- Global Reset & Design Tokens (index.css)
- Theme Barrel Export System
- Base Theme Props and Types
- Initial Theme Set: Liquid Glass, Bento Grid, Minimalism, Neubrutalism
- Fixed 360px Sidebar with real-time preview
- Repository search and filtering
- Multi-repo selection (All/None toggles)
- Short URL generation & Deployment pipeline
- Theme Options Schema: Added
ThemeOptionsfor Stats, Avatar, Color, and Layout. - LandingBuilder Redesign: Premium editor controls integrated into the sidebar.
- Theme Overhaul: All themes upgraded to support option-driven, premium layouts.
- Interactive Preview: Real-time feedback wired for all editor options.
- Added a post-copy support modal that appears after successful deploy link copy.
- Modal includes direct actions for GitHub Star and Fork.
- Added
Maybe laterandDon't show againactions. - Persisted permanent skip preference in builder local storage so users can opt out permanently.
- Redesigned support modal with layered visual effects, animated entry, and staggered content reveals.
- Added decorative gradient shimmer bar and ambient floating glow elements for richer presentation.
- Improved CTA clarity with icon-led Star/Fork cards and helper copy.
- Added keyboard support:
Esccloses the support popup. - Adjusted trigger behavior so popup appears on new deploy flow, not on update-link flow.
- Rewrote
README.mdinto a production-grade open-source format with clearer structure and wording. - Added cleaner sections for runtime model, end-to-end flow, deployment checklist, and operations contracts.
- Improved discoverability by adding direct Contributing and License sections at the end of the README.
- Added
LICENSEwith MIT license text (Nishal K and contributors). - Added
CONTRIBUTING.mdwith setup, quality checks, branch/PR guidance, and issue reporting template. - Updated
package.jsonwith"license": "MIT"metadata.
- Documented returning-user builder cache behavior (restored profile snapshot, selections, and generated short URL).
- Documented
Update Linkflow and shortener backend requirement to preserve same code (shortCode/code/slug). - Added troubleshooting guidance for update-link cases where backend still returns a different slug.
- Corrected DNS custom-domain target example to host-only (
username.github.io).
- Updated deploy service to support
preserveSlugmode when user clicksUpdate Link. - Frontend now sends existing short code hints (
shortCode,code,slug) to shortener worker during update. - Added explicit guard: if backend returns a different slug, UI now shows a clear error instead of silently generating a new link.
Deploy Portfoliostill creates new links as normal;Update Linknow enforces same-link behavior.
- Added local cache for builder preferences in
localStorage(username, selected theme, theme options, short-link domain mode). - Added persistence for last generated
shortUrlso returning users can continue with the same link flow after refresh. - Added cached profile snapshot restoration so returning users see repos/themes/link panel immediately after reload (not just username).
- Added per-user repository selection memory and restore logic so previous repo picks are kept when data is fetched again.
- Cache intentionally excludes GitHub token for safety.
- Added an
Update Linkbutton to the deployed-link panel so users can regenerate a link after editing theme/repo settings without clicking reset first. - Kept
Resetas a secondary action and improved deployed-state controls for faster iteration. - Update action reuses existing deploy flow and auto-copy behavior.
- Added a crawler-friendly Open Graph image at
public/og-cover.pngwith1200x630dimensions. - Updated
index.htmlsocial metadata to use PNG (og:imageandtwitter:image) instead of SVG for better platform compatibility. - Added explicit OG image metadata (
og:image:type, width, height, alt, secure_url) to improve preview detection.
- Updated builder deploy flow so the generated portfolio URL is copied to clipboard automatically after clicking
Deploy Portfolio. - Added success alert message:
Link copiedimmediately after successful copy. - Wired the existing manual copy button to the same clipboard helper and added a fallback path for environments without Clipboard API support.
- Diagnosed live fetch failure on
app.publicolio.qzz.io: deployed bundle was missingVITE_CORS_PROXY_URL, causing GitHub profile fetch to fail in production. - Updated
.github/workflows/deploy-pages.ymlto read VITE values from either Actions Variables or Secrets. - Added workflow guard step to fail fast when
VITE_CORS_PROXY_URLis empty, preventing silent broken deployments. - Updated README deployment notes to mention both Variables and Secrets are supported.
- Initialized local git repository with
mainbranch and pushed project tohttps://github.com/nishal21/Publicolio.git. - Added
.envand.env.*to.gitignore, kept.env.exampletracked, and removed local.envfrom version control before push. - Confirmed branch tracking is set (
origin/main) and working tree is clean after push.
- Replaced personal domain examples in README with template domains (
app.example.comandshort.example.com). - Clarified DNS target for GitHub Pages custom domain must be
nishal21.github.io(no/Publicoliopath). - Added explicit fallback guidance for default project URL:
https://nishal21.github.io/Publicolio/.
- Added direct links to the live worker sources in README:
- Shortener gist:
nishal21/ba187199cd00ea6623b6cf4407e3a48d - CORS proxy repo:
nishal21/portfolio-cors-proxy
- Shortener gist:
- Updated worker contract notes to match real behavior (
?url=requirement, custom token header,URL_DBKV binding).
- Replaced default Vite template README with a complete Publicolio project README.
- Added architecture and runtime flow explanation for builder mode vs renderer mode.
- Added full setup steps, environment variable documentation, and Cloudflare worker contracts.
- Added deployment guidance for static hosts and GitHub hosting notes.
- Added troubleshooting section for shortener and GitHub fetch issues.
- Fixed shortener POST payload mismatch causing
400 Missing longUrlagainst Cloudflare Worker/api/shorten. - Updated frontend shortener request body to send both
longUrlandurlkeys for compatibility across worker versions. - This preserves current fail-safe behavior: if shortener still fails, deployment falls back to full portfolio URL.
- Fixed deploy flow so shortener request failures no longer block portfolio deployment.
- Updated
generateShortUrlto fall back to the original full portfolio URL when the shortener endpoint errors, times out, or fails CORS. - Cleared stale builder error state at deploy start to prevent outdated shortener errors from lingering in the UI.
- Added a new builder control to choose short-link domain mode:
Auto,workers.dev, orCustom. - Added support for
VITE_SHORTENER_WORKERS_DOMAINandVITE_SHORTENER_CUSTOM_DOMAINso users can explicitly choose which hostname appears in generated short links. - Updated
generateShortUrlto optionally rewrite the returned short URL hostname while preserving path/slug. - Added
VITE_SHORTENER_URLto local.envand expanded.env.examplefor GitHub hosting configuration.
- Fixed short URL generation config mismatch by supporting both
VITE_SHORTENER_URLandVITE_SHORTENER_API_URLingenerateShortUrl. - Updated deploy error messaging in the builder to reference both supported variable names.
- Updated
.env.exampleto include the canonicalVITE_SHORTENER_URLentry while keeping backward compatibility.
- Fixed builder preview state where clicking Fetch could keep the preview pane at a stale scroll position, making Aurora appear cut off with a large empty area.
- Added a preview scroll container ref in
LandingBuilderand forced scroll-to-top on fetch start/success and on theme switch. - Verified
LandingBuilder.tsxhas no TypeScript errors after the change.
- Updated
fetchDeveloperDatato switch repo endpoint dynamically:- With token:
GET /user/repos?type=owner&sort=updated&per_page=100 - Without token:
GET /users/{username}/repos?sort=updated&per_page=100
- With token:
- Forced GitHub API calls through the CORS proxy so the worker token (
env.GITHUB_TOKEN) is consistently applied when no custom token is provided. - Kept custom token usage builder-only and excluded from deploy URLs.
- Resolved editor diagnostics by switching
LandingBuilderto direct theme imports.
- Removed builder-side hard limit that auto-selected only the first 8 repos after fetch.
- Simplified
api.tsrepo mapping to use raw GitHub repo API results directly (no smart-pool dedupe merge side effects). - Verified no fork exclusion and no hardcoded repo slicing remains in frontend fetch/render flow.
- Made editor controls collapsible so the repository picker remains reachable on shorter viewport heights.
- Stabilized repo selector layout by removing collapsing flex constraints and giving the repo list an explicit scrollable max height.
- Removed static marketing copy from Liquid Glass hero (
Liquid Lens Modeand scrollingfrosted pane / bevel edge / specular highlights / liquid lenstext). - Replaced that section with fetched-user data chips (top languages and repository names) so the theme reflects live profile data.
- Rebuilt Aurora theme from scratch with a distinct visual language (matte aurora-poster style), avoiding Liquid Glass lookalike styling.
- Added new structure: atmospheric hero, language chip rail, optional avatar insight block, stat rail, and
Aurora Atlasproject cards. - Preserved all editor controls (
showStats,showAvatar,showBio,layout,repoSort,cardStyle,textScale,accentColor). - Resolved lingering editor diagnostics by switching
LandingBuildertheme imports to explicit.tsxpaths. - Fixed sidebar disappearance by changing Aurora background layers from viewport-fixed to container-scoped absolute positioning.
- Fixed Aurora hero heading rendering issue that produced a full-width gradient block instead of readable name text.
- Improved sidebar repo panel scrolling with explicit flex shrink boundaries and contained vertical overflow behavior.
- Rebuilt all 6 themes with top-first composition and tighter vertical rhythm to remove large empty zones.
- Added useful editor controls: Avatar/Bio/Stats toggles, Layout density, Repo sort, Card style, Text scale, and Accent color.
- Wired editor state to live preview and deployment links so shared portfolios preserve chosen settings.
- Extended deployed portfolio renderer to parse and apply editor options from URL query params.
- Cleaned CSS and module import warnings; verified production build passes.
- Liquid Glass: Redesigned with spinning conic avatar rings, deep ambient orbs, and glassmorphism cards.
- Bento Grid: Upgraded with frosted stat boxes and language chip tracks.
- Minimalism: Converted to a massive magazine-style layout with brutalist shadows.
- Neubrutalism: Added rainbow accent bars and watermark index numbers.
- Terminal: Created a high-fidelity "hacker" theme with mac-styled window chrome.
- Aurora: Introduced animated gradient typography and glowing avatar orbs.
- Fixed OXC transform errors in LiquidGlass.
- Increased repo fetch limit to 30.
- Implemented real-time repo search in the builder sidebar.
- Added All / None repo selection logic.