Skip to content

One-File Portfolio & Resume — Generated from profile.json #70

Description

@praveenscience

The Vision

One-File-Tools started as a collection of single-file developer tools. Now it's time to grow into something bigger.

We're introducing two new pillars alongside tools:

Pillar What Output
Tools Single-file developer utilities tools/*.html (existing)
Resume Print-ready, ATS-compliant resumes resume/themes/*.html (new)
Portfolio Visual developer portfolios portfolio/themes/*.html (new)

All three share the same philosophy: one file, zero dependencies, open and use.

Both resumes and portfolios are generated from a single profile.json file. Edit your data once, get a resume AND a portfolio. Deploy anywhere.


Why This Matters

Every developer needs a portfolio and a resume. Most solutions today involve:

  • Paid templates with subscription lock-in
  • Framework-heavy apps that break after 6 months
  • Markdown-to-PDF tools that produce ugly output
  • Online builders that hold your data hostage

Our approach: One JSON file with your data. One build command. Two beautiful, self-contained HTML files that you own forever. No framework. No server. No account. Works offline.


Architecture

Project Structure

One-File-Tools/
├── tools/                         # Pillar 1: Developer tools (existing)
│   ├── *.html
│   └── *.png
│
├── resume/                        # Pillar 2: Resume themes
│   ├── themes/
│   │   ├── classic.html           # Generated from profile.json
│   │   ├── modern.html
│   │   └── ...
│   ├── screenshots/
│   │   ├── classic.png
│   │   └── ...
│   └── index.html                 # Generated: resume theme showcase
│
├── portfolio/                     # Pillar 3: Portfolio themes
│   ├── themes/
│   │   ├── developer.html         # Generated from profile.json
│   │   ├── designer.html
│   │   └── ...
│   ├── screenshots/
│   │   ├── developer.png
│   │   └── ...
│   └── index.html                 # Generated: portfolio theme showcase
│
├── profile.json                   # Your data (edit this)
├── tools.json                     # Tool registry (existing)
├── build.js                       # Master build script (updated)
└── index.html                     # Generated: hub page

Build Flow

                    ┌───────────────┐
                    │  profile.json │
                    └──────┬────────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
      ┌───────────┐ ┌───────────┐ ┌───────────┐
      │ Resume    │ │ Portfolio │ │ Hub Page  │
      │ Themes    │ │ Themes    │ │ index.html│
      │ (HTML+CSS)│ │ (HTML+CSS │ │           │
      │ Zero JS   │ │  +JS)     │ │           │
      └───────────┘ └───────────┘ └───────────┘
                                        ▲
                    ┌──────────────┐    │
                    │  tools.json  │────┘
                    └──────────────┘
node build.js          # Builds everything: hub, tools, portfolio themes, resume themes

Hub Landing Page (index.html)

The current index.html becomes a hub with top-level navigation:

  • Home — Hero section, project overview, quick links
  • Tools — Existing tool showcase (search, filter, categories)
  • Portfolio — Theme gallery with live previews
  • Resume — Theme gallery with live previews and print buttons
  • Extensible for future pillars (Blogs, Landing Pages, etc.)

profile.json Schema

This is the master data file. Edit it once — every theme reads from it.

Full example profile.json (click to expand)
{
  "meta": {
    "version": "1.0.0",
    "lastUpdated": "2026-06-26"
  },

  "personal": {
    "firstName": "Jane",
    "lastName": "Doe",
    "displayName": "Jane Doe",
    "title": "Senior Full Stack Developer",
    "headline": "Building scalable web applications with modern JavaScript",
    "bio": "A passionate developer with 8+ years of experience building products that serve millions of users. I care deeply about developer experience, performance, and clean architecture. When I'm not coding, you'll find me rock climbing or brewing specialty coffee.",
    "photo": "https://example.com/photo.jpg",
    "location": {
      "city": "San Francisco",
      "state": "California",
      "country": "United States",
      "remote": true
    },
    "contact": {
      "email": "jane@example.com",
      "phone": "+1-555-0123",
      "website": "https://janedoe.dev"
    },
    "social": {
      "github": "https://github.com/janedoe",
      "linkedin": "https://linkedin.com/in/janedoe",
      "twitter": "https://x.com/janedoe",
      "youtube": "",
      "blog": "https://blog.janedoe.dev",
      "stackoverflow": "",
      "dribbble": "",
      "behance": "",
      "medium": "",
      "devto": ""
    }
  },

  "summary": "Experienced full stack developer specializing in React, Node.js, and cloud architecture. Passionate about open source, developer tooling, and building products that make developers' lives easier. Speaker at 10+ conferences, maintainer of 3 popular open source projects with 15K+ combined GitHub stars.",

  "skills": [
    {
      "category": "Frontend",
      "items": [
        { "name": "JavaScript / TypeScript", "level": "expert" },
        { "name": "React / Next.js", "level": "expert" },
        { "name": "HTML5 & CSS3", "level": "expert" },
        { "name": "Tailwind CSS", "level": "advanced" },
        { "name": "Vue.js", "level": "intermediate" }
      ]
    },
    {
      "category": "Backend",
      "items": [
        { "name": "Node.js", "level": "expert" },
        { "name": "Python", "level": "intermediate" },
        { "name": "PostgreSQL", "level": "advanced" },
        { "name": "Redis", "level": "advanced" },
        { "name": "GraphQL", "level": "advanced" }
      ]
    },
    {
      "category": "DevOps & Cloud",
      "items": [
        { "name": "AWS (EC2, S3, Lambda, RDS)", "level": "advanced" },
        { "name": "Docker & Kubernetes", "level": "advanced" },
        { "name": "CI/CD (GitHub Actions, Jenkins)", "level": "advanced" },
        { "name": "Terraform", "level": "intermediate" }
      ]
    },
    {
      "category": "Tools & Practices",
      "items": [
        { "name": "Git & GitHub", "level": "expert" },
        { "name": "Agile / Scrum", "level": "advanced" },
        { "name": "TDD / Testing", "level": "advanced" },
        { "name": "System Design", "level": "advanced" }
      ]
    }
  ],

  "experience": [
    {
      "company": "TechCorp Inc.",
      "role": "Senior Full Stack Developer",
      "location": "San Francisco, CA",
      "type": "full-time",
      "startDate": "2022-03",
      "endDate": null,
      "current": true,
      "url": "https://techcorp.example.com",
      "logo": "",
      "description": "Leading the frontend architecture team for a B2B SaaS platform serving 50K+ enterprise users.",
      "highlights": [
        "Architected a micro-frontend system that reduced deploy times by 60% and enabled independent team releases",
        "Led migration from legacy jQuery codebase to React, improving page load performance by 40%",
        "Built a real-time collaboration engine using WebSockets serving 10K concurrent connections",
        "Mentored 5 junior developers through structured code review and pair programming sessions"
      ],
      "techStack": ["React", "TypeScript", "Node.js", "PostgreSQL", "AWS", "Docker"]
    },
    {
      "company": "StartupXYZ",
      "role": "Full Stack Developer",
      "location": "Remote",
      "type": "full-time",
      "startDate": "2019-06",
      "endDate": "2022-02",
      "current": false,
      "url": "https://startupxyz.example.com",
      "logo": "",
      "description": "Core developer at a Series A fintech startup building payment infrastructure.",
      "highlights": [
        "Built the merchant onboarding flow from scratch, reducing signup time from 2 days to 15 minutes",
        "Designed and implemented a webhook delivery system processing 1M+ events daily with 99.97% reliability",
        "Introduced end-to-end testing with Cypress, reducing production bugs by 35%"
      ],
      "techStack": ["React", "Node.js", "Python", "PostgreSQL", "Redis", "Stripe API"]
    },
    {
      "company": "WebAgency Co.",
      "role": "Frontend Developer",
      "location": "New York, NY",
      "type": "full-time",
      "startDate": "2017-01",
      "endDate": "2019-05",
      "current": false,
      "url": "",
      "logo": "",
      "description": "Built responsive web applications for enterprise clients across healthcare, finance, and retail.",
      "highlights": [
        "Delivered 12+ client projects on time and within budget",
        "Built an internal component library used across 8 projects, reducing development time by 30%",
        "Introduced automated accessibility testing, achieving WCAG 2.1 AA compliance across all projects"
      ],
      "techStack": ["JavaScript", "React", "Sass", "Webpack", "Jest"]
    }
  ],

  "education": [
    {
      "institution": "University of California, Berkeley",
      "degree": "Bachelor of Science",
      "field": "Computer Science",
      "startDate": "2012",
      "endDate": "2016",
      "gpa": "3.8 / 4.0",
      "honors": ["Magna Cum Laude", "Dean's List (6 semesters)"],
      "relevantCourses": ["Data Structures & Algorithms", "Distributed Systems", "Machine Learning", "Computer Networks", "Database Systems"]
    }
  ],

  "projects": [
    {
      "name": "DevDash",
      "tagline": "Developer productivity dashboard",
      "description": "An open-source developer dashboard that aggregates GitHub activity, CI/CD pipeline status, and infrastructure monitoring into a single real-time view. Built for teams that want visibility without context-switching.",
      "thumbnail": "projects/devdash.png",
      "liveUrl": "https://devdash.example.com",
      "repoUrl": "https://github.com/janedoe/devdash",
      "techStack": ["React", "Node.js", "GraphQL", "Redis", "WebSockets"],
      "highlights": [
        "2,500+ GitHub stars",
        "Featured in JavaScript Weekly and Node Weekly",
        "Used by 500+ development teams worldwide"
      ],
      "featured": true,
      "category": "web",
      "year": 2024
    },
    {
      "name": "SnapCSS",
      "tagline": "Visual CSS debugging tool",
      "description": "A browser extension that lets you visually inspect, edit, and export CSS in real time. Think DevTools, but focused entirely on design iteration.",
      "thumbnail": "projects/snapcss.png",
      "liveUrl": "",
      "repoUrl": "https://github.com/janedoe/snapcss",
      "techStack": ["TypeScript", "Chrome Extensions API", "CSS"],
      "highlights": [
        "8,000+ Chrome Web Store installs",
        "4.8-star rating from 200+ reviews"
      ],
      "featured": true,
      "category": "tool",
      "year": 2023
    },
    {
      "name": "Notely",
      "tagline": "Markdown note-taking PWA",
      "description": "An offline-first Progressive Web App for Markdown note-taking with real-time sync, full-text search, and nested folder organization.",
      "thumbnail": "projects/notely.png",
      "liveUrl": "https://notely.example.com",
      "repoUrl": "https://github.com/janedoe/notely",
      "techStack": ["Svelte", "IndexedDB", "Service Workers", "CRDTs"],
      "highlights": [
        "Works entirely offline with automatic sync when online",
        "Conflict-free real-time collaboration using CRDTs"
      ],
      "featured": false,
      "category": "web",
      "year": 2023
    }
  ],

  "certifications": [
    {
      "name": "AWS Solutions Architect — Associate",
      "issuer": "Amazon Web Services",
      "date": "2024-01",
      "expiryDate": "2027-01",
      "credentialId": "AWS-SAA-C03-XXXXX",
      "url": "https://www.credly.com/badges/..."
    },
    {
      "name": "Google Cloud Professional Developer",
      "issuer": "Google Cloud",
      "date": "2023-06",
      "expiryDate": "2025-06",
      "credentialId": "GCP-PD-XXXXX",
      "url": ""
    }
  ],

  "publications": [
    {
      "title": "Scaling React Applications: Patterns and Anti-Patterns",
      "publisher": "Smashing Magazine",
      "date": "2025-03",
      "url": "https://smashingmagazine.com/2025/03/scaling-react-applications/",
      "type": "article"
    },
    {
      "title": "The Case for Server Components in 2025",
      "publisher": "CSS-Tricks",
      "date": "2025-01",
      "url": "https://css-tricks.com/server-components-2025/",
      "type": "article"
    }
  ],

  "talks": [
    {
      "title": "The Future of Server Components",
      "event": "ReactConf 2025",
      "date": "2025-05",
      "location": "Las Vegas, NV",
      "slidesUrl": "https://slides.com/janedoe/server-components",
      "videoUrl": "https://youtube.com/watch?v=...",
      "type": "conference"
    },
    {
      "title": "Building Offline-First Web Apps",
      "event": "JSConf EU 2024",
      "date": "2024-09",
      "location": "Berlin, Germany",
      "slidesUrl": "",
      "videoUrl": "https://youtube.com/watch?v=...",
      "type": "conference"
    }
  ],

  "awards": [
    {
      "title": "Open Source Contributor of the Year",
      "issuer": "DevAwards",
      "date": "2025",
      "description": "Recognized for significant open source contributions to the JavaScript ecosystem"
    }
  ],

  "languages": [
    { "language": "English", "proficiency": "native" },
    { "language": "Spanish", "proficiency": "conversational" },
    { "language": "Japanese", "proficiency": "basic" }
  ],

  "volunteer": [
    {
      "organization": "Code for America",
      "role": "Volunteer Developer",
      "url": "https://codeforamerica.org",
      "startDate": "2023-01",
      "endDate": null,
      "current": true,
      "description": "Building open-source civic tech tools for local government transparency and public data access."
    }
  ],

  "testimonials": [
    {
      "quote": "Jane is one of the most talented developers I've had the pleasure of working with. Her ability to break down complex architectural problems into clean, maintainable solutions is exceptional.",
      "author": "John Smith",
      "role": "CTO",
      "company": "TechCorp Inc.",
      "photo": ""
    },
    {
      "quote": "She didn't just write code — she elevated our entire engineering culture. Her code reviews alone made every developer on the team better.",
      "author": "Sarah Chen",
      "role": "VP of Engineering",
      "company": "StartupXYZ",
      "photo": ""
    }
  ],

  "interests": [
    "Open Source",
    "Developer Tooling",
    "System Design",
    "Rock Climbing",
    "Specialty Coffee",
    "Photography"
  ]
}

Schema Notes

Section Fields Used In
personal Name, title, headline, bio, photo, location, contact, social links Both
summary Professional summary paragraph Resume
skills Grouped by category, each with proficiency level Both
experience Companies, roles, dates, highlights, tech stack Both
education Institutions, degrees, honors, GPA, relevant courses Both
projects Name, description, thumbnail, URLs, tech stack, featured flag Portfolio (primary), Resume (optional)
certifications Issuer, credential ID, dates, verification URL Resume (primary), Portfolio (optional)
publications Title, publisher, date, URL, type Both
talks Title, event, date, slides/video URLs Portfolio (primary), Resume (optional)
awards Title, issuer, date, description Both
languages Language name, proficiency level Resume
volunteer Organization, role, dates, description Both
testimonials Quote, author, role, company, photo Portfolio only
interests List of hobbies/interests Portfolio (optional)

Proficiency levels for skills: expert, advanced, intermediate, beginner
Proficiency levels for languages: native, fluent, conversational, intermediate, basic
Empty strings ("") are treated as "not provided" and hidden in the output.


Phase 1: Resume Themes

Difficulty: Hard | Output: Pure HTML + CSS | Zero JavaScript

Hard Requirements

  • Zero JavaScript — the generated HTML file must contain no <script> tags whatsoever
  • A4 print-ready — must use @page { size: A4; } with proper margins
  • ATS-compliant — parsable by Applicant Tracking Systems (Greenhouse, Lever, Workday, etc.)
  • Browser to Print to PDF — printing from any browser must produce a clean, professional PDF
  • Single self-contained HTML file — all CSS inline, no external resources
  • Responsive — looks good on screen at any width AND in print

ATS Compliance Rules

ATS parsers are notoriously fragile. Every resume theme must follow these rules:

DO:
  Use semantic HTML: <h1> for name, <h2> for sections, <h3> for job titles
  Use standard section headings: "Summary", "Experience", "Education", "Skills"
  Use <ul>/<li> for lists of highlights and skills
  Use <time datetime="2022-03"> for dates
  Use <a href="..."> for links (email, website, LinkedIn)
  Keep layout single-column or simple two-column with CSS Grid
  Use system fonts (no Google Fonts — resume should work 100% offline)

DON'T:
  Use <table> for layout
  Use CSS columns or float-based layouts
  Use icon fonts or SVG icons for contact info (use text: "Email:", "Phone:")
  Use background colors for text (ATS can't read them)
  Use headers/footers (semantic <header>/<footer> are fine, but content
    in CSS fixed/sticky headers gets missed)
  Use abbreviations without expansion ("Sr. FSD" -> "Senior Full Stack Developer")

Print Optimization Rules

@page {
  size: A4;
  margin: 15mm 20mm;
}

@media print {
  body { font-size: 10pt; color: #000; background: #fff; }
  a { color: #000; text-decoration: none; }
  h2 { break-after: avoid; }
  section { break-inside: avoid; }
  .no-print { display: none; }
}

Starter Themes Needed

Theme Description Layout Vibe
classic Traditional professional resume Single column Conservative, corporate-safe
modern Contemporary with subtle design Two-column sidebar Clean, minimal color accents
compact Maximum information density Single column, tight spacing Dense, 1-page optimized

Contributors can propose additional themes. Each theme is a separate contribution.


Phase 2: Portfolio Themes

Difficulty: Hard | Output: HTML + CSS + JS (optional)

Requirements

  • Self-contained single HTML file (all CSS/JS inline)
  • Responsive design (mobile-first)
  • Dark and light mode via prefers-color-scheme (with optional manual toggle)
  • Smooth scroll navigation
  • All sections populated from profile.json — no hardcoded content
  • Footer with link back to One File Tools repo
  • Graceful handling of empty/missing fields (hide sections with no data)
  • Works offline after first load (no runtime API calls)
  • Google Fonts are acceptable (with system font fallback)

Sections (minimum)

  1. Hero — Name, title, headline, social links, call-to-action
  2. About — Bio, photo, location
  3. Skills — Visual representation (bars, tags, grouped cards, or radar chart)
  4. Projects — Featured project cards with thumbnails, descriptions, tech tags, live/repo links
  5. Experience — Timeline or card-based chronological layout
  6. Contact — Email, social links, optional contact form placeholder

Optional Sections (theme-dependent)

  • Education, Certifications, Publications, Talks, Awards, Testimonials, Interests

Starter Themes Needed

Theme Description Vibe
developer Code-focused, terminal/IDE aesthetic Monospace fonts, dark by default, syntax-highlight accents
designer Visual-first, image-heavy Large project thumbnails, whitespace, typography-driven
minimal Ultra-clean single-page No animations, fast-loading, content-focused

Contributors can propose additional themes. Creativity is encouraged — this is where you showcase YOUR design skills.


Phase 3: Hub Landing Page

Difficulty: Hard | Updates build.js and index.html

The current index.html (tool showcase) becomes a hub with top-level navigation across all three pillars.

Structure

+-----------------------------------------------------+
|  One File Tools                                      |
|  [Tools]  [Portfolio]  [Resume]                      |
+-----------------------------------------------------+
|                                                      |
|  Hero: "One file at a time."                         |
|  Three cards: Tools (15+) | Portfolio | Resume       |
|                                                      |
+-----------------------------------------------------+
|  Tools Section (existing functionality)              |
|  - Search, filter, category tabs                     |
|  - Tool cards with thumbnails                        |
+-----------------------------------------------------+
|  Portfolio Section                                   |
|  - Theme gallery with live preview thumbnails        |
|  - "Use this theme" links                            |
+-----------------------------------------------------+
|  Resume Section                                      |
|  - Theme gallery with preview thumbnails             |
|  - "Preview" and "Print" buttons                     |
+-----------------------------------------------------+
|  Footer                                              |
+-----------------------------------------------------+

Build Script Changes

  • build.js reads both tools.json and profile.json
  • Generates hub index.html with navigation
  • Generates resume/themes/*.html from profile data + theme templates
  • Generates portfolio/themes/*.html from profile data + theme templates
  • Generates resume/index.html and portfolio/index.html as showcase pages

Phase 4: Future Extensions

This architecture is intentionally extensible. Future pillars could include:

Pillar Description Status
Tools Single-file developer utilities Live
Resume Print-ready resumes from JSON This issue
Portfolio Developer portfolios from JSON This issue
Blog Single-file static blog templates Future
Landing Page Product/project landing pages Future
Email Signature HTML email signatures from JSON Future

Each new pillar follows the same pattern: a JSON data file, a build script, and themed single-file HTML output.


How to Contribute a Theme

For resume themes

  1. Pick an unclaimed theme from the table above, or propose a new one
  2. Create resume/themes/your-theme-name.html (or add a template function in the build script)
  3. Add a screenshot as resume/screenshots/your-theme-name.png
  4. Test: open in browser, print to PDF, verify A4 layout and ATS compliance
  5. Submit PR with branch add/resume-theme-your-theme-name

For portfolio themes

  1. Pick an unclaimed theme from the table above, or propose a new one
  2. Create portfolio/themes/your-theme-name.html (or add a template function in the build script)
  3. Add a screenshot as portfolio/screenshots/your-theme-name.png
  4. Test: open in browser, test responsive, test dark/light mode
  5. Submit PR with branch add/portfolio-theme-your-theme-name

Theme naming

Use kebab-case: classic.html, modern.html, developer.html, neon-terminal.html


Acceptance Criteria

Minimum Viable Delivery

  • profile.json with the full schema documented above, populated with example data
  • At least 1 resume theme (classic) — pure HTML+CSS, A4 print-ready, ATS-compliant
  • At least 1 portfolio theme (developer) — responsive, dark/light mode, all sections
  • Updated build.js that generates everything from a single node build.js command
  • Updated index.html hub page with Tools / Portfolio / Resume navigation
  • Updated ReadMe.md documenting the new pillars, profile.json schema, and build process
  • Updated Contributing.md with theme contribution guidelines
  • Updated .gitignore to include generated portfolio/resume files

Stretch Goals

  • 3+ resume themes
  • 3+ portfolio themes
  • JSON Schema validation (profile.schema.json)
  • CLI flags: node build.js --resume-only, node build.js --portfolio-only

Sub-Tasks

This is a multi-phase project. Each phase can be worked on independently.

  • Schema: Define and document profile.json with comprehensive example data
  • Resume — Classic theme: Single-column, ATS-compliant, A4 print-ready, zero JS
  • Resume — Modern theme: Two-column sidebar layout, ATS-compliant, A4 print-ready, zero JS
  • Resume — Compact theme: Dense single-page layout, ATS-compliant, A4 print-ready, zero JS
  • Portfolio — Developer theme: Code-focused, terminal aesthetic, dark mode, project showcase
  • Portfolio — Designer theme: Visual-first, image-heavy, typography-driven
  • Portfolio — Minimal theme: Ultra-clean, no animations, content-focused
  • Build system: Update build.js to generate resume + portfolio from profile.json
  • Hub page: Update index.html with Tools / Portfolio / Resume navigation
  • Documentation: Update ReadMe.md and Contributing.md

Labels

Hard — This is the first Hard-labeled issue in this project. It involves multi-file architecture, build system changes, advanced CSS (print media, ATS compliance), and design skills. This is not a beginner task — it's a showcase of what you can build.

Points: 50


A Note to Contributors

This issue is deliberately ambitious. You don't need to build everything — pick a phase or a single theme and own it. But if you want to take on the whole thing, go for it.

The best contributions here won't just work — they'll be beautiful. This is your chance to demonstrate real frontend craftsmanship: typography, layout, print design, responsive engineering, and clean architecture.

Show us what you've got.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions