Build templates
for everyone
Got a portfolio design that stands out? Contribute it to Portfolio Pulse. Approved templates are added to the library and available to every user — forever, with your name on it.
Template library
Live templates
Every template below was built by the team or approved from a community PR. Yours could be next.
Your template here
Open a PR and it could be
in the library next week.
Contribute
Two ways to get your design in
Whether you write code or design in Figma, there's a path for you.
Code submission
DevelopersFork the repo, build your template as a Next.js component, and open a PR. If it passes review it ships to all users.
Fork the templates repo
github.com/csedgeOfficial/portfolio-templates — one click to fork.
Create your template
Add a folder under /templates/your-template-name/. Follow the Template API (one default export, accepts PortfolioData as props).
Add preview + metadata
Include preview.png (1280×800), metadata.json (name, author, tags, description), and a README.
Open a pull request
PR to main. Title: feat(template): your-template-name. Reviews are handled by @csedgeOff within 7 days.
$ git clone https://github.com/csedgeOfficial/portfolio-templates
$ cp -r templates/_starter templates/my-template
Design concept
DesignersNo coding skills? Open a GitHub Issue with your Figma link, screenshots, or rough mockup. The community or CSEdge team will build it.
Design your concept
Sketch it in Figma, Framer, Penpot, or even pen and paper. Focus on the visual identity — layout, color, typography.
Open a GitHub Issue
Use the "Design Concept" issue template. Link your Figma or attach screenshots. Describe the mood and who it is for.
Community discussion
Others can comment, refine, and upvote (👍). High-upvote concepts move to the implementation queue faster.
CSEdge team implements
@csedgeOff picks up approved concepts and builds the component. You get author credit on the final template.
What makes a strong concept
For developers
Template API spec
Every template is a single default-exported React component that receivesPortfolioDataas its only prop. Nothing else.
import type { PortfolioData } from "@/types/portfolio";
export default function MyTemplate({
data,
}: {
data: PortfolioData;
}) {
return (
<main>
<h1>{data.name}</h1>
<p>{data.about}</p>
{/* Your design goes here.
Use Tailwind. No external CSS files.
Responsive at sm / md / lg. */}
</main>
);
}Process
What happens after you submit
PR opened
You open a pull request to csedgeOfficial/portfolio-templates on GitHub.
Review by @csedgeOff
Reviewed within 7 days for API compliance, responsiveness, and design quality.
Feedback & iteration
Minor feedback? One revision round. Major issues? Clear comment explaining why.
Ships to all users
Merged and deployed. Your template shows up in the picker for every user, with your name.
All reviews are on GitHub, not email
Organisation: @csedgeOfficial · Reviews handled by @csedgeOff
Ready to contribute?
Your template could be the one thousands of developers choose for their portfolio. It takes one PR.
