A modern, responsive, and accessible portfolio website built with HTML, CSS, and JavaScript.
π Live Demo
- π Dynamic multi-language support with user-configurable languages
- π¨ Multiple theme options with an intuitive theme picker
- π± Fully responsive design with improved mobile navigation
- βΏ Comprehensive accessibility features
- π Dynamic content loading
- π Theme system with 10 beautiful themes
- π SEO-friendly
- π Sections for:
- About Me
- Education
- Skills
- Projects
- Experience
- Interests
- Contact
- π± Sliding menu for better mobile navigation
- π Smooth transitions and animations
- π Touch-friendly interface
- π― Easy-to-tap buttons and links
- π Optimized spacing for mobile screens
- π¨ Theme picker optimized for mobile
- Clone the repository
- Open
index.htmlin your browser - Customize the content by modifying:
js/config.jsfor your personal informationjs/translations.jsfor language translationscss/styles.cssfor styling customizationcss/themes.cssfor theme customization
The portfolio supports dynamic language configuration:
- Languages are configured through the configuration panel
- Users can add new languages and translations
- All UI elements support translation
- Language settings persist across sessions
- Easy addition of new languages without code changes
- Open the configuration panel
- Navigate to Language Settings
- Add your new language
- Provide translations for all content
- Save your changes
The system will automatically:
- Add the language to the language picker
- Create necessary translation entries
- Update the UI to support the new language
Available themes:
- Default (Pink/Purple)
- Modern Dark
- Light Minimalist
- Ocean
- Forest
- Sunset
- Nordic
- Cyberpunk
- Pastel
- Monochrome
Each theme includes:
- Consistent color scheme
- Dark/light variants
- Mobile-optimized styles
- Accessible contrast ratios
- Smooth transitions
The mobile navigation system features:
- Hamburger menu for space efficiency
- Sliding drawer navigation
- Touch-friendly tap targets
- Smooth animations
- Overlay background
- Easy section access
- Proper spacing and contrast
The configuration in config.js follows this structure:
{
"languageSettings": {
"primary": "en", // Your primary language code
"translations": ["fr"] // Additional language codes for translations
},
"themeSettings": {
"default": "default", // Default theme to use
"available": ["default", "dark", "light", "ocean", "forest"]
},
"showProfilePic": true, // Whether to show the profile picture
"profilePic": "images/profile-placeholder.jpg", // Profile picture path
"content": {
"en": { // Primary language content
"personal": {
"name": "Your Name",
"title": "Your Title",
"about": "About text",
"email": "[email protected]",
"phone": "Phone number",
"location": "Location",
"additionalInfo": "Additional information"
},
"social": {
"linkedin": "LinkedIn URL",
"github": "GitHub URL",
"twitter": "Twitter URL",
"email": "mailto:[email protected]"
},
"education": [
{
"period": "YYYY-YYYY",
"degree": "Degree name",
"institution": "Institution name",
"mention": "Honors/Mention",
"details": ["Detail 1", "Detail 2"]
}
],
"skills": {
"Category 1": ["Skill 1", "Skill 2"],
"Category 2": ["Skill 3", "Skill 4"]
},
"projects": [
{
"title": "Project name",
"description": "Project description",
"image": "path/to/project-image.jpg",
"demoLink": "Demo URL",
"sourceLink": "Source code URL"
}
],
"experience": [
{
"period": "MM/YYYY",
"title": "Position title",
"company": "Company name",
"details": ["Responsibility 1", "Achievement 2"]
}
],
"interests": [
{
"title": "Category title",
"items": ["Interest 1", "Interest 2", "Interest 3"]
}
]
},
"fr": { // Translation content (same structure as primary language)
// ... French content with the same structure
}
}
}To add a new language:
- Add the language code to
translationsarray inlanguageSettings - Create a new language object in the
contentobject using the language code - Fill in all the content following the same structure as the English content
Example for adding Spanish:
{
"languageSettings": {
"primary": "en",
"translations": ["fr", "es"] // Added Spanish
},
"content": {
"en": { ... },
"fr": { ... },
"es": { // Spanish content
"personal": {
"name": "Su Nombre",
"title": "Su TΓtulo",
// ... rest of the Spanish content
}
}
}
}You can configure the profile picture in two ways:
- Visibility Control:
{
"showProfilePic": false, // Set to false to hide the profile picture
"profilePic": "images/your-profile-pic.jpg"
}- Image Path:
{
"showProfilePic": true,
"profilePic": "images/your-profile-pic.jpg" // Update with your image path
}Edit the configuration in js/config.js:
- Personal information
- Education history
- Skills
- Projects
- Work experience
- Interests
The portfolio supports multiple languages. Currently implemented:
- English (en)
- French (fr)
To modify translations, edit `