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>
|
||||
import videowallImage from '$lib/assets/videowall.jpeg';
|
||||
import videowallLogo from '$lib/assets/videowall-logo.png';
|
||||
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'
|
||||
}
|
||||
];
|
||||
import ProjectCard from './ProjectCard.svelte';
|
||||
import projects from './projects-cards';
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
|
@ -56,7 +12,7 @@
|
|||
</svelte:head>
|
||||
|
||||
<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">
|
||||
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';
|
||||
|
||||
export let link = '';
|
||||
export let headerImage = '';
|
||||
export let headerSubTitle = '';
|
||||
export let title = '';
|
||||
export let description = '';
|
||||
export let logo = '';
|
||||
/**
|
||||
* @type {any[]}
|
||||
*/
|
||||
export let contributors = [];
|
||||
export let date = '';
|
||||
import type { Project } from './projects-cards';
|
||||
|
||||
export let link: Project['link'];
|
||||
export let headerImage: Project['headerImage'];
|
||||
export let headerSubTitle: Project['headerSubTitle'];
|
||||
export let title: Project['title'];
|
||||
export let description: Project['description'];
|
||||
export let logo: Project['logo'];
|
||||
export let contributors: Project['contributors'];
|
||||
export let date: Project['date'];
|
||||
</script>
|
||||
|
||||
<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;
|