A modern, responsive portfolio website built with Svelte, TypeScript, and Tailwind CSS. This website features a centralized theme system, JSON-based data structure, and is designed to be easily customizable for multiple users.
/src
/config
theme.config.ts # š Centralized theme configuration
design.config.ts # šØ Centralized design configuration (NEW!)
/lib
/designs # šØ Design-specific components - 8 unique designs!
/modern-minimalist # Clean professional layout
/split-screen # Sidebar navigation layout
/bento-grid # Dashboard-style grid layout
/terminal # CLI/terminal aesthetic
/horizontal-scroll # Side-scrolling sections
/fullscreen-slider # Slideshow-style sections
/magazine-grid # Editorial asymmetric layout
/parallax-layers # Depth with parallax scrolling
/components # Shared base components
/data # JSON data files
portfolio.json
/services # Data service layer
dataService.ts
/types # TypeScript interfaces
portfolio.types.ts
design.types.ts # Design system types (NEW!)
/styles
components.css # Reusable component styles
App.svelte # Main application component
main.ts # Application entry point
npm install
npm run dev
http://localhost:5173
npm run build
The built files will be in the dist
folder, ready to deploy.
Select from 8 distinct portfolio designs:
Edit src/config/design.config.ts
and change the export line:
export const ACTIVE_DESIGN = terminal; // Change this!
Available Designs:
See DESIGN_GUIDE.md
and 8-DESIGNS-COMPLETE.md
for detailed design descriptions!
Edit the file: src/lib/data/portfolio.json
This JSON file contains all your portfolio data:
Example:
{
"personalInfo": {
"name": "Your Name",
"title": "Full Stack Developer",
"email": "[email protected]",
"resumeUrl": "https://docs.google.com/document/d/YOUR_RESUME_ID/edit"
}
}
This is the easiest way to completely change the look of your website!
Edit the file: src/config/theme.config.ts
At the bottom of the file, find this line:
export const ACTIVE_THEME = darkDeveloperTheme;
Change it to one of the available themes:
darkDeveloperTheme
- Modern, professional dark theme (default)vibrantPurpleTheme
- Creative, bold purple thememinimalGreenTheme
- Clean, professional green themeExample:
// Switch to purple theme
export const ACTIVE_THEME = vibrantPurpleTheme;
That's it! Save the file and your entire website will use the new theme.
To create your own custom theme:
src/config/theme.config.ts
darkDeveloperTheme
)ACTIVE_THEME
constant to use your new themeExample:
const myCustomTheme: Theme = {
name: 'My Custom Theme',
colors: {
primary: '#FF6B6B',
primaryDark: '#E85A5A',
// ... customize all colors
},
fonts: {
heading: "'Your Font', sans-serif",
body: "'Your Font', sans-serif",
mono: "'Your Mono Font', monospace"
},
// ... other properties
};
// Activate your theme
export const ACTIVE_THEME = myCustomTheme;
All reusable component styles are in: src/styles/components.css
Each class is clearly labeled:
.btn-primary
, .btn-secondary
, .btn-outline
.card-glass
, .card
, .card-project
.section
, .section-header
, .section-subtitle
.badge-skill
, .badge-tag
, .badge-status
You can modify these classes to change the styling throughout the entire website.
Your resume link should be a Google Drive document link. To set it up:
resumeUrl
in src/lib/data/portfolio.json
The resume button appears in:
This website is designed to be easily customized for different users. Each user can have:
portfolio.json
with their informationACTIVE_THEME
in theme.config.ts
portfolio.json
with their datatheme.config.ts
If you have a domain with Hostinger, see the detailed step-by-step guide:
š HOSTINGER-DEPLOYMENT.md - Complete guide for deploying to Hostinger
This guide covers:
.htaccess
for SPA routingYou can also deploy this website to:
npm install -g vercel && vercel
dist
folder to netlify.com/dropfirebase init && firebase deploy
dist
folder contentsTo test your website on other devices in the same WiFi network:
npm run dev -- --host
Then access the Network URL shown in the terminal from any device on your network.
When you're ready to use Supabase instead of JSON:
npm install @supabase/supabase-js
Update src/lib/services/dataService.ts
:
Create corresponding tables in Supabase matching your JSON structure
Feel free to fork this project and customize it for your needs. If you find bugs or have suggestions, please open an issue.
This project is open source and available for personal and commercial use.
For questions or issues:
Happy Coding! š
Built with ā¤ļø using Svelte, TypeScript, and Tailwind CSS