Skip to content

BuiltByOctane/openfolio

Repository files navigation

Openfolio

Instant portfolio for every developer. Paste a GitHub URL, pick a template, share the link.

Openfolio turns a public GitHub profile into a hosted portfolio site in seconds. Built for backend, DevOps, QA, data, and every developer who'd rather ship code than design a website.

  • No login. Uses the public GitHub API.
  • No editing. Regenerate to update.
  • No trackers. No cookies, no analytics.
  • Open source. Ship a template or a feature.

Quickstart

pnpm install
pnpm dev

Open http://localhost:3000.

Other package managers work too — npm install && npm run dev, yarn, bun.

Environment

Copy .env.local.example to .env.local and fill in:

Var Purpose
NEXT_PUBLIC_SITE_URL Canonical site origin used in metadata, OG tags, sitemap, robots, JSON-LD.

Tech

Project layout

Feature-sliced under src/. Two top-level buckets: feature/ (self-contained vertical slices) and shared/ (cross-feature reusables). Route files in src/app/ are thin re-exports — logic lives in the feature.

src/
  app/                              Next.js App Router (thin shims, segment config)
    layout.tsx                      root layout, metadata, JSON-LD
    page.tsx                        → feature/home
    [slug]/                         → feature/portfolio (page + opengraph-image)
    build/github/, build/preview/   → feature/build
    api/fetch-github/, api/publish/ → feature/build, feature/publish
    dev/templates/                  → feature/dev
    robots.ts, sitemap.ts, globals.css, not-found.tsx

  feature/
    home/pages/                     landing page
    build/
      pages/                        github-page, preview-page
      components/                   preview-client, published-dialog, template-picker
      api/                          github-client, fetch-github-handler
    publish/api/                    publish-handler
    portfolio/
      pages/                        portfolio-page, portfolio-og-image
      components/                   template-renderer
    dev/
      pages/                        templates-page (gallery)
      utils/                        sample-portfolio fixtures

  shared/
    lib/                            drafts.ts, profiles.ts (file-based stores)
    types/portfolio.ts              PortfolioData zod schema + TemplateId union
    ui/templates/                   11 portfolio templates + index.ts

data/profiles/                      Published portfolio JSON (runtime store)
public/                             Static assets (favicon, manifest)

Layout rules: code used by ONE feature stays inside that feature. Two consumers → promote to shared/. Files + folders are kebab-case; default exports are PascalCase. Path alias @/*./src/*.

Contributing

Openfolio is open source and we want your help. Read CONTRIBUTING.md before opening a PR.

Quick ideas:

  • New template themes — design a portfolio template, drop it in src/shared/ui/templates/, register it.
  • New features — better GitHub parsing, custom domains, OG image generator, analytics opt-in.
  • Bug fixes & polish — parsing edge cases, a11y, layout, performance.
  • Docs & examples — README, template authoring guide, screenshots, recorded demos.

By contributing you agree to abide by the Code of Conduct.

License

MIT © Delbin George and contributors.

Made by octane.team.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages