Description
Builders currently have no native way to export their compiled DevLink profile, including their completed project showcases, verified skills, endorsements, and hackathon awards, into standardized export formats (JSON / Markdown) for use in external resume builders or personal static sites.
Steps to Reproduce
- Open profile settings (
frontend/src/routes/_app.settings.tsx).
- Observe there are no options to export profile data.
- Users must manually copy text and project URLs one by one.
Expected Behavior
- Backend:
GET /api/v1/export/portfolio should support ?format=json (standard JSON Resume schema) and ?format=markdown (formatted README/Resume file).
- Frontend: Add an 'Export Portfolio' modal with one-click download buttons on the portfolio route (
portfolio.$username.tsx).
Implementation Hints
Backend (backend/app/routers/export_routes.py):
@router.get("/portfolio")
async def export_portfolio(
format: str = Query("json", regex="^(json|markdown)$"),
current_user: User = Depends(get_current_user),
db: AsyncSession = Depends(get_db)
):
profile_data = await compile_full_user_portfolio(db, current_user.id)
if format == "json":
return JSONResponse(content=profile_data)
markdown_doc = render_portfolio_to_markdown(profile_data)
return Response(
content=markdown_doc,
media_type="text/markdown",
headers={"Content-Disposition": f"attachment; filename={current_user.username}_portfolio.md"}
)
Affected Files
- backend/app/routers/export_routes.py
- frontend/src/routes/_app.settings.tsx
- frontend/src/routes/portfolio.$username.tsx
Labels
type:feature, level:beginner, GSSoC-26
Description
Builders currently have no native way to export their compiled DevLink profile, including their completed project showcases, verified skills, endorsements, and hackathon awards, into standardized export formats (
JSON/Markdown) for use in external resume builders or personal static sites.Steps to Reproduce
frontend/src/routes/_app.settings.tsx).Expected Behavior
GET /api/v1/export/portfolioshould support?format=json(standard JSON Resume schema) and?format=markdown(formatted README/Resume file).portfolio.$username.tsx).Implementation Hints
Backend (
backend/app/routers/export_routes.py):Affected Files
Labels
type:feature, level:beginner, GSSoC-26