Skip to content

Commit 06c1b59

Browse files
authored
Merge pull request #3 from modeitsch/code-quality
refactor: Improve code quality and organization
2 parents eb82249 + b45420a commit 06c1b59

12 files changed

Lines changed: 280 additions & 225 deletions

File tree

src/lib/data/contact.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { Mail, Github, Linkedin, Twitter } from 'lucide-svelte';
2+
import type { ContactMethod, FAQ } from '$lib/types';
3+
4+
export const contactMethods: ContactMethod[] = [
5+
{
6+
href: "mailto:moshedeitsch@outlook.com",
7+
icon: Mail,
8+
title: "Email",
9+
description: "moshedeitsch [at] outlook [dot] com",
10+
gradient: "from-blue-500 to-blue-600"
11+
},
12+
{
13+
href: "https://linkedin.com/in/moshe-deitsch",
14+
icon: Linkedin,
15+
title: "LinkedIn",
16+
description: "Connect professionally",
17+
gradient: "from-blue-600 to-blue-700"
18+
},
19+
{
20+
href: "https://github.com/modeitsch",
21+
icon: Github,
22+
title: "GitHub",
23+
description: "Check out my code",
24+
gradient: "from-gray-700 to-gray-900"
25+
},
26+
{
27+
href: "https://twitter.com/modeitsch",
28+
icon: Twitter,
29+
title: "Twitter",
30+
description: "Follow my journey",
31+
gradient: "from-sky-400 to-sky-500"
32+
}
33+
];
34+
35+
export const faqs: FAQ[] = [
36+
{
37+
question: "What kind of projects do you work on?",
38+
answer: "I specialize in modern web development, including frontend applications, full-stack solutions, and API development. I work with technologies like SvelteKit, React, Node.js, and more."
39+
},
40+
{
41+
question: "How do you prefer to communicate?",
42+
answer: "Email is usually the best way to reach me initially. For ongoing projects, I'm flexible with communication methods including video calls, Slack, or other platforms you prefer."
43+
},
44+
{
45+
question: "Are you available for freelance work?",
46+
answer: "Yes! I'm always interested in exciting projects. Feel free to reach out with details about your project, timeline, and requirements."
47+
}
48+
];

src/lib/data/experiences.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { Experience } from '$lib/types';
2+
3+
export const experiences: Experience[] = [
4+
{
5+
title: "Senior Full Stack Developer",
6+
company: "Tech Innovations Inc.",
7+
period: "2023 - Present",
8+
description: "Leading development of modern web applications using React, Node.js, and cloud technologies."
9+
},
10+
{
11+
title: "Frontend Developer",
12+
company: "Creative Solutions Ltd.",
13+
period: "2021 - 2023",
14+
description: "Built responsive user interfaces and improved user experience for various client projects."
15+
},
16+
{
17+
title: "Junior Developer",
18+
company: "StartUp Co.",
19+
period: "2020 - 2021",
20+
description: "Developed and maintained web applications while learning modern development practices."
21+
}
22+
];

src/lib/data/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Re-export all data for easy imports
2+
export { homeSkills, aboutSkills } from './skills';
3+
export { featuredProjects, allProjects } from './projects';
4+
export { experiences } from './experiences';
5+
export { techStackPreview, allTechnologies } from './technologies';
6+
export { contactMethods, faqs } from './contact';

src/lib/data/projects.ts

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import type { Project } from '$lib/types';
2+
3+
// Featured projects for home page
4+
export const featuredProjects: Project[] = [
5+
{
6+
title: "Modern Portfolio Website",
7+
description: "A responsive portfolio built with SvelteKit, Tailwind CSS, and modern web technologies.",
8+
tech: ["SvelteKit", "TypeScript", "Tailwind CSS"],
9+
github: "https://github.com/modeitsch",
10+
demo: "https://modeitsch.com"
11+
},
12+
{
13+
title: "Open Source Contributions",
14+
description: "Various contributions to open source projects and personal coding experiments.",
15+
tech: ["JavaScript", "Python", "Git"],
16+
github: "https://github.com/modeitsch",
17+
demo: "https://github.com/modeitsch"
18+
},
19+
{
20+
title: "Web Development Projects",
21+
description: "Collection of web applications and tools built with modern frameworks and libraries.",
22+
tech: ["React", "Vue.js", "Node.js"],
23+
github: "https://github.com/modeitsch",
24+
demo: "https://modeitsch.com"
25+
}
26+
];
27+
28+
// All projects for projects page
29+
export const allProjects: Project[] = [
30+
{
31+
title: "Modern Portfolio Website",
32+
description: "A fully responsive, modern portfolio website built with SvelteKit and TailwindCSS. Features dark/light mode, smooth animations, and optimized performance.",
33+
tech: ["SvelteKit", "TailwindCSS", "GitHub Pages"],
34+
github: "https://github.com/modeitsch/sveltekit-blog",
35+
demo: "https://modeitsch.github.io/sveltekit-blog"
36+
},
37+
{
38+
title: "React Hebrew Docs",
39+
description: "Contributing to the Hebrew translation of React.js documentation, making React more accessible to Hebrew-speaking developers.",
40+
tech: ["React", "i18n", "Documentation"],
41+
github: "https://github.com/modeitsch/he.reactjs.org",
42+
demo: "https://github.com/modeitsch/he.reactjs.org"
43+
},
44+
{
45+
title: "Web Components Library",
46+
description: "A collection of reusable web components built with modern JavaScript, focusing on accessibility and performance.",
47+
tech: ["JavaScript", "Web Components", "A11y"],
48+
github: "https://github.com/modeitsch",
49+
demo: "https://github.com/modeitsch"
50+
},
51+
{
52+
title: "API Dashboard",
53+
description: "A comprehensive dashboard for monitoring and managing APIs with real-time analytics and performance metrics.",
54+
tech: ["Node.js", "Express", "MongoDB"],
55+
github: "https://github.com/modeitsch",
56+
demo: "https://github.com/modeitsch"
57+
},
58+
{
59+
title: "E-commerce Platform",
60+
description: "Full-stack e-commerce solution with payment integration, inventory management, and admin dashboard.",
61+
tech: ["React", "Node.js", "Stripe"],
62+
github: "https://github.com/modeitsch",
63+
demo: "https://github.com/modeitsch"
64+
},
65+
{
66+
title: "DevTools Extension",
67+
description: "Browser extension for developers with productivity tools, code snippets, and debugging utilities.",
68+
tech: ["JavaScript", "Chrome API", "CSS"],
69+
github: "https://github.com/modeitsch",
70+
demo: "https://github.com/modeitsch"
71+
}
72+
];

src/lib/data/skills.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { Code, Palette, Zap } from 'lucide-svelte';
2+
import type { Skill } from '$lib/types';
3+
4+
// Skills for home page
5+
export const homeSkills: Skill[] = [
6+
{
7+
icon: Code,
8+
title: "Full Stack Development",
9+
description: "Building modern web applications with cutting-edge technologies and best practices."
10+
},
11+
{
12+
icon: Palette,
13+
title: "UI/UX Design",
14+
description: "Creating beautiful, intuitive user interfaces that provide exceptional user experiences."
15+
},
16+
{
17+
icon: Zap,
18+
title: "Performance Optimization",
19+
description: "Optimizing applications for speed, scalability, and exceptional performance."
20+
}
21+
];
22+
23+
// Skills for about page (using emoji icons)
24+
export const aboutSkills: Skill[] = [
25+
{
26+
icon: () => '🎨',
27+
title: "Frontend Development",
28+
description: "Creating beautiful, responsive user interfaces with modern frameworks and libraries."
29+
},
30+
{
31+
icon: () => '⚙️',
32+
title: "Backend Development",
33+
description: "Building robust APIs and server-side applications with scalable architecture."
34+
},
35+
{
36+
icon: () => '🚀',
37+
title: "DevOps & Deployment",
38+
description: "Implementing CI/CD pipelines and managing cloud infrastructure for optimal performance."
39+
}
40+
];

src/lib/data/technologies.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Technologies list for home page tech stack preview
2+
export const techStackPreview: string[] = [
3+
'JavaScript',
4+
'TypeScript',
5+
'Svelte',
6+
'React',
7+
'Vue.js',
8+
'Node.js',
9+
'Python',
10+
'Tailwind CSS'
11+
];
12+
13+
// Full technologies list for about page
14+
export const allTechnologies: string[] = [
15+
"JavaScript",
16+
"TypeScript",
17+
"React",
18+
"Svelte",
19+
"Vue.js",
20+
"Node.js",
21+
"Python",
22+
"HTML5",
23+
"CSS3",
24+
"Tailwind CSS",
25+
"MongoDB",
26+
"PostgreSQL",
27+
"Git",
28+
"Docker",
29+
"AWS"
30+
];

src/lib/types/index.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import type { ComponentType, SvelteComponent } from 'svelte';
2+
3+
// Skill type for skill cards
4+
export interface Skill {
5+
icon: ComponentType<SvelteComponent> | (() => string);
6+
title: string;
7+
description: string;
8+
}
9+
10+
// Project type for project cards
11+
export interface Project {
12+
title: string;
13+
description: string;
14+
tech: string[];
15+
github: string;
16+
demo: string;
17+
}
18+
19+
// Experience type for about page
20+
export interface Experience {
21+
title: string;
22+
company: string;
23+
period: string;
24+
description: string;
25+
}
26+
27+
// Contact method type for contact page
28+
export interface ContactMethod {
29+
href: string;
30+
icon: ComponentType<SvelteComponent>;
31+
title: string;
32+
description: string;
33+
gradient: string;
34+
}
35+
36+
// FAQ type for contact page
37+
export interface FAQ {
38+
question: string;
39+
answer: string;
40+
}

src/routes/+layout.svelte

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import Header from '$lib/components/Header.svelte';
44
import Footer from '$lib/components/Footer.svelte';
55
import KeyboardHints from '$lib/components/KeyboardHints.svelte';
6+
import ScrollProgress from '$lib/components/ScrollProgress.svelte';
7+
import ThreeBackground from '$lib/components/ThreeBackground.svelte';
8+
import ScrollAnimations from '$lib/components/ScrollAnimations.svelte';
69
import { onMount } from 'svelte';
710
import { theme } from '$lib/stores/theme.js';
811
import { initAudio } from '$lib/stores/sound.js';
@@ -34,6 +37,11 @@
3437
});
3538
</script>
3639

40+
<!-- Global components -->
41+
<ScrollProgress />
42+
<ThreeBackground />
43+
<ScrollAnimations />
44+
3745
<div class="min-h-screen flex flex-col">
3846
<a href="#main-content" class="skip-link">Skip to main content</a>
3947
<Header />

src/routes/+page.svelte

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,20 @@
11
<script>
2-
import { ArrowRight, Code, Palette, Zap, Github, ExternalLink, Guitar, MapPin } from 'lucide-svelte';
3-
import ThreeBackground from '$lib/components/ThreeBackground.svelte';
4-
import ScrollAnimations from '$lib/components/ScrollAnimations.svelte';
2+
import { ArrowRight, Github, ExternalLink, Guitar, MapPin } from 'lucide-svelte';
53
import SkillCard3D from '$lib/components/SkillCard3D.svelte';
64
import ProjectCard3D from '$lib/components/ProjectCard3D.svelte';
7-
import ScrollProgress from '$lib/components/ScrollProgress.svelte';
85
import ScrollIndicator from '$lib/components/ScrollIndicator.svelte';
9-
10-
const skills = [
11-
{
12-
icon: Code,
13-
title: "Full Stack Development",
14-
description: "Building modern web applications with cutting-edge technologies and best practices."
15-
},
16-
{
17-
icon: Palette,
18-
title: "UI/UX Design",
19-
description: "Creating beautiful, intuitive user interfaces that provide exceptional user experiences."
20-
},
21-
{
22-
icon: Zap,
23-
title: "Performance Optimization",
24-
description: "Optimizing applications for speed, scalability, and exceptional performance."
25-
}
26-
];
6+
import { homeSkills, featuredProjects, techStackPreview } from '$lib/data';
277
28-
const projects = [
29-
{
30-
title: "Modern Portfolio Website",
31-
description: "A responsive portfolio built with SvelteKit, Tailwind CSS, and modern web technologies.",
32-
tech: ["SvelteKit", "TypeScript", "Tailwind CSS"],
33-
github: "https://github.com/modeitsch",
34-
demo: "https://modeitsch.com"
35-
},
36-
{
37-
title: "Open Source Contributions",
38-
description: "Various contributions to open source projects and personal coding experiments.",
39-
tech: ["JavaScript", "Python", "Git"],
40-
github: "https://github.com/modeitsch",
41-
demo: "https://github.com/modeitsch"
42-
},
43-
{
44-
title: "Web Development Projects",
45-
description: "Collection of web applications and tools built with modern frameworks and libraries.",
46-
tech: ["React", "Vue.js", "Node.js"],
47-
github: "https://github.com/modeitsch",
48-
demo: "https://modeitsch.com"
49-
}
50-
];
8+
// Use imported data
9+
const skills = homeSkills;
10+
const projects = featuredProjects;
5111
</script>
5212

5313
<svelte:head>
5414
<title>Moshe Deitsch - Developer & Guitarist</title>
5515
<meta name="description" content="Moshe Deitsch - Coding for breakfast, coding for lunch... playing guitar for brunch. Full-stack developer passionate about modern web technologies." />
5616
</svelte:head>
5717

58-
<!-- Scroll Progress -->
59-
<ScrollProgress />
60-
61-
<!-- 3D Background -->
62-
<ThreeBackground />
63-
64-
<!-- Scroll Animations -->
65-
<ScrollAnimations />
66-
6718
<!-- Hero Section -->
6819
<section class="hero-section relative min-h-screen flex items-center justify-center bg-gradient-to-br from-gray-50 via-white to-blue-50 dark:from-gray-900 dark:via-gray-900 dark:to-blue-900 overflow-hidden" role="banner" aria-label="Hero section with introduction">
6920
<!-- Background Elements -->
@@ -178,7 +129,7 @@
178129
<div class="mt-16 text-center">
179130
<p class="text-sm text-gray-500 dark:text-gray-400 mb-6">Technologies I work with</p>
180131
<div class="flex flex-wrap justify-center gap-4">
181-
{#each ['JavaScript', 'TypeScript', 'Svelte', 'React', 'Vue.js', 'Node.js', 'Python', 'Tailwind CSS'] as tech}
132+
{#each techStackPreview as tech}
182133
<span class="px-4 py-2 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 text-sm font-medium rounded-full border border-gray-200 dark:border-gray-700 hover:border-primary-300 dark:hover:border-primary-600 transition-colors">
183134
{tech}
184135
</span>

0 commit comments

Comments
 (0)