diff --git a/app/app.config.ts b/app/app.config.ts index b37fed6..0860523 100644 --- a/app/app.config.ts +++ b/app/app.config.ts @@ -1,7 +1,7 @@ export default defineAppConfig({ ui: { container: { - base: 'max-w-4xl' + base: 'max-w-5xl' }, colors: { primary: 'neutral', diff --git a/app/composables/projects.ts b/app/composables/projects.ts index 9cf00e4..44d5e44 100644 --- a/app/composables/projects.ts +++ b/app/composables/projects.ts @@ -1,9 +1,9 @@ export function useProjectColors() { const statusColors: Record = { - 'active': 'blue', - 'completed': 'green', - 'archived': 'neutral', - 'in progress': 'amber' + 'Active': 'blue', + 'Completed': 'green', + 'Archived': 'neutral', + 'In Progress': 'amber' } const typeColors: Record = { diff --git a/app/pages/projects/index.vue b/app/pages/projects/index.vue index df5f840..f40be6e 100644 --- a/app/pages/projects/index.vue +++ b/app/pages/projects/index.vue @@ -15,245 +15,251 @@ useSeoMeta({ twitterCard: 'summary_large_image' }) -const selectedStatus = ref(null) -const selectedTags = ref([]) +const { statusColors, typeColors } = useProjectColors() -const statuses = computed(() => { - const allStatuses = new Set() +const selectedType = ref(null) +const selectedStatus = ref(null) + +const availableTypes = computed(() => { + const types = new Set() projects.value?.forEach((project) => { - if (project.status) allStatuses.add(project.status) + if (project.type) types.add(project.type) }) - return Array.from(allStatuses).sort() + return Array.from(types).sort() }) -const allTags = computed(() => { - const tags = new Set() +const availableStatuses = computed(() => { + const statuses = new Set() projects.value?.forEach((project) => { - project.tags?.forEach((tag: string) => tags.add(tag)) + if (project.status) statuses.add(project.status) }) - return Array.from(tags).sort() + return Array.from(statuses).sort() }) const filteredProjects = computed(() => { if (!projects.value) return [] return projects.value.filter((project) => { + const typeMatch = !selectedType.value || project.type === selectedType.value const statusMatch = !selectedStatus.value || project.status === selectedStatus.value - const tagsMatch = selectedTags.value.length === 0 - || selectedTags.value.some(tag => project.tags?.includes(tag)) - return statusMatch && tagsMatch + return typeMatch && statusMatch }) }) -const { statusColors, typeColors } = useProjectColors() - -function toggleTag(tag: string) { - const index = selectedTags.value.indexOf(tag) - if (index > -1) selectedTags.value.splice(index, 1) - else selectedTags.value.push(tag) -} - function clearFilters() { + selectedType.value = null selectedStatus.value = null - selectedTags.value = [] } -const hasActiveFilters = computed(() => !!selectedStatus.value || selectedTags.value.length > 0) -const activeFilterCount = computed(() => (selectedStatus.value ? 1 : 0) + selectedTags.value.length) +const hasActiveFilters = computed(() => !!selectedType.value || !!selectedStatus.value) +const activeFilterCount = computed(() => (selectedType.value ? 1 : 0) + (selectedStatus.value ? 1 : 0)) diff --git a/content/projects/artchat.md b/content/projects/artchat.md index e813278..aa893ff 100644 --- a/content/projects/artchat.md +++ b/content/projects/artchat.md @@ -6,7 +6,7 @@ description: My personal space on the web — a portfolio, a blog, and a digital publishedAt: 2024-06-01 readingTime: 1 favorite: true -status: active +status: Active tags: - Vue.js - Nuxt diff --git a/content/projects/arthome.md b/content/projects/arthome.md index a06cf9b..be55127 100644 --- a/content/projects/arthome.md +++ b/content/projects/arthome.md @@ -5,7 +5,7 @@ type: Personal Project description: A customizable browser homepage that lets you organize all your favorite links in one place with categories, tabs, icons and colors. publishedAt: 2024-09-04 readingTime: 1 -status: archived +status: Archived tags: - Nuxt - Vue.js diff --git a/content/projects/artlab.md b/content/projects/artlab.md index fa22cb6..0dcd672 100644 --- a/content/projects/artlab.md +++ b/content/projects/artlab.md @@ -6,7 +6,7 @@ description: A personal homelab environment where I deploy, test, and maintain s publishedAt: 2025-09-04 readingTime: 1 favorite: true -status: active +status: Active tags: - Docker - Proxmox diff --git a/content/projects/artstudies.md b/content/projects/artstudies.md index c744fa9..07511ab 100644 --- a/content/projects/artstudies.md +++ b/content/projects/artstudies.md @@ -6,7 +6,7 @@ description: A curated collection of mathematics and data science projects devel publishedAt: 2023-09-01 readingTime: 1 favorite: true -status: in progress +status: In progress tags: - Python - R diff --git a/content/projects/bikes-glm.md b/content/projects/bikes-glm.md index 94c7c3e..ae94862 100644 --- a/content/projects/bikes-glm.md +++ b/content/projects/bikes-glm.md @@ -5,7 +5,7 @@ type: Academic Project description: Predicting the number of bikes rented in a bike-sharing system using Generalized Linear Models and various statistical techniques. publishedAt: 2025-01-24 readingTime: 1 -status: completed +status: Completed tags: - R - Statistics diff --git a/content/projects/breast-cancer.md b/content/projects/breast-cancer.md index 239e475..262dfe8 100644 --- a/content/projects/breast-cancer.md +++ b/content/projects/breast-cancer.md @@ -5,7 +5,7 @@ type: Academic Project description: Prediction of breast cancer presence by comparing several supervised classification models using machine learning techniques. publishedAt: 2025-06-06 readingTime: 2 -status: completed +status: Completed tags: - Python - Machine Learning diff --git a/content/projects/dropout-reduces-underfitting.md b/content/projects/dropout-reduces-underfitting.md index 9453527..924cc3f 100644 --- a/content/projects/dropout-reduces-underfitting.md +++ b/content/projects/dropout-reduces-underfitting.md @@ -5,7 +5,7 @@ type: Research Project description: TensorFlow/Keras implementation and reproduction of "Dropout Reduces Underfitting" (Liu et al., 2023). A comparative study of Early and Late Dropout strategies to optimize model convergence. publishedAt: 2024-12-10 readingTime: 4 -status: completed +status: Completed tags: - Python - TensorFlow diff --git a/content/projects/loan-ml.md b/content/projects/loan-ml.md index c6b5db0..eec65d4 100644 --- a/content/projects/loan-ml.md +++ b/content/projects/loan-ml.md @@ -5,7 +5,7 @@ type: Academic Project description: Predicting loan approval and default risk using machine learning classification techniques. publishedAt: 2025-01-24 readingTime: 2 -status: completed +status: Completed tags: - Python - Machine Learning diff --git a/content/projects/monte-carlo-project.md b/content/projects/monte-carlo-project.md index ec2851e..3ae76ee 100644 --- a/content/projects/monte-carlo-project.md +++ b/content/projects/monte-carlo-project.md @@ -5,7 +5,7 @@ type: Academic Project description: An implementation of different Monte Carlo methods and algorithms in R, including inverse CDF simulation, accept-reject methods, and stratification techniques. publishedAt: 2024-11-24 readingTime: 3 -status: completed +status: Completed tags: - R - Mathematics diff --git a/content/projects/schelling-segregation-model.md b/content/projects/schelling-segregation-model.md index 9fa2113..1edf2a7 100644 --- a/content/projects/schelling-segregation-model.md +++ b/content/projects/schelling-segregation-model.md @@ -5,7 +5,7 @@ type: Academic Project description: A Python implementation of the Schelling Segregation Model using statistics and data visualization to analyze spatial segregation patterns. publishedAt: 2024-05-03 readingTime: 4 -status: completed +status: Completed tags: - Python - Data Visualization diff --git a/content/projects/sevetys.md b/content/projects/sevetys.md index b33944e..53df8f0 100644 --- a/content/projects/sevetys.md +++ b/content/projects/sevetys.md @@ -5,7 +5,7 @@ type: Internship Project description: Summary of my internship as a Data Engineer at Sevetys, focusing on data quality, cleaning, standardization, and comprehensive data quality metrics. publishedAt: 2025-07-31 readingTime: 2 -status: completed +status: Completed tags: - Python - PySpark diff --git a/wrangler.jsonc b/wrangler.jsonc index 6adfe74..2b6717e 100644 --- a/wrangler.jsonc +++ b/wrangler.jsonc @@ -49,5 +49,30 @@ "head_sampling_rate": 1, "persist": true } + }, + "env": { + "preview": { + "routes": [ + { + "pattern": "preview.arthurdanjou.fr", + "zone_name": "arthurdanjou.fr", + "custom_domain": true + } + ], + "d1_databases": [ + { + "binding": "DB", + "database_id": "d6e8c2ff-399a-4bec-b1b3-4bfe57d50ea8", + "migrations_table": "_hub_migrations", + "migrations_dir": ".output/server/db/migrations/" + } + ], + "kv_namespaces": [ + { + "binding": "CACHE", + "id": "f0766ace1d24423ba6e5cac4fb8f2054" + } + ] + } } } \ No newline at end of file