From 87ff37dddb119b45fc57496efeee798ce0e04058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alo=C3=AFs=20Coquillard?= Date: Mon, 25 May 2026 16:15:37 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20initialisation=20site=20acad=C3=A9mique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy.yml | 46 ++++++++++++++++++++++ .gitignore | 7 ++++ 404.html | 10 +++++ Gemfile | 4 ++ README.md | 0 _config.yml | 26 +++++++++++++ _data/navigation.yml | 9 +++++ _data/profile.yml | 16 ++++++++ _layouts/default.html | 31 +++++++++++++++ _news/2024-01-01-welcome.md | 4 ++ _publications/2024-paper.md | 9 +++++ _showcase/project1.md | 8 ++++ assets/css/main.css | 68 ++++++++++++++++++++++++++++++++ index.html | 78 +++++++++++++++++++++++++++++++++++++ publications.html | 27 +++++++++++++ showcase.html | 19 +++++++++ 16 files changed, 362 insertions(+) create mode 100644 .gitea/workflows/deploy.yml create mode 100644 .gitignore create mode 100644 404.html create mode 100644 Gemfile delete mode 100644 README.md create mode 100644 _config.yml create mode 100644 _data/navigation.yml create mode 100644 _data/profile.yml create mode 100644 _layouts/default.html create mode 100644 _news/2024-01-01-welcome.md create mode 100644 _publications/2024-paper.md create mode 100644 _showcase/project1.md create mode 100644 assets/css/main.css create mode 100644 index.html create mode 100644 publications.html create mode 100644 showcase.html diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..51d5199 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,46 @@ +name: Build and Deploy Jekyll + +on: + push: + branches: + - main + +jobs: + build: + runs-on: native + timeout-minutes: 15 + steps: + - name: Checkout + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + run: | + git clone --depth 1 https://alois:${GITEA_TOKEN}@git.alocoq.fr/alois/CoqResearch.git . + + - name: Install Ruby and Jekyll + run: | + apk add --no-cache ruby ruby-dev ruby-bundler build-base + bundle install --path vendor/bundle + + - name: Build + run: bundle exec jekyll build + + - name: Install kubectl + run: | + wget -q https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl + chmod +x kubectl + mv kubectl /usr/local/bin/kubectl + + - name: Deploy + env: + KUBE_TOKEN: ${{ secrets.KUBE_TOKEN }} + KUBE_SERVER: ${{ secrets.KUBE_SERVER }} + run: | + unset KUBERNETES_SERVICE_HOST KUBERNETES_SERVICE_PORT + kubectl config set-cluster homelab \ + --server=${KUBE_SERVER} \ + --insecure-skip-tls-verify=true + kubectl config set-credentials deployer --token=${KUBE_TOKEN} + kubectl config set-context homelab --cluster=homelab --user=deployer + kubectl config use-context homelab + POD=$(kubectl get pods -n research -l app=research-nginx -o jsonpath='{.items[0].metadata.name}') + kubectl cp _site/. research/${POD}:/usr/share/nginx/html/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..977da93 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +_site/ +.sass-cache/ +.jekyll-cache/ +.jekyll-metadata +vendor/ +.bundle/ +Gemfile.lock diff --git a/404.html b/404.html new file mode 100644 index 0000000..f379222 --- /dev/null +++ b/404.html @@ -0,0 +1,10 @@ +--- +layout: default +title: "404 — Page introuvable" +--- +
+
đź”­
+

Page introuvable

+

Cette page n'existe pas ou a été déplacée.

