diff --git a/.env.example b/.env.example index e212e12..a6ef58f 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,12 @@ -NUXT_PUBLIC_I18N_BASE_URL= -NUXT_API_URL= - STUDIO_GITHUB_CLIENT_ID= -STUDIO_GITHUB_CLIENT_SECRET= \ No newline at end of file +STUDIO_GITHUB_CLIENT_SECRET= + +NUXT_DISCORD_USER_ID= + +NUXT_WAKATIME_CODING= +NUXT_WAKATIME_EDITORS= +NUXT_WAKATIME_LANGUAGES= +NUXT_WAKATIME_OS= +NUXT_WAKATIME_USER_ID= + +NUXT_STATUS_PAGE= \ No newline at end of file diff --git a/app/components/home/Activity.vue b/app/components/home/Activity.vue deleted file mode 100644 index f9c7c9a..0000000 --- a/app/components/home/Activity.vue +++ /dev/null @@ -1,125 +0,0 @@ - - - diff --git a/app/components/home/Education.vue b/app/components/home/Education.vue deleted file mode 100644 index 6d1ab4f..0000000 --- a/app/components/home/Education.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - diff --git a/app/components/home/Experiences.vue b/app/components/home/Experiences.vue deleted file mode 100644 index 809b11b..0000000 --- a/app/components/home/Experiences.vue +++ /dev/null @@ -1,100 +0,0 @@ - - - diff --git a/app/components/home/live/Activity.vue b/app/components/home/live/Activity.vue new file mode 100644 index 0000000..a3d84a3 --- /dev/null +++ b/app/components/home/live/Activity.vue @@ -0,0 +1,123 @@ + + + diff --git a/app/components/home/Stats.vue b/app/components/home/live/Stats.vue similarity index 100% rename from app/components/home/Stats.vue rename to app/components/home/live/Stats.vue diff --git a/app/components/home/live/StatusPage.vue b/app/components/home/live/StatusPage.vue new file mode 100644 index 0000000..d652e0c --- /dev/null +++ b/app/components/home/live/StatusPage.vue @@ -0,0 +1,192 @@ + + + diff --git a/app/components/home/timeline/Education.vue b/app/components/home/timeline/Education.vue index ef83de6..05cfd1e 100644 --- a/app/components/home/timeline/Education.vue +++ b/app/components/home/timeline/Education.vue @@ -30,7 +30,7 @@ const items = computed(() => { title: item.title || 'Degree', description: item.institution || '', date: formatDate(item.startDate, item.endDate, item.duration), - icon: item.icon || 'i-ph-graduation-cap-duotone' // Context-aware default icon + icon: item.icon || 'i-ph-graduation-cap-duotone' })) }) @@ -41,7 +41,7 @@ const items = computed(() => { { const result = await queryCollection(event, 'education') .where('extension', '=', 'md') + .order('startDate', 'DESC') .all() if (result.length === 0) { @@ -10,14 +11,6 @@ export default defineCachedEventHandler(async (event) => { } return result - .sort((a, b) => new Date(b.startDate).getTime() - new Date(a.startDate).getTime()) - .map(edu => ({ - degree: edu.degree, - institution: edu.institution, - startDate: edu.startDate, - endDate: edu.endDate, - location: edu.location - })) }, { maxAge: 60 * 60 * 24, name: 'education' diff --git a/server/api/experiences.get.ts b/server/api/experiences.get.ts index 2d1b2b2..95115fa 100644 --- a/server/api/experiences.get.ts +++ b/server/api/experiences.get.ts @@ -3,6 +3,7 @@ import { queryCollection } from '@nuxt/content/server' export default defineCachedEventHandler(async (event) => { const result = await queryCollection(event, 'experiences') .where('extension', '=', 'md') + .order('startDate', 'DESC') .all() if (result.length === 0) { @@ -10,16 +11,6 @@ export default defineCachedEventHandler(async (event) => { } return result - .sort((a, b) => new Date(b.startDate).getTime() - new Date(a.startDate).getTime()) - .map(exp => ({ - title: exp.title, - company: exp.company, - companyUrl: exp.companyUrl, - startDate: exp.startDate, - endDate: exp.endDate, - location: exp.location, - description: exp.description - })) }, { maxAge: 60 * 60 * 24, diff --git a/types/index.ts b/types/index.ts index 38b2740..2d6d132 100644 --- a/types/index.ts +++ b/types/index.ts @@ -35,6 +35,62 @@ export interface Activity { } } +export interface StatusTag { + id: number + monitor_id: number + tag_id: number + value: string + name: string + color: string +} + +export interface StatusMonitor { + id: number + name: string + sendUrl: number + type: string + url?: string + tags: StatusTag[] +} + +export interface StatusGroup { + id: number + name: string + weight: number + monitorList: StatusMonitor[] +} + +export interface StatusMaintenance { + id: number + title: string + description: string + strategy: string + active: boolean + status: string // 'under-maintenance', etc. + // ... autres champs optionnels (dateRange, etc.) +} + +export interface StatusConfig { + slug: string + title: string + description: string + icon: string + autoRefreshInterval: number + theme: string + published: boolean + showTags: boolean + customCSS: string + footerText: string + showPoweredBy: boolean +} + +export interface StatusPageData { + config: StatusConfig + incident: unknown | null + publicGroupList: StatusGroup[] + maintenanceList: StatusMaintenance[] +} + export const IDEs = [ { name: 'Visual Studio Code', icon: 'i-logos:visual-studio-code' }, { name: 'IntelliJ IDEA Ultimate', icon: 'i-logos:intellij-idea' },