mirror of
				https://github.com/bartvdbraak/hellob.art.git
				synced 2025-10-29 19:29:11 +00:00 
			
		
		
		
	feat: add project and repo urls
This commit is contained in:
		
							parent
							
								
									9624ec2cc2
								
							
						
					
					
						commit
						18501bf914
					
				
					 3 changed files with 64 additions and 44 deletions
				
			
		|  | @ -1,11 +1,12 @@ | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| 	import { Circle } from 'radix-icons-svelte'; | 	import { Circle, ExternalLink, GithubLogo } from 'radix-icons-svelte'; | ||||||
| 	import { Calendar, Scale } from 'lucide-svelte'; | 	import { Calendar, Scale } from 'lucide-svelte'; | ||||||
| 	import * as Card from '$lib/components/ui/card'; | 	import * as Card from '$lib/components/ui/card'; | ||||||
| 	import type { Project } from '$lib/content/projects'; | 	import type { Project } from '$lib/content/projects'; | ||||||
|  | 	import { Button } from '$lib/components/ui/button'; | ||||||
| 
 | 
 | ||||||
| 	export let projectsItem: Project; | 	export let projectsItem: Project; | ||||||
| 	let { logo, title, description, languages, license, year } = projectsItem; | 	let { logo, title, description, gitHubUrl, projectUrl, languages, license, year } = projectsItem; | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <Card.Root class="mb-6 inline-block hover:bg-muted/50"> | <Card.Root class="mb-6 inline-block hover:bg-muted/50"> | ||||||
|  | @ -16,11 +17,12 @@ | ||||||
| 				{description} | 				{description} | ||||||
| 			</Card.Description> | 			</Card.Description> | ||||||
| 		</div> | 		</div> | ||||||
| 		<div class="justify-self-end"> | 		<div class="h-full justify-self-end"> | ||||||
| 			<enhanced:img src={logo} class="rounded-sm" alt={`${title} logo`} /> | 			<enhanced:img src={logo} class="mb-2 rounded-sm" alt={`${title} logo`} /> | ||||||
| 		</div> | 		</div> | ||||||
| 	</Card.Header> | 	</Card.Header> | ||||||
| 	<Card.Content> | 	<Card.Content> | ||||||
|  | 		<div class="flex justify-between"> | ||||||
| 			<div class="flex space-x-4 text-sm text-muted-foreground"> | 			<div class="flex space-x-4 text-sm text-muted-foreground"> | ||||||
| 				{#each languages as language} | 				{#each languages as language} | ||||||
| 					<div class="flex items-center"> | 					<div class="flex items-center"> | ||||||
|  | @ -37,5 +39,20 @@ | ||||||
| 					{year} | 					{year} | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
|  | 			{#if gitHubUrl || projectUrl} | ||||||
|  | 				<div class="flex items-center"> | ||||||
|  | 					{#if gitHubUrl} | ||||||
|  | 						<Button variant="ghost" size="icon" href={gitHubUrl}> | ||||||
|  | 							<GithubLogo /> | ||||||
|  | 						</Button> | ||||||
|  | 					{/if} | ||||||
|  | 					{#if projectUrl} | ||||||
|  | 						<Button variant="ghost" size="icon" href={projectUrl}> | ||||||
|  | 							<ExternalLink /> | ||||||
|  | 						</Button> | ||||||
|  | 					{/if} | ||||||
|  | 				</div> | ||||||
|  | 			{/if} | ||||||
|  | 		</div> | ||||||
| 	</Card.Content> | 	</Card.Content> | ||||||
| </Card.Root> | </Card.Root> | ||||||
|  |  | ||||||
|  | @ -5,12 +5,6 @@ | ||||||
| 
 | 
 | ||||||
| <div class="w-full columns-1 gap-6 md:columns-2"> | <div class="w-full columns-1 gap-6 md:columns-2"> | ||||||
| 	{#each projects as project} | 	{#each projects as project} | ||||||
| 		{#if project.url} |  | ||||||
| 			<a href={project.url} target="_blank"> |  | ||||||
| 		<Projects.Item projectsItem={project} /> | 		<Projects.Item projectsItem={project} /> | ||||||
| 			</a> |  | ||||||
| 		{:else} |  | ||||||
| 			<Projects.Item projectsItem={project} /> |  | ||||||
| 		{/if} |  | ||||||
| 	{/each} | 	{/each} | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | @ -7,16 +7,20 @@ import omnidashLogo from '$lib/assets/projects/omnidash-logo.png?enhanced'; | ||||||
| import azureGeocodeMappingLogo from '$lib/assets/projects/azure-geocode-mapping-logo.png?enhanced'; | import azureGeocodeMappingLogo from '$lib/assets/projects/azure-geocode-mapping-logo.png?enhanced'; | ||||||
| import slayerWeightCalcLogo from '$lib/assets/projects/slayerweightcalc-logo.png?enhanced'; | import slayerWeightCalcLogo from '$lib/assets/projects/slayerweightcalc-logo.png?enhanced'; | ||||||
| 
 | 
 | ||||||
|  | // TODO: Use vite glob import to import all images from a folder and select them based on their name
 | ||||||
|  | // const gallery = Object.values(import.meta.glob('@assets/asso/*.{png,jpg,jpeg,PNG,JPEG}', { eager: true, as: 'url' }))
 | ||||||
|  | 
 | ||||||
| export type ProgrammingLanguage = { | export type ProgrammingLanguage = { | ||||||
| 	name: string; | 	name: string; | ||||||
| 	color: string; | 	color: string; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export type Project = { | export type Project = { | ||||||
| 	url?: string; |  | ||||||
| 	logo: string; | 	logo: string; | ||||||
| 	title: string; | 	title: string; | ||||||
| 	description: string; | 	description: string; | ||||||
|  | 	gitHubUrl?: string; | ||||||
|  | 	projectUrl?: string; | ||||||
| 	languages: ProgrammingLanguage[]; | 	languages: ProgrammingLanguage[]; | ||||||
| 	license: string; | 	license: string; | ||||||
| 	year: string; | 	year: string; | ||||||
|  | @ -24,11 +28,12 @@ export type Project = { | ||||||
| 
 | 
 | ||||||
| const projects: Project[] = [ | const projects: Project[] = [ | ||||||
| 	{ | 	{ | ||||||
| 		url: 'https://hellob.art', |  | ||||||
| 		logo: helloBartLogo, | 		logo: helloBartLogo, | ||||||
| 		title: 'hellob.art', | 		title: 'hellob.art', | ||||||
| 		description: | 		description: | ||||||
| 			'The website you are currently visiting. A personal portfolio website that regularly gets rebuilt. Currently it has been built in Svelte and SvelteKit and uses shadcn-svelte and Tailwind CSS for component styling.', | 			'The website you are currently visiting. A personal portfolio website that regularly gets rebuilt. Currently it has been built in Svelte and SvelteKit and uses shadcn-svelte and Tailwind CSS for component styling.', | ||||||
|  | 		projectUrl: 'https://hellob.art', | ||||||
|  | 		gitHubUrl: 'https://github.com/bartvdbraak/hellob.art', | ||||||
| 		year: '2020', | 		year: '2020', | ||||||
| 		license: 'GPLv3', | 		license: 'GPLv3', | ||||||
| 		languages: [ | 		languages: [ | ||||||
|  | @ -39,11 +44,12 @@ const projects: Project[] = [ | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		url: 'https://omnidash.io', |  | ||||||
| 		logo: omnidashLogo, | 		logo: omnidashLogo, | ||||||
| 		title: 'Omnidash', | 		title: 'Omnidash', | ||||||
| 		description: | 		description: | ||||||
| 			'Omnidash is an open-source dashboard for retrieving ticketing information from various sources and displaying them in a single view.', | 			'Omnidash is an open-source dashboard for retrieving ticketing information from various sources and displaying them in a single view.', | ||||||
|  | 		projectUrl: 'https://omnidash.io', | ||||||
|  | 		gitHubUrl: 'https://github.com/bartvdbraak/omnidash', | ||||||
| 		year: '2023', | 		year: '2023', | ||||||
| 		license: 'GPLv3', | 		license: 'GPLv3', | ||||||
| 		languages: [ | 		languages: [ | ||||||
|  | @ -54,26 +60,12 @@ const projects: Project[] = [ | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		url: 'https://github.com/bartvdbraak/azure-geocode-mapping', |  | ||||||
| 		logo: azureGeocodeMappingLogo, |  | ||||||
| 		title: 'azure-geocode-mapping', |  | ||||||
| 		description: |  | ||||||
| 			'azure-geocode-mapping is a Python package that generates a mapping of Azure regions to their display names and geocodes.', |  | ||||||
| 		year: '2023', |  | ||||||
| 		license: 'MIT', |  | ||||||
| 		languages: [ |  | ||||||
| 			{ |  | ||||||
| 				name: 'Python', |  | ||||||
| 				color: 'text-blue-400' |  | ||||||
| 			} |  | ||||||
| 		] |  | ||||||
| 	}, |  | ||||||
| 	{ |  | ||||||
| 		url: 'https://www.github.com/bartvdbraak/keyweave', |  | ||||||
| 		logo: keyweaveLogo, | 		logo: keyweaveLogo, | ||||||
| 		title: 'Keyweave', | 		title: 'Keyweave', | ||||||
| 		description: | 		description: | ||||||
| 			'Keyweave is an open-source tool crafted in Rust to seamlessly fetch secrets from Azure Key Vault and weave them into a convenient .env file.', | 			'Keyweave is an open-source tool crafted in Rust to seamlessly fetch secrets from Azure Key Vault and weave them into a convenient .env file.', | ||||||
|  | 		gitHubUrl: 'https://www.github.com/bartvdbraak/keyweave', | ||||||
|  | 		projectUrl: 'https://docs.rs/crate/keyweave/latest', | ||||||
| 		year: '2023', | 		year: '2023', | ||||||
| 		license: 'GPLv3', | 		license: 'GPLv3', | ||||||
| 		languages: [ | 		languages: [ | ||||||
|  | @ -87,6 +79,22 @@ const projects: Project[] = [ | ||||||
| 			} | 			} | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
|  | 	{ | ||||||
|  | 		logo: azureGeocodeMappingLogo, | ||||||
|  | 		title: 'azure-geocode-mapping', | ||||||
|  | 		description: | ||||||
|  | 			'azure-geocode-mapping is a Python package that generates a mapping of Azure regions to their display names and geocodes.', | ||||||
|  | 		projectUrl: 'https://bartvdbraak.github.io/azure-geocode-mapping/geo.mapping.json', | ||||||
|  | 		gitHubUrl: 'https://github.com/bartvdbraak/azure-geocode-mapping', | ||||||
|  | 		year: '2023', | ||||||
|  | 		license: 'MIT', | ||||||
|  | 		languages: [ | ||||||
|  | 			{ | ||||||
|  | 				name: 'Python', | ||||||
|  | 				color: 'text-blue-400' | ||||||
|  | 			} | ||||||
|  | 		] | ||||||
|  | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		logo: videoWallLogo, | 		logo: videoWallLogo, | ||||||
| 		title: 'Videowall', | 		title: 'Videowall', | ||||||
|  | @ -124,11 +132,11 @@ const projects: Project[] = [ | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		url: 'https://zaantje.com/', |  | ||||||
| 		logo: zaantjeLogo, | 		logo: zaantjeLogo, | ||||||
| 		title: 'Zaantje', | 		title: 'Zaantje', | ||||||
| 		description: | 		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.', | 			'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.', | ||||||
|  | 		projectUrl: 'https://zaantje.com/', | ||||||
| 		year: '2020', | 		year: '2020', | ||||||
| 		license: 'Private', | 		license: 'Private', | ||||||
| 		languages: [ | 		languages: [ | ||||||
|  | @ -139,11 +147,12 @@ const projects: Project[] = [ | ||||||
| 		] | 		] | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		url: 'https://bartvdbraak.github.io/SlayerWeightCalculator/', |  | ||||||
| 		logo: slayerWeightCalcLogo, | 		logo: slayerWeightCalcLogo, | ||||||
| 		title: 'SlayerWeightCalculator', | 		title: 'SlayerWeightCalculator', | ||||||
| 		description: | 		description: | ||||||
| 			'I created this Slayer calculator for OldSchool RuneScape in 2019, but I am no longer maintaining it. As of 23th April 2023, I have decided to publicly archive the repository for it.', | 			'I created this Slayer calculator for OldSchool RuneScape in 2019, but I am no longer maintaining it. As of 23th April 2023, I have decided to publicly archive the repository for it.', | ||||||
|  | 		projectUrl: 'https://bartvdbraak.github.io/SlayerWeightCalculator/', | ||||||
|  | 		gitHubUrl: 'https://github.com/bartvdbraak/SlayerWeightCalculator', | ||||||
| 		year: '2019', | 		year: '2019', | ||||||
| 		license: 'BSD-2', | 		license: 'BSD-2', | ||||||
| 		languages: [ | 		languages: [ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue