feat: revamped project page
| Before Width: | Height: | Size: 661 KiB After Width: | Height: | Size: 661 KiB | 
| Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB | 
| Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB | 
| Before Width: | Height: | Size: 696 KiB After Width: | Height: | Size: 696 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB | 
| Before Width: | Height: | Size: 272 KiB After Width: | Height: | Size: 272 KiB | 
|  | @ -1,50 +1,6 @@ | ||||||
| <script> | <script> | ||||||
| 	import videowallImage from '$lib/assets/videowall.jpeg'; | 	import ProjectCard from './ProjectCard.svelte'; | ||||||
| 	import videowallLogo from '$lib/assets/videowall-logo.png'; | 	import projects from './projects-cards'; | ||||||
| 	import ticketDashboardImage from '$lib/assets/ticketdashboard.png'; |  | ||||||
| 	import ticketDashboardLogo from '$lib/assets/triple-logo.png'; |  | ||||||
| 	import zaantjeImage from '$lib/assets/zaantje.png'; |  | ||||||
| 	import zaantjeLogo from '$lib/assets/zaantje-logo.png'; |  | ||||||
| 	import ProjectCard from '$lib/components/ProjectCard.svelte'; |  | ||||||
| 
 |  | ||||||
| 	let projects = [ |  | ||||||
| 		{ |  | ||||||
| 			id: 1, |  | ||||||
| 			link: '#', |  | ||||||
| 			headerImage: videowallImage, |  | ||||||
| 			headerSubTitle: 'Private Project', |  | ||||||
| 			title: 'Videowall', |  | ||||||
| 			description: `An internal application to control an impressive 6x5 monitor setup with a user-friendly |  | ||||||
| 										frontend built with React and Next.js utilizing a powerful backend developed in Golang.`, |  | ||||||
| 			logo: videowallLogo, |  | ||||||
| 			contributors: [], |  | ||||||
| 			date: '2021' |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			id: 2, |  | ||||||
| 			link: '#', |  | ||||||
| 			headerImage: ticketDashboardImage, |  | ||||||
| 			headerSubTitle: 'Private Project', |  | ||||||
| 			title: 'Ticket Dashboard', |  | ||||||
| 			description: `Web app that consolidates tickets from various sources into one view for easy navigation, filters, and search for efficient  |  | ||||||
| 			ticket management. Developed with Next.js for frontend and Golang for backend.`, |  | ||||||
| 			logo: ticketDashboardLogo, |  | ||||||
| 			contributors: [], |  | ||||||
| 			date: '2020' |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			id: 3, |  | ||||||
| 			link: 'https://zaantje.com', |  | ||||||
| 			headerImage: zaantjeImage, |  | ||||||
| 			headerSubTitle: 'Personal Project', |  | ||||||
| 			title: 'Zaantje', |  | ||||||
| 			description: `A SPA crafted with Nuxt.js and Vue.js, backed by Sanity CMS, taking you  |  | ||||||
| 										on a virtual tour of Zaandam, showcasing locations of famous music videos.`, |  | ||||||
| 			logo: zaantjeLogo, |  | ||||||
| 			contributors: [], |  | ||||||
| 			date: '2020' |  | ||||||
| 		} |  | ||||||
| 	]; |  | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <svelte:head> | <svelte:head> | ||||||
|  | @ -56,7 +12,7 @@ | ||||||
| </svelte:head> | </svelte:head> | ||||||
| 
 | 
 | ||||||
| <main class="container mx-auto px-4 py-8 text-left"> | <main class="container mx-auto px-4 py-8 text-left"> | ||||||
| 	<h2 class="text-3xl font-bold mb-8">My Projects</h2> | 	<h2 class="text-3xl font-bold mb-8">Projects</h2> | ||||||
| 
 | 
 | ||||||
| 	<p class="text-lg leading-relaxed mb-8"> | 	<p class="text-lg leading-relaxed mb-8"> | ||||||
| 		Here, you'll find a curated collection of projects that I've either created or contributed to as | 		Here, you'll find a curated collection of projects that I've either created or contributed to as | ||||||
|  |  | ||||||
|  | @ -1,17 +1,16 @@ | ||||||
| <script> | <script lang="ts"> | ||||||
| 	import { Avatar } from '@skeletonlabs/skeleton'; | 	import { Avatar } from '@skeletonlabs/skeleton'; | ||||||
| 
 | 
 | ||||||
| 	export let link = ''; | 	import type { Project } from './projects-cards'; | ||||||
| 	export let headerImage = ''; | 
 | ||||||
