Skip to main content

Overview

All text content in Dev Showcase is stored in JSON files located in wwwroot/languages/. The portfolio supports multiple languages (English and Spanish by default), with easy extensibility for additional languages.

Language Files

Content is organized in two main files:
  • wwwroot/languages/en.json - English content
  • wwwroot/languages/es.json - Spanish content
Both files follow the same structure, making it easy to maintain consistency across languages.

Content Structure

The JSON files are organized into logical sections:
{
  "header": { ... },
  "navigation": { ... },
  "introduction": { ... },
  "skills": { ... },
  "projects": { ... },
  "education": { ... }
}

Header Section

Customize your name and typewriter effect:
"typewriter": {
  "prefix": "I'm ",
  "phrases": [
    "Ricardo Alejandro Pérez Santillán",
    "a Data enthusiast",
    "an automation addict"
  ]
},
"header": {
  "hello": "#HELLO WORLD",
  "name": "I'm Ricardo Alejandro Pérez Santillán"
}
Customization:
  • typewriter.phrases: Add or modify rotating phrases (3-5 phrases work best)
  • header.hello: Change the greeting text
  • header.name: Update your full name

Introduction Section

Update your personal information and professional summary:
"introduction": {
  "aboutTitle": "About Me",
  "aboutContent_dataScience": "I am a software developer with...",
  "aboutContent_webDev": "Web developer with a background in...",
  "aboutContent_dataAnalyst": "Data Analyst with a background in...",
  "skillsTitle": "Skills & Technologies",
  "panels": {
    "webDev": "Web Development",
    "desktopDev": "Desktop Development",
    "databases": "Databases",
    "erp": "ERP",
    "versionControl": "Version Control",
    "methodologies": "Methodologies"
  },
  "certificationsTitle": "Certifications",
  "goalTitle": "Professional Goal",
  "goalContent": "Evolve toward Data Science roles...",
  "journeyTitle": "My Journey",
  "journeyContent": "My journey through technology led me..."
}
The portfolio can display different “About Me” content based on context. Update all aboutContent_* fields to match your various professional roles.

Skills Section

Skill Categories

Define your skill panels:
"skills": {
  "panels": {
    "webDev": "Web Development",
    "dataScience": "Data Science",
    "databases": "Databases",
    "desktopDev": "Desktop Development",
    "versionControl": "Version Control",
    "generalProgramming": "General Programming"
  }
}

Progress Bars

Set proficiency levels for each technology (0-100):
"progressBars": {
  "webDev": {
    "htmlcss": 90,
    "aspnet": 85,
    "csharp": 85,
    "javascript": 65
  },
  "dataScience": {
    "excel": 90,
    "python": 75,
    "powerbi": 75,
    "pandasnumpy": 70,
    "matplotlibseaborn": 65
  },
  "databases": {
    "sqlserver": 85,
    "oracle": 85,
    "mysql": 80,
    "derby": 30
  }
}
Guidelines for proficiency values:
  • 90-100: Expert level, extensive production experience
  • 75-89: Advanced, comfortable with complex tasks
  • 60-74: Intermediate, can work independently
  • 40-59: Basic understanding, needs guidance
  • 0-39: Beginner, limited experience

Soft Skills

Add your soft skills with proficiency ratings:
"progressBars": {
  "softSkills": {
    "teamwork": 88,
    "confidence": 82,
    "independence": 85,
    "initiative": 80,
    "problemSolving": 90
  }
}
List of soft skills to display:
"soft": {
  "criticalThinking": "Critical Thinking",
  "analyticalThinking": "Analytical Thinking",
  "communication": "Effective Communication",
  "teamwork": "Teamwork",
  "adaptability": "Adaptability",
  "timeManagement": "Time Management",
  "attention": "Attention to Detail",
  "persistence": "Persistence",
  "workEthic": "Work Ethics"
}

Projects Section

Showcase your professional and personal projects:

Work Experience

"projects": {
  "work": {
    "blockTitle": "Professional Experience",
    "daikin": {
      "name": "Daikin Manufacturing México",
      "role": "Software Developer",
      "period": "Sept 2024 – Dec 2025",
      "description": "Development and support of enterprise applications...",
      "resp": {
        "maintenance": "Maintenance of critical production applications",
        "apis": "Design and implementation of internal APIs",
        "sql": "SQL query and stored procedure optimization",
        "ux": "UX/UI improvements in internal systems",
        "agile": "Participation in agile methodologies and Scrum"
      },
      "projects": {
        "overtime": "OverTime Request — Overtime request management",
        "etiquetas": "Labels — Production label generation system",
        "masterLabel": "Master Label — Master labeling control",
        "budget": "Budget Control — Budget control module"
      }
    }
  }
}

