spb/spboucher.ai Public
spboucher.ai — personal website of Simon-Pierre Boucher.
TypeScript 93.4%
HTML 5.5%
CSS 1%
1/*2 page.tsx3 spboucher.ai Web4 Author: Simon-Pierre Boucher5 Mail: contact@spboucher.ai6*/78import type { Metadata } from "next";9import {10 AtSign,11 Briefcase,12 Download,13 Github,14 GraduationCap,15 Languages,16 Mail,17 MapPin,18} from "lucide-react";1920import { Badge } from "@/components/ui/badge";21import { buttonVariants } from "@/components/ui/button";22import {23 Card,24 CardContent,25 CardDescription,26 CardHeader,27 CardTitle,28} from "@/components/ui/card";29import { IconTile } from "@/components/icon-tile";30import { Reveal } from "@/components/reveal";31import { SectionHeading } from "@/components/section-heading";3233export const metadata: Metadata = {34 title: "CV",35 description:36 "CV summary and contact information for Simon-Pierre Boucher — Professor, Department of Administrative Sciences, Université du Québec en Outaouais (UQO).",37};3839const positions = [40 {41 role: "Professor — Department of Administrative Sciences",42 org: "Université du Québec en Outaouais (UQO), Gatineau",43 period: "Present",44 },45 {46 role: "Lecturer",47 org: "Université Laval",48 period: "2021–Present",49 },50 {51 role: "Teaching Assistant",52 org: "Université Laval",53 period: "2018–2021",54 },55];5657const education = [58 {59 degree: "Ph.D. in Business Administration (Finance and Insurance)",60 school: "Université Laval",61 period: "2020–Present",62 },63 {64 degree: "M.Sc. in Business Administration (Finance)",65 school: "Université Laval",66 period: "2017–2019",67 },68 {69 degree: "B.B.A. in Business Administration (Finance)",70 school: "Université Laval",71 period: "2013–2017",72 },73];7475export default function CvPage() {76 return (77 <div className="mx-auto max-w-5xl px-4 py-16 sm:px-6">78 <Reveal>79 <SectionHeading80 as="h1"81 eyebrow="Curriculum Vitae"82 title="CV"83 icon={Briefcase}84 description="Professor in the Department of Administrative Sciences at Université du Québec en Outaouais (UQO). Research in financial econometrics, commodity markets, monetary policy announcements, high-frequency finance, volatility modelling, textual analysis, and financialization."85 />86 </Reveal>8788 {/* Download */}89 <Reveal delay={0.08} className="mt-8">90 <div className="flex flex-col gap-5 border-y-2 border-foreground bg-card/50 p-6 sm:flex-row sm:items-center sm:justify-between sm:p-7">91 <div className="min-w-0">92 <h2 className="font-display text-base font-semibold tracking-tight">93 Full Curriculum Vitae94 </h2>95 <p className="mt-1.5 max-w-md text-sm leading-relaxed text-muted-foreground">96 Complete 4-page PDF — positions, education, research & working97 papers, detailed teaching, applications, and skills.98 </p>99 </div>100 <a101 href="/cv/Simon-Pierre-Boucher-CV.pdf"102 download103 className={`${buttonVariants()} shrink-0`}104 >105 <Download aria-hidden="true" />106 Download CV (PDF)107 </a>108 </div>109 </Reveal>110111 {/* Contact */}112 <section className="mt-12">113 <Reveal>114 <SectionHeading title="Contact" icon={AtSign} />115 <Card className="mt-4">116 <CardContent className="grid gap-3 p-6 text-sm sm:grid-cols-2">117 <a118 href="mailto:simon-pierre.boucher@uqo.ca"119 className="inline-flex items-center gap-3 rounded-2xl border border-border/50 bg-muted/40 px-4 py-3 text-muted-foreground transition-all hover:-translate-y-px hover:border-primary/30 hover:text-foreground"120 >121 <IconTile icon={Mail} size="sm" />122 simon-pierre.boucher@uqo.ca (academic)123 </a>124 <a125 href="mailto:contact@spboucher.ai"126 className="inline-flex items-center gap-3 rounded-2xl border border-border/50 bg-muted/40 px-4 py-3 text-muted-foreground transition-all hover:-translate-y-px hover:border-primary/30 hover:text-foreground"127 >128 <IconTile icon={Mail} size="sm" />129 contact@spboucher.ai (personal)130 </a>131 <a132 href="https://git.spboucher.ai"133 target="_blank"134 rel="noopener noreferrer"135 className="inline-flex items-center gap-3 rounded-2xl border border-border/50 bg-muted/40 px-4 py-3 text-muted-foreground transition-all hover:-translate-y-px hover:border-primary/30 hover:text-foreground"136 >137 <IconTile icon={Github} size="sm" />138 git.spboucher.ai139 </a>140 <span className="inline-flex items-center gap-3 rounded-2xl border border-border/50 bg-muted/40 px-4 py-3 text-muted-foreground">141 <IconTile icon={MapPin} size="sm" />142 UQO, Gatineau — Pavillon Alexandre-Taché143 </span>144 </CardContent>145 </Card>146 </Reveal>147 </section>148149 {/* Positions */}150 <section className="mt-12">151 <Reveal>152 <SectionHeading title="Positions" icon={Briefcase} />153 </Reveal>154 <div className="mt-4 space-y-4">155 {positions.map((p, i) => (156 <Reveal key={p.role} delay={i * 0.06}>157 <Card>158 <CardHeader className="flex-row items-start justify-between space-y-0">159 <div>160 <CardTitle className="text-base leading-snug">161 {p.role}162 </CardTitle>163 <CardDescription className="mt-1">{p.org}</CardDescription>164 </div>165 <Badge variant="outline">{p.period}</Badge>166 </CardHeader>167 </Card>168 </Reveal>169 ))}170 </div>171 </section>172173 {/* Education */}174 <section className="mt-12">175 <Reveal>176 <SectionHeading title="Education" icon={GraduationCap} />177 </Reveal>178 <div className="mt-4 space-y-4">179 {education.map((item, i) => (180 <Reveal key={item.degree} delay={i * 0.06}>181 <Card>182 <CardHeader className="flex-row items-start justify-between space-y-0">183 <div>184 <CardTitle className="text-base leading-snug">185 {item.degree}186 </CardTitle>187 <CardDescription className="mt-1">188 {item.school}189 </CardDescription>190 </div>191 <Badge variant="outline">{item.period}</Badge>192 </CardHeader>193 </Card>194 </Reveal>195 ))}196 </div>197 </section>198199 {/* Languages */}200 <section className="mt-12">201 <Reveal>202 <SectionHeading title="Languages" icon={Languages} />203 <div className="mt-4 flex gap-2">204 <Badge variant="secondary">French — Bilingual</Badge>205 <Badge variant="secondary">English — Bilingual</Badge>206 </div>207 </Reveal>208 </section>209 </div>210 );211}212