| 	export let headerSubTitle = ''; | 	export let link: Project['link']; | ||||||
| 	export let title = ''; | 	export let headerImage: Project['headerImage']; | ||||||
| 	export let description = ''; | 	export let headerSubTitle: Project['headerSubTitle']; | ||||||
| 	export let logo = ''; | 	export let title: Project['title']; | ||||||
| 	/** | 	export let description: Project['description']; | ||||||
| 	 * @type {any[]} | 	export let logo: Project['logo']; | ||||||
| 	 */ | 	export let contributors: Project['contributors']; | ||||||
| 	export let contributors = []; | 	export let date: Project['date']; | ||||||
| 	export let date = ''; |  | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <a class="card bg-initial card-hover overflow-hidden" href={link}> | <a class="card bg-initial card-hover overflow-hidden" href={link}> | ||||||
							
								
								
									
										15
									
								
								src/routes/projects/projects-assets.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,15 @@ | ||||||
|  | import videowallImage from '$lib/assets/projects/videowall.jpeg'; | ||||||
|  | import videowallLogo from '$lib/assets/projects/videowall-logo.png'; | ||||||
|  | import ticketDashboardImage from '$lib/assets/projects/ticketdashboard.png'; | ||||||
|  | import ticketDashboardLogo from '$lib/assets/projects/triple-logo.png'; | ||||||
|  | import zaantjeImage from '$lib/assets/projects/zaantje.png'; | ||||||
|  | import zaantjeLogo from '$lib/assets/projects/zaantje-logo.png'; | ||||||
|  | 
 | ||||||
|  | export { | ||||||
|  | 	videowallImage, | ||||||
|  | 	videowallLogo, | ||||||
|  | 	ticketDashboardImage, | ||||||
|  | 	ticketDashboardLogo, | ||||||
|  | 	zaantjeImage, | ||||||
|  | 	zaantjeLogo | ||||||
|  | }; | ||||||
							
								
								
									
										60
									
								
								src/routes/projects/projects-cards.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,60 @@ | ||||||
|  | import { | ||||||
|  | 	ticketDashboardImage, | ||||||
|  | 	ticketDashboardLogo, | ||||||
|  | 	videowallImage, | ||||||
|  | 	videowallLogo, | ||||||
|  | 	zaantjeImage, | ||||||
|  | 	zaantjeLogo | ||||||
|  | } from './projects-assets'; | ||||||
|  | 
 | ||||||
|  | interface Contributor { | ||||||
|  | 	name: string; | ||||||
|  | 	imageSrc: string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface Project { | ||||||
|  | 	link?: string; | ||||||
|  | 	headerImage: string; | ||||||
|  | 	headerSubTitle: string; | ||||||
|  | 	title: string; | ||||||
|  | 	description: string; | ||||||
|  | 	logo: string; | ||||||
|  | 	contributors: Contributor[]; | ||||||
|  | 	date: string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const projects: Project[] = [ | ||||||
|  | 	{ | ||||||
|  | 		headerImage: videowallImage, | ||||||
|  | 		headerSubTitle: 'Private Project', | ||||||
|  | 		title: 'Videowall', | ||||||
|  | 		description: `An internal application to control an impressive 6x5 monitor setup with a user-friendly
 | ||||||
|  | 										frontend built with React and Next.js utilizing a powerful backend developed in Golang.`,
 | ||||||
|  | 		logo: videowallLogo, | ||||||
|  | 		contributors: [], | ||||||
|  | 		date: '2021' | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		headerImage: ticketDashboardImage, | ||||||
|  | 		headerSubTitle: 'Private Project', | ||||||
|  | 		title: 'Ticket Dashboard', | ||||||
|  | 		description: `Web app that consolidates tickets from various sources into one view for easy navigation, filters, and search for efficient 
 | ||||||
|  | 			ticket management. Developed with Next.js for frontend and Golang for backend.`,
 | ||||||
|  | 		logo: ticketDashboardLogo, | ||||||
|  | 		contributors: [], | ||||||
|  | 		date: '2020' | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		link: 'https://zaantje.com', | ||||||
|  | 		headerImage: zaantjeImage, | ||||||
|  | 		headerSubTitle: 'Personal Project', | ||||||
|  | 		title: 'Zaantje', | ||||||
|  | 		description: `A SPA crafted with Nuxt.js and Vue.js, backed by Sanity CMS, taking you 
 | ||||||
|  | 										on a virtual tour of Zaandam, showcasing locations of famous music videos.`,
 | ||||||
|  | 		logo: zaantjeLogo, | ||||||
|  | 		contributors: [], | ||||||
|  | 		date: '2020' | ||||||
|  | 	} | ||||||
|  | ]; | ||||||
|  | 
 | ||||||
|  | export default projects; | ||||||