+ Retour Ă  l'accueil +
diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..de4e27b --- /dev/null +++ b/Gemfile @@ -0,0 +1,4 @@ +source "https://rubygems.org" +gem "jekyll", "~> 4.3" +gem "jekyll-seo-tag" +gem "webrick" diff --git a/README.md b/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..30f9cd7 --- /dev/null +++ b/_config.yml @@ -0,0 +1,26 @@ +title: "John Doe" +name: "John Doe" +position: "PhD Student / Researcher" +affiliation: "University Name" +affiliation_link: "https://university.edu" +email: "john@doe.fr" +description: "Physicist passionate about electronics and computing" +baseurl: "" +url: "https://alocoq.fr" +github: "johndoe" +linkedin: "" +google_scholar: "" +orcid: "" +twitter: "" +markdown: kramdown +highlighter: rouge +permalink: /:title/ +collections: + news: + output: false + publications: + output: false + showcase: + output: false +plugins: + - jekyll-seo-tag diff --git a/_data/navigation.yml b/_data/navigation.yml new file mode 100644 index 0000000..2da5ac9 --- /dev/null +++ b/_data/navigation.yml @@ -0,0 +1,9 @@ +- title: "Accueil" + url: "/" +- title: "Publications" + url: "/publications" +- title: "Projets" + url: "/showcase" +- title: "Blog" + url: "https://blog.alocoq.fr" + external: true diff --git a/_data/profile.yml b/_data/profile.yml new file mode 100644 index 0000000..ee98f0b --- /dev/null +++ b/_data/profile.yml @@ -0,0 +1,16 @@ +bio: > + Je suis physicien passionné par l'électronique et l'informatique. + Mes travaux portent sur [ton domaine de recherche]. + +interests: + - Physique expérimentale + - Électronique + - Informatique embarquée + +education: + - degree: "PhD en Physique" + institution: "Université de ..." + year: "2020 – présent" + - degree: "Master de Physique" + institution: "Université de ..." + year: "2018 – 2020" diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..d8bac39 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,31 @@ + + + + + + {{ page.title | default: site.title }} + + + {% seo %} + + + +
{{ content }}
+ + + diff --git a/_news/2024-01-01-welcome.md b/_news/2024-01-01-welcome.md new file mode 100644 index 0000000..212af73 --- /dev/null +++ b/_news/2024-01-01-welcome.md @@ -0,0 +1,4 @@ +--- +date: 2024-01-01 +--- +Bienvenue sur mon site ! diff --git a/_publications/2024-paper.md b/_publications/2024-paper.md new file mode 100644 index 0000000..23040cb --- /dev/null +++ b/_publications/2024-paper.md @@ -0,0 +1,9 @@ +--- +title: "Titre de ta publication" +authors: "Doe, J., et al." +venue: "Journal / Conférence" +year: 2024 +paper_url: "" +code_url: "" +selected: true +--- diff --git a/_showcase/project1.md b/_showcase/project1.md new file mode 100644 index 0000000..ab4b712 --- /dev/null +++ b/_showcase/project1.md @@ -0,0 +1,8 @@ +--- +title: "Mon projet principal" +description: "Description courte du projet." +url: "https://blog.alocoq.fr/projets/mon-premier-projet" +tags: + - électronique + - python +--- diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..8b7bc88 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,68 @@ +:root { + --accent: #3050ff; + --bg: #ffffff; + --text: #1a1a2e; + --text-muted: #666; + --border: #e5e7eb; + --card-bg: #f9fafb; + --max-width: 860px; +} +@media (prefers-color-scheme: dark) { + :root { + --bg: #0f0f13; + --text: #e8e8f0; + --text-muted: #888; + --border: #2a2a3a; + --card-bg: #16161e; + } +} +* { box-sizing: border-box; margin: 0; padding: 0; } +html { font-size: 16px; scroll-behavior: smooth; } +body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg); color: var(--text); line-height: 1.7; } +a { color: var(--accent); text-decoration: none; } +a:hover { text-decoration: underline; } +.navbar { border-bottom: 1px solid var(--border); padding: 0 1.5rem; } +.nav-inner { max-width: var(--max-width); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; height: 56px; } +.nav-brand { font-weight: 600; color: var(--text); font-size: 15px; } +.nav-links { display: flex; gap: 1.5rem; } +.nav-links a { font-size: 14px; color: var(--text-muted); } +.nav-links a:hover, .nav-links a.active { color: var(--accent); text-decoration: none; } +main { max-width: var(--max-width); margin: 0 auto; padding: 2.5rem 1.5rem; } +footer { border-top: 1px solid var(--border); text-align: center; padding: 1.5rem; font-size: 13px; color: var(--text-muted); margin-top: 4rem; } +footer a { color: var(--text-muted); } +.profile { display: grid; grid-template-columns: 160px 1fr; gap: 2.5rem; align-items: start; margin-bottom: 3rem; } +@media (max-width: 600px) { .profile { grid-template-columns: 1fr; } } +.profile-photo { width: 140px; height: 140px; border-radius: 50%; object-fit: cover; border: 3px solid var(--border); } +.profile-photo-placeholder { width: 140px; height: 140px; border-radius: 50%; background: var(--card-bg); border: 3px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 56px; } +.profile-name { font-size: 1.6rem; font-weight: 600; margin-bottom: 4px; } +.profile-position { color: var(--text-muted); font-size: 15px; margin-bottom: 12px; } +.profile-bio { font-size: 15px; color: var(--text-muted); line-height: 1.7; margin-bottom: 16px; } +.profile-links { display: flex; gap: 10px; flex-wrap: wrap; } +.profile-links a { font-size: 13px; background: var(--card-bg); border: 1px solid var(--border); padding: 4px 12px; border-radius: 99px; color: var(--text-muted); } +.profile-links a:hover { color: var(--accent); border-color: var(--accent); text-decoration: none; } +.section { margin-bottom: 3rem; } +.section-title { font-size: 1.1rem; font-weight: 600; margin-bottom: 1rem; padding-bottom: 8px; border-bottom: 2px solid var(--accent); display: inline-block; } +.news-list { list-style: none; } +.news-item { display: flex; gap: 1rem; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; } +.news-date { color: var(--text-muted); flex-shrink: 0; min-width: 90px; } +.pub-list { display: flex; flex-direction: column; gap: 1.25rem; } +.pub-card { background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; padding: 1rem 1.25rem; } +.pub-title { font-size: 15px; font-weight: 500; margin-bottom: 4px; } +.pub-authors { font-size: 13px; color: var(--text-muted); margin-bottom: 4px; } +.pub-venue { font-size: 13px; color: var(--accent); margin-bottom: 8px; } +.pub-links { display: flex; gap: 8px; } +.pub-links a { font-size: 12px; background: var(--bg); border: 1px solid var(--border); padding: 2px 10px; border-radius: 99px; color: var(--text-muted); } +.pub-links a:hover { color: var(--accent); text-decoration: none; } +.showcase-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1rem; } +.showcase-card { background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; padding: 1rem; } +.showcase-card:hover { border-color: var(--accent); } +.showcase-title { font-size: 15px; font-weight: 500; margin-bottom: 6px; } +.showcase-desc { font-size: 13px; color: var(--text-muted); line-height: 1.5; margin-bottom: 10px; } +.showcase-tags { display: flex; flex-wrap: wrap; gap: 4px; } +.showcase-tag { font-size: 11px; background: var(--bg); border: 1px solid var(--border); padding: 2px 8px; border-radius: 99px; color: var(--text-muted); } +.interests-list { display: flex; flex-wrap: wrap; gap: 8px; } +.interest-tag { font-size: 13px; background: var(--card-bg); border: 1px solid var(--border); padding: 4px 14px; border-radius: 99px; color: var(--text-muted); } +.edu-list { list-style: none; } +.edu-item { padding: 8px 0; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; font-size: 14px; } +.edu-degree { font-weight: 500; } +.edu-year { color: var(--text-muted); } diff --git a/index.html b/index.html new file mode 100644 index 0000000..4e2a3ee --- /dev/null +++ b/index.html @@ -0,0 +1,78 @@ +--- +layout: default +title: Home +url: / +--- +
+
+
👨‍🔬
+
+
+
{{ site.name }}
+
{{ site.position }} — {{ site.affiliation }}
+

{{ site.data.profile.bio }}

+ +
+
+ +
+
Actualités
+ +
+ +
+
Publications sélectionnées
+
+ {% assign selected = site.publications | where: "selected", true %} + {% for pub in selected %} +
+
+
{{ pub.title }}
+
{{ pub.authors }}
+
{{ pub.venue }}, {{ pub.year }}
+ +
+
+ {% endfor %} +
+
+ +
+
Intérêts
+
+ {% for interest in site.data.profile.interests %} + {{ interest }} + {% endfor %} +
+
+ +
+
Formation
+ +
diff --git a/publications.html b/publications.html new file mode 100644 index 0000000..4b94cdf --- /dev/null +++ b/publications.html @@ -0,0 +1,27 @@ +--- +layout: default +title: Publications +url: /publications +--- +

Publications

+
+ {% assign pubs_by_year = site.publications | group_by: "year" | sort: "name" | reverse %} + {% for year_group in pubs_by_year %} +
+
{{ year_group.name }}
+ {% for pub in year_group.items %} +
+
+
{{ pub.title }}
+
{{ pub.authors }}
+
{{ pub.venue }}
+ +
+
+ {% endfor %} +
+ {% endfor %} +
diff --git a/showcase.html b/showcase.html new file mode 100644 index 0000000..40bed62 --- /dev/null +++ b/showcase.html @@ -0,0 +1,19 @@ +--- +layout: default +title: Projets +url: /showcase +--- +

Projets

+
+ {% for project in site.showcase %} + +
{{ project.title }}
+
{{ project.description }}
+
+ {% for tag in project.tags %} + {{ tag }} + {% endfor %} +
+
+ {% endfor %} +