Personal Projects

"personal": {
  "blockTitle": "Personal Projects & Datathons",
  "devportfolio": {
    "name": "DevPortfolio",
    "short": "Professional portfolio",
    "description": "Professional web portfolio with spatial design...",
    "h1": "Dark mode design with animated particles",
    "h2": "Multilanguage ES/EN support with dynamic JSON",
    "h3": "Vocational charts with Chart.js",
    "h4": "Infinite carousel with touch support",
    "h5": "Downloadable CV in two languages"
  },
  "wids2022": {
    "name": "WiDS Datathon 2022",
    "short": "Breast cancer detection",
    "description": "Participation in the WiDS 2022 datathon...",
    "h1": "Exploratory analysis of clinical data",
    "h2": "Preprocessing and missing value handling",
    "h3": "Binary classification model training",
    "h4": "Evaluation with AUC-ROC metrics"
  }
}
Each project supports up to 5 highlights (h1-h5) and multiple image descriptions. Use these to showcase key features and achievements.

Education Section

Academic Training

"education": {
  "academic": {
    "title": "Academic Training",
    "forge": {
      "institution": "Fundación Forge",
      "program": "Professional competencies",
      "period": "Nov 2025 – Dec 2025"
    },
    "smart": {
      "institution": "Smart Teaching",
      "program": "English Level B2 TOEFL IBT",
      "period": "Feb 2025 – Nov 2025"
    },
    "utan": {
      "institution": "Universidad Tangamanga",
      "program": "Information Technology Engineering",
      "period": "Jul 2022 – Aug 2025"
    }
  }
}

Professional Development

"professional": {
  "title": "Professional Development",
  "cluster": {
    "institution": "Automotive Cluster",
    "program": "Technological trends in the automotive sector"
  }
}

Certifications

"certificates": {
  "forge": {
    "title": "Forge Badges",
    "commitment": "Commitment to Learning",
    "teamwork": "Teamwork",
    "achievement": "Achievement Orientation",
    "leadership": "Personal Leadership",
    "year": "2025"
  },
  "udemy": {
    "title": "Udemy",
    "javascript": "JavaScript — Expert",
    "javascriptDate": "2024",
    "python": "Python — Data Analysis",
    "pythonDate": "2025"
  },
  "mos": {
    "title": "Microsoft Office Specialist",
    "excel": "Excel — MOS 2019",
    "word": "Word — MOS 2019",
    "powerpoint": "PowerPoint — MOS 2019",
    "year": "2019"
  }
}

Adding New Sections

To add a completely new content section:
  1. Add the content to JSON:
"newSection": {
  "title": "My New Section",
  "content": "Section content here",
  "items": [
    "Item 1",
    "Item 2"
  ]
}
  1. Update both language files (en.json and es.json) with the same structure
  2. Reference the content in your HTML/JavaScript using the JSON keys
Always maintain the same JSON structure across all language files. Missing keys will cause errors when users switch languages.
Update navigation menu text:
"navigation": {
  "introduction": "Introduction",
  "skills": "Skills",
  "projects": "Projects & Experience",
  "education": "Education",
  "downloadCV": "Download CV"
}
Customize social media tooltips:
"sidebar": {
  "socialTitle": "Social Media",
  "tooltips": {
    "whatsapp": "WhatsApp",
    "linkedin": "LinkedIn",
    "github": "GitHub",
    "twitter": "X (Twitter)",
    "gmail": "Gmail"
  }
}

Testing Your Changes

1

Edit JSON files

Update content in wwwroot/languages/en.json and wwwroot/languages/es.json
2

Validate JSON syntax

Use a JSON validator to ensure proper formatting (no trailing commas, proper quotes)
3

Test language switching

Run your portfolio and switch between languages to verify all content displays correctly
4

Check responsive views

Test on mobile and tablet to ensure content fits properly

Best Practices

  • Keep descriptions concise and impactful (2-3 sentences)
  • Use consistent tense (present for current roles, past for previous)
  • Include specific metrics and achievements where possible
  • Maintain parallel structure across similar sections
  • Keep proficiency percentages honest and realistic

Common Issues

Clear your browser cache or do a hard refresh (Ctrl+Shift+R or Cmd+Shift+R). The browser may be caching the old JSON file.
Ensure both language files have identical keys. Check for typos in key names and verify JSON syntax is valid.
Ensure your JSON files are saved with UTF-8 encoding. Use Unicode escape sequences for special characters if needed (e.g., \u00e9 for é).

Next Steps

Theming

Customize colors, fonts, and visual theme

Styling Guide

Learn about CSS architecture and component styling

Build docs developers (and LLMs) love