diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml
new file mode 100644
index 0000000..1467c91
--- /dev/null
+++ b/.forgejo/workflows/build.yaml
@@ -0,0 +1,32 @@
+on: [push]
+jobs:
+ build:
+ runs-on: docker
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Install Pandoc
+ run: |
+ apt-get update
+ apt-get install -y pandoc
+
+ - name: Generate guide.html
+ run: bash update-guide.sh
+
+ - name: Install Podman
+ run: |
+ apt-get update
+ apt-get install -y podman
+
+ - name: Podman Login
+ run: |
+ echo "${{ secrets.DOCKER_PASSWORD }}" | podman login git.interhacker.space --username "${{ secrets.DOCKER_USERNAME }}" --password-stdin
+
+ - name: Build Container Image
+ run: |
+ podman build -t git.interhacker.space/interhack/camp-website-2026:latest .
+
+ - name: Push Container Image
+ run: |
+ podman push git.interhacker.space/interhack/camp-website-2026:latest
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b936b79
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+guide.html
diff --git a/Dockerfile b/Dockerfile
index 77adc9b..38e5b29 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM docker.io/nginx:1.29-alpine
-COPY index.html poster.html /usr/share/nginx/html
+COPY index.html poster.html guide.html contact.html /usr/share/nginx/html
COPY assets /usr/share/nginx/html/assets
COPY css /usr/share/nginx/html/css
COPY js /usr/share/nginx/html/js
diff --git a/README.md b/README.md
index 2a7dfc8..9bd2043 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,28 @@
# Interhack Camp Website 2026
-## Build the Docker image
+## How to deploy :
+
+### generate statuses PDF
+
+Statuses are stored in [this online pad](https://md.interhacker.space/u2VNUSO6S36xx5Ensc3FCw).
+
+PDF can be generated thanks to `pandoc` and the good old `curl` this way:
+
+```sh
+curl -s https://md.interhacker.space/u2VNUSO6S36xx5Ensc3FCw/download | pandoc -V geometry:margin=3cm -o assets/Camp-Interhack_Statuts.pdf
+```
+
+### Generation de la page Guide.
+
+La page Guide est générée depuis un Hedgedocs, en markdown, via le fichier update-guide.sh qui utilise le fichier guide.template.html. Le contenu de la page est donc un HTML basique in fine.
+
+```sh
+bash update-guide.sh
+```
+
+### Build the Docker image
+
+Please generate
We use Docker for deploying on the Interhack infra. Until we have a proper CI, we need to build manually.
@@ -28,13 +50,3 @@ docker push git.interhacker.space/interhack/camp-website-2026:latest
The pull process is triggered every five minutes.
So you may wait at least this amount of time before the website is up-to-date!
(and Ctrl + Shift + R is useful to nuke cache)
-
-## generate statuses PDF
-
-Statuses are stored in [this online pad](https://md.interhacker.space/u2VNUSO6S36xx5Ensc3FCw).
-
-PDF can be generated thanks to `pandoc` and the good old `curl` this way:
-
-```sh
-curl -s https://md.interhacker.space/u2VNUSO6S36xx5Ensc3FCw/download | pandoc -V geometry:margin=3cm -o assets/Camp-Interhack_Statuts.pdf
-```
diff --git a/assets/Banquise-Regular.woff b/assets/Banquise-Regular.woff
deleted file mode 100644
index 9454177..0000000
Binary files a/assets/Banquise-Regular.woff and /dev/null differ
diff --git a/assets/Dymo.ttf b/assets/Dymo.ttf
deleted file mode 100644
index 4ae075c..0000000
Binary files a/assets/Dymo.ttf and /dev/null differ
diff --git a/assets/Erika-Type.ttf b/assets/Erika-Type.ttf
deleted file mode 100644
index c581164..0000000
Binary files a/assets/Erika-Type.ttf and /dev/null differ
diff --git a/assets/Thunometre-participanxes.pdf b/assets/Thunometre-participanxes.pdf
new file mode 100755
index 0000000..2ff81bc
Binary files /dev/null and b/assets/Thunometre-participanxes.pdf differ
diff --git a/assets/background.jpg b/assets/background.jpg
deleted file mode 100644
index 88531b7..0000000
Binary files a/assets/background.jpg and /dev/null differ
diff --git a/assets/camp-interhack.ics b/assets/camp-interhack.ics
new file mode 100644
index 0000000..d995765
--- /dev/null
+++ b/assets/camp-interhack.ics
@@ -0,0 +1,39 @@
+BEGIN:VCALENDAR
+X-LOTUS-CHARSET:UTF-8
+VERSION:2.0
+PRODID:ZMS-Berlin
+BEGIN:VTIMEZONE
+TZID:Europe/Berlin
+X-LIC-LOCATION:Europe/Berlin
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+TZNAME:CEST
+DTSTART:19700329T020000
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+TZNAME:CET
+DTSTART:19701025T030000
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
+END:STANDARD
+END:VTIMEZONE
+METHOD:REQUEST
+BEGIN:VEVENT
+UID:ics.terminsysteme.de1769434840
+DTSTAMP:20260126T144040
+CLASS:PUBLIC
+DTSTART;TZID=Europe/Berlin:20260702T100000
+DTEND;TZID=Europe/Berlin:20260705T230000
+LOCATION:15 route de Saint Dolay 44530 Sévérac | 47.5437595, -2.0916116
+SUMMARY:Camp Interhack
+DESCRIPTION: Le Camp Interhack 2026 est un événement festif de hacking ! Le hack c’est le détournement des machines, des pratiques et des systèmes (au sens large) qui nous entourent. De la musique à la couture en passant par l’informatique et l’éléctronique mais aussi les structure sociales, les institutions et les organisations politiques, venez hacker le monde avec nous. https://camp.interhacker.space \n\n
+BEGIN:VALARM
+ACTION:DISPLAY
+TRIGGER:-PT1440M
+DESCRIPTION:Erinnerung
+END:VALARM
+END:VEVENT
+END:VCALENDAR
diff --git a/assets/fonts/MonTrappist-Black.woff b/assets/fonts/MonTrappist-Black.woff
new file mode 100644
index 0000000..544ab36
Binary files /dev/null and b/assets/fonts/MonTrappist-Black.woff differ
diff --git a/assets/fonts/segoesc.ttf b/assets/fonts/segoesc.ttf
new file mode 100644
index 0000000..63b33de
Binary files /dev/null and b/assets/fonts/segoesc.ttf differ
diff --git a/assets/logos/datapaulette.jpg b/assets/logos/datapaulette.jpg
new file mode 100644
index 0000000..24f7f5e
Binary files /dev/null and b/assets/logos/datapaulette.jpg differ
diff --git a/assets/logos/fdn.png b/assets/logos/fdn.png
new file mode 100644
index 0000000..a1df2c2
Binary files /dev/null and b/assets/logos/fdn.png differ
diff --git a/assets/logos/fuz.png b/assets/logos/fuz.png
new file mode 100644
index 0000000..2a9db37
Binary files /dev/null and b/assets/logos/fuz.png differ
diff --git a/assets/logos/hackstub.svg b/assets/logos/hackstub.svg
new file mode 100644
index 0000000..9a6a1af
--- /dev/null
+++ b/assets/logos/hackstub.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/logos/lebib.png b/assets/logos/lebib.png
new file mode 100644
index 0000000..a8e71d8
Binary files /dev/null and b/assets/logos/lebib.png differ
diff --git a/assets/logos/lol_logo_txt.png b/assets/logos/lol_logo_txt.png
new file mode 100644
index 0000000..d283556
Binary files /dev/null and b/assets/logos/lol_logo_txt.png differ
diff --git a/assets/logos/lqdn.png b/assets/logos/lqdn.png
new file mode 100644
index 0000000..4e3bedd
Binary files /dev/null and b/assets/logos/lqdn.png differ
diff --git a/assets/notebook.jpg b/assets/notebook.jpg
deleted file mode 100644
index 9414892..0000000
Binary files a/assets/notebook.jpg and /dev/null differ
diff --git a/assets/paper.avif b/assets/paper.avif
deleted file mode 100644
index 3aef4ec..0000000
Binary files a/assets/paper.avif and /dev/null differ
diff --git a/assets/stickers/arbre-hetre.webp b/assets/stickers/arbre-hetre.webp
deleted file mode 100644
index 25fc852..0000000
Binary files a/assets/stickers/arbre-hetre.webp and /dev/null differ
diff --git a/assets/stickers/bac-e2.webp b/assets/stickers/bac-e2.webp
deleted file mode 100644
index 5dc3f98..0000000
Binary files a/assets/stickers/bac-e2.webp and /dev/null differ
diff --git a/assets/stickers/clavier.webp b/assets/stickers/clavier.webp
deleted file mode 100644
index cdb50d6..0000000
Binary files a/assets/stickers/clavier.webp and /dev/null differ
diff --git a/assets/stickers/clef.webp b/assets/stickers/clef.webp
deleted file mode 100644
index e84b8bd..0000000
Binary files a/assets/stickers/clef.webp and /dev/null differ
diff --git a/assets/stickers/ecran.png b/assets/stickers/ecran.png
new file mode 100644
index 0000000..ec77d74
Binary files /dev/null and b/assets/stickers/ecran.png differ
diff --git a/assets/stickers/ecran.webp b/assets/stickers/ecran.webp
deleted file mode 100644
index 01abf76..0000000
Binary files a/assets/stickers/ecran.webp and /dev/null differ
diff --git a/assets/stickers/ferasouder.png b/assets/stickers/ferasouder.png
new file mode 100644
index 0000000..45ebedd
Binary files /dev/null and b/assets/stickers/ferasouder.png differ
diff --git a/assets/stickers/foin.webp b/assets/stickers/foin.webp
deleted file mode 100644
index 5a25c86..0000000
Binary files a/assets/stickers/foin.webp and /dev/null differ
diff --git a/assets/stickers/machineacoudre.png b/assets/stickers/machineacoudre.png
new file mode 100644
index 0000000..7889ed9
Binary files /dev/null and b/assets/stickers/machineacoudre.png differ
diff --git a/assets/stickers/machineacoudre.webp b/assets/stickers/machineacoudre.webp
deleted file mode 100644
index efe4814..0000000
Binary files a/assets/stickers/machineacoudre.webp and /dev/null differ
diff --git a/assets/stickers/tracteur.png b/assets/stickers/tracteur.png
new file mode 100644
index 0000000..f7e9e11
Binary files /dev/null and b/assets/stickers/tracteur.png differ
diff --git a/assets/stickers/tracteur.webp b/assets/stickers/tracteur.webp
deleted file mode 100644
index 8cb2127..0000000
Binary files a/assets/stickers/tracteur.webp and /dev/null differ
diff --git a/contact.html b/contact.html
new file mode 100644
index 0000000..b016c39
--- /dev/null
+++ b/contact.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+ Camp Interhack 2026 – Contact
+
+
+
+
+ maison
+ guide
+ poster
+ contact
+
+
+
+
+
+
+
+
+ camp
+
+ interhack
+ contact
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/css/base.css b/css/base.css
index bd4db14..add29bc 100644
--- a/css/base.css
+++ b/css/base.css
@@ -1,62 +1,143 @@
+
+/* Primary Font */
@font-face {
- font-family: Banquise;
- src: url(../assets/Banquise-Regular.woff);
+ font-family: MonTrappist;
+ src: url(../assets/fonts/MonTrappist-Black.woff);
}
+/* Secondary Font */
@font-face {
- font-family: Dymo;
- src: url(../assets/Dymo.ttf);
+ font-family: Segoesc;
+ src: url(../assets/fonts/segoesc.ttf);
}
-@font-face {
- font-family: Erika;
- src: url(../assets/Erika-Type.ttf);
+:root {
+ --primary-bg-color: black; /* global scope */
+ --accent-violet: #8800FF;
+ --accent-yellow: #ffbf3e;
+ --accent-orange: #FF4E00 ;
+ --accent-minor-blue: #33D8D8;
+ --text-color-primary: #FFFFFF;
}
html, body {
- height: 100%;
margin: 0;
+ font-family: "Verdana", "Helvetica", "Arial", sans-serif;
+ color: var(--text-color-primary);
+ background: var(--primary-bg-color);
+ overflow-x: hidden; /* empêche les stickers de déborder horizontalement */
+}
+
+img {
+ max-width: 100%;
}
a {
- text-decoration: none;
+ color: inherit;
+}
+
+nav a, footer a {
color: black;
+ text-decoration: none;
}
-main {
- /* background-color: #413f43;*/
- background: #058C9E;
- background: radial-gradient(at left top, #058C9E, #BC5180);
- /* background-repeat: no-repeat;
- background-size: cover; */
-}
-
-
main h1, main h2, main h3 {
- font-family: Banquise;
+ font-family: MonTrappist;
color: white;
- z-index: 2;
+ z-index: 20;
+}
+
+main h1 span, main h2 span, main h3 {
+ background-color: #000000b8;
+ padding: auto;
}
main h1 {
- font-size: 8em;
+ position: relative;
+ text-align: center;
+ margin: auto;
+ width: 50%;
+ font-size: clamp(4em, 14vw, 8em);
+ margin-top: 5%;
+ max-width: 1400px;
+}
+
+main h2 {
+ position: relative;
+ margin: 12% auto 5% auto;
+ text-align: center;
+ font-size: clamp(1.5em, 12vw, 4em);
+ font-family: segoesc;
+}
+
+main h2:first-of-type {
+ font-size: clamp(1.5em, 5vw, 5em);
+ margin: 1em auto 0.5em auto;
+}
+
+main h3 {
+ position: relative;
+ margin: auto;
+ width: 100%;
+ font-size: clamp(1.8em, 3vw, 4em);
+ margin-top: 5%;
+ margin-bottom: 2%;
+ font-weight: lighter;
+ text-align: center;
+}
+
+main section h3 {
+ text-align: center;
+}
+
+main h4 {
+ margin: 0.8em 0;
+}
+
+main p {
+ margin: 0 0 min(1em, 2%) 1%;
+ display: inline-block;
+ z-index: 3;
+}
+
+main p:last-child {
+ margin-bottom: 0;
+}
+
+section {
+ position: relative;
+ max-width: 900px;
+ font-size: 1.5em;
+ line-height: 1.3em;
+ margin: auto;
+ margin-bottom: 100px;
+ padding: 2%;
+ padding-left: min(1em, 2%);
+ z-index: 1000;
+ box-shadow: -5px 5px 0px var(--accent-yellow), -10px 10px 0px var(--accent-orange), -15px 15px 0px var(--accent-violet);
+ background-color: #000000b8;
+}
+
+section :is(h1, h2, h3, h4, h5, h6) {
+ line-height: 1em;
}
nav, footer, aside {
- background: #d7d7d7;
- background: url(../assets/paper.avif);
+ background: var(--accent-violet);
padding: 5px;
- font-family: Erika;
+ font-family: MonTrappist;
z-index: 10000;
position: relative;
- opacity: 0.95;
- box-shadow: 0px 0px 10px #00000070;
+}
+
+nav {
+ padding-left: 10%;
}
nav a, footer a, aside a {
- font-family: Dymo;
font-size: 3em;
display: inline-block;
+ margin: 0.1em 0.3em;
}
nav a.current {
@@ -67,17 +148,95 @@ footer a:hover, nav a:hover {
transform: rotate(-2deg);
}
-
-
footer {
display: block;
text-align: center;
display: flex;
justify-content: space-evenly;
+ align-items: end;
}
@media (max-width: 600px) {
footer {
flex-direction: column;
+ align-items: center;
}
-}
\ No newline at end of file
+}
+
+main > img {
+ object-fit: scale-down;
+}
+
+figcaption {
+ font-size: 0.6em;
+ line-height: initial;
+}
+
+.btn-nice {
+ color: #FFFFFF;
+ text-shadow: -2px 2px 0px var(--accent-orange), -4px 4px 0px var(--accent-violet);
+ color: var(--accent-yellow);
+ font-size: 1.2em;
+ text-align: center;
+ margin: auto;
+ position: relative;
+ display: block;
+ font-weight: bold;
+}
+
+#camp {
+ font-family: segoesc;
+ float: left;
+ margin-left: 10%;
+}
+
+#interhack {
+ text-shadow: -5px 5px 0px var(--accent-orange), -10px 10px 0px var(--accent-violet);
+ color: var(--accent-yellow);
+ margin-right: 10%;
+}
+
+#progress {
+ display: block;
+ text-align: center;
+}
+
+#gauge-bar {
+ float: left;
+}
+
+#fundraising-bar {
+ float: left;
+}
+
+code {
+ background: #ffffff1f;
+ padding: 0.2em 0.4em;
+ border-radius: 0.2em;
+ margin-right: 0.5ex;
+}
+
+.btn-nice code {
+ background: none;
+ padding: 0;
+ margin-right: 0;
+}
+
+div#maj-guide {
+ text-align: center;
+ margin: 2em 1em;
+}
+
+.center {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+
+@media (max-width: 500px) {
+ /* Hide stickers on mobile */
+ .randomStart {
+ display: none;
+ }
+}
diff --git a/css/contact.css b/css/contact.css
new file mode 100644
index 0000000..f6c09b8
--- /dev/null
+++ b/css/contact.css
@@ -0,0 +1,15 @@
+#contact {
+ display: flex;
+ align-items: last baseline;
+ gap: 2em;
+ justify-content: space-between;
+}
+
+h1 span:nth-of-type(n+3) {
+ position: relative;
+ text-align: center;
+ font-size: clamp(1.5rem, 5vw, 5rem);
+ font-family: segoesc;
+ display: block;
+ margin: 1em auto 0.5em auto;
+}
\ No newline at end of file
diff --git a/css/drag.css b/css/drag.css
index b3b3804..766e9a1 100644
--- a/css/drag.css
+++ b/css/drag.css
@@ -1,10 +1,10 @@
main img.draggable {
- max-width: 150px;
- max-height: 150px;
+ max-width: 200px;
+ max-height: 200px;
position: absolute;
- filter: saturate(2);
+ z-index: 1;
}
diff --git a/css/home.css b/css/home.css
index eb9d863..716d952 100644
--- a/css/home.css
+++ b/css/home.css
@@ -1,43 +1,123 @@
-main {
- display: block;
- color: black;
- overflow: hidden;
- width: 100%;
- min-height: 1000px;
-}
-main h1 {
+.logo {
+ width: 100%;
+ height: 100%;
+ max-width: 7em ;
+ padding: 0.2em;
+ box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
+ margin: 1em;
+ z-index: 2;
position: relative;
- text-align: center;
- margin: auto;
- width: 100%;
- font-size: clamp(4em, 14vw, 8em);
- margin-top: 5%;
}
-main h2 {
- margin: 4% auto;
- text-align: center;
- font-size: clamp(2.5em, 5vw, 4em);
+/* Section des participants */
+
+.participants {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 200px;
}
-main p {
- margin: 1%;
- padding: 1%;
- background: white;
- background: url(../assets/notebook.jpg);
- /* border: solid 1px; */
- opacity: 0.92;
- display: inline-block;
+#participe > div.txt {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-evenly;
}
-section {
- max-width: 1400px;
- font-size: 1.5em;
+#participe p {
text-align: center;
- font-family: Erika;
- margin: auto;
- margin-bottom: 100px;
- columns: 560px;
- padding: 2%;
+}
+
+
+/* Section des dons */
+
+#don > div {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-evenly;
+}
+
+#don button {
+ flex-grow: 1;
+ width: 3em;
+ color: white;
+ font-size: 2em;
+ border: none;
+ font-family: MonTrappist;
+ margin: 0.2em;
+ padding: 0.3em;
+ background: var(--primary-bg-color);
+ background: linear-gradient(0deg,rgba(136, 0, 255, 1) 0%, rgba(255, 191, 62, 1) 50%, rgba(255, 78, 0, 1) 100%);
+ box-shadow: -5px 5px 0px var(--accent-yellow), -10px 10px 0px var(--accent-orange), -15px 15px 0px var(--accent-violet);
+ cursor: pointer;
+}
+
+#don > hr {
+ margin-top: 1em;
+}
+
+#don p {
+ text-align: justify;
+ text-align: center;
+}
+
+@keyframes bang {
+ from {
+ transform: translate3d(0,0,0);
+ opacity: 1;
+ }
+}
+
+.btn-pop i {
+ /* position: ; */
+ display:run-in;
+ left: 0px;
+ top: 0px;
+ width: 1px;
+ height: 1px;
+ background: red;
+ opacity: 0;
+}
+
+/* Barre de progression */
+
+.progression {
+animation: 3s loadbar;
+width:auto;
+background-color: white;
+display: inline-block;
+padding: 0.7em 0.5em 0.5em 0.5em;
+text-wrap: nowrap;
+}
+
+@keyframes loadbar {
+ 0% { width:0%; }
+}
+
+.bar {
+width : 50%;
+margin : auto;
+border : 2px solid white;
+display: inline-block;
+}
+.progression > span {
+
+display: inline-block;
+width: 100%;
+font-family: MonTrappist;
+font-size : 1.5em;
+}
+
+.lessthanhalf span {
+ padding-left: 100%;
+ color: white;
+ padding-left: calc(100% + 1em);
+}
+
+.morethanhalf {
+ text-align : end;
+ background: linear-gradient(90deg,rgba(136, 0, 255, 1) 0%, rgba(255, 78, 0, 1) 42%, rgba(255, 191, 62, 1) 100%);
}
diff --git a/css/poster.css b/css/poster.css
index 940d911..64701ee 100644
--- a/css/poster.css
+++ b/css/poster.css
@@ -4,7 +4,6 @@ body {
}
aside {
- background: url(../assets/notebook.jpg);
width: fit-content;
margin-top: 10px;
}
@@ -16,6 +15,7 @@ main {
box-shadow: 5px 5px 5px #00000085;
margin: 50px auto;
position: relative;
+ background: var(--primary-bg-color);
}
@page {
diff --git a/guide.template.html b/guide.template.html
new file mode 100644
index 0000000..47c3c44
--- /dev/null
+++ b/guide.template.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Guide Interhack Camp 2026
+
+
+
+ maison
+ guide
+ poster
+ contact
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ camp
+
+ interhack
+
+
+
+ Informations pratiques
+
+
+
+
+
+ Dernière mise à jour du guide:
+
+
+
+
+
diff --git a/guide.tmp.md b/guide.tmp.md
new file mode 100644
index 0000000..e69de29
diff --git a/index.html b/index.html
index d3b628e..393848b 100644
--- a/index.html
+++ b/index.html
@@ -1,4 +1,5 @@
-
+
+
@@ -7,37 +8,35 @@
- Camp Interhack 2026
+
+
+
+ Camp Interhack
- home
+ maison
+ guide
poster
+ contact
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
- Camp
- Interhack
- 2026
+ camp
+
+ interhack
@@ -83,6 +82,110 @@
collective.
Seule exigence, respecter toutes les marginalités, originalités, bizarreries et normaleries de
chacun·es.
+
+
+
+
+
+
+ 📅 Ajouter l'évènement à son calendrier (.ics)
+
+
+
+
+
+
+ Où en est-on ?
+
+ Il y a
+
+
+
+
+ ?/200
+
+
+
+
+ places déjà réservées.
+
+ Et nous avons reçu
+
+
+
+ ? %
+
+
+
+ des dons dont nous avons besoin.
+
+
+
+
+
+
+
+ Faire un don
+
+ Nous avons besoin de sous avant le débût du Camp pour financer l'achat de fournitures, payer la réservation du lieu et monter la logistique.
+
+
+
+
Si vous préférez faire un virement, demandez-nous l'IBAN sur orga [arobase] camp.interhacker.space. Nous payons autour de ~2% de frais lors des paiements par carte bancaire.
+
+
+
+
Nous estimons avoir un budget de 10 000 ~ 15 000€ et être autour de 200 personnes, et aurons donc besoin d'au moins autant pour que le camp soit à l'équilibre.
+
Voir le détail des comptes
+
+
+
+
Si tu ne sais pas quel prix libre donner, et/ou que tu veux de l'aide pour définir un prix libre juste et éclairé pour ta participation au camp, voici un thunomètre rapide qui peut répondre au besoin.
+
Thunomètre
+
+
+
+
+
+ Iels y participent
+
+
+
+
+
+
+
+
et bien d'autres ! Rejoignez le canal Matrix sur #interhack:matrix.interhacker.space
+
+
diff --git a/js/drag.js b/js/drag.js
index 55d68e5..cfb1b5d 100644
--- a/js/drag.js
+++ b/js/drag.js
@@ -1,5 +1,6 @@
-const stepSize = 100;
+const stepSize = 1;
const main = document.querySelector('main');
+
const draggables = document.querySelectorAll(".draggable");
const randomStarts = document.querySelectorAll(".randomStart");
@@ -8,8 +9,8 @@ var zIndex = 2;
activateDraggables();
/**
- *
- * @param {number} n
+ *
+ * @param {number} n
* @returns {number}
*/
function stepedSize(n) {
@@ -19,8 +20,6 @@ function stepedSize(n) {
function move(e) {
e.preventDefault();
let target = e.target;
- target.style['z-index'] = zIndex;
- zIndex++;
target.moving = true;
@@ -63,13 +62,14 @@ function activateDraggables() {
}
function randomizeDragables() {
- maxX = main.offsetWidth - 150;
+ maxX = main.offsetWidth - 250;
maxY = main.offsetHeight - 150;
for (var randomStart of randomStarts) {
randX = Math.floor(Math.random() * maxX);
randY = Math.floor(Math.random() * maxY);
randomStart.style.left = randX + "px";
randomStart.style.top = randY + "px";
+ randomStart.style.rotate = Math.floor(Math.random() * 61) - 30 + "deg";
}
}
diff --git a/js/pop.js b/js/pop.js
new file mode 100644
index 0000000..345b250
--- /dev/null
+++ b/js/pop.js
@@ -0,0 +1,31 @@
+document.querySelectorAll('button').forEach(function(button) {
+ button.addEventListener('mouseenter', function() {
+ function random(max) {
+ return Math.random() * (max - 0) + 0;
+ }
+
+ var c = document.createDocumentFragment();
+ for (var i = 0; i < 100; i++) {
+ var styles = 'position: absolute;' +
+ 'left: ' + (random(100)) + '30%;' + // Limit the position to within the button
+ 'top: ' + (random(60)) + '30%;' + // Limit the position to within the button
+ 'width: 3px; height: 6px; ' + // Increase size
+ 'transform: translate(-50%, -50%) rotate(' + random(360) + 'deg);' +
+ 'background: hsla(' + random(360) + ', 100%, 50%, 1);' +
+ 'animation: bang 2000ms ease-out forwards;' +
+ 'opacity: 0;' +
+ 'z-index: 10;'; // Set a high z-index
+
+ var e = document.createElement("i");
+ e.style.cssText = styles;
+ c.appendChild(e);
+ }
+ button.appendChild(c);
+ setTimeout(() => {
+ // Create an array of the elements to remove
+ let childrenToRemove = Array.from(button.querySelectorAll('i'));
+ // Remove each element
+ childrenToRemove.forEach(child => button.removeChild(child));
+ }, 3000);
+ });
+});
diff --git a/js/progress.js b/js/progress.js
new file mode 100644
index 0000000..9cefb6a
--- /dev/null
+++ b/js/progress.js
@@ -0,0 +1,91 @@
+const gauge_url = "https://api.camp.interhacker.space/api/gauge"
+const fundraising_url = "https://api.camp.interhacker.space/api/fundraising"
+const gaugeMax = 200;
+const fundraisingTotalMax = 20000;
+
+async function getGauge() {
+ // // REMOVE WHEN SIGNUP FORM IS OPEN
+ // return 0;
+
+ try {
+ const response = await fetch(gauge_url);
+ if (!response.ok) {
+ throw new Error(`Response status: ${response.status}`);
+ }
+
+ const result = await response.json();
+
+ return result.gauge
+ } catch (error) {
+ console.error(error.message);
+
+ return null;
+ }
+}
+
+async function getFundraisingTotal() {
+ try {
+ const response = await fetch(fundraising_url);
+ if (!response.ok) {
+ throw new Error(`Response status: ${response.status}`);
+ }
+
+ const result = await response.json();
+
+ return result.total
+ } catch (error) {
+ console.error(error.message);
+
+ return null;
+ }
+}
+
+function percentRatio(ratio) {
+ return Math.floor(ratio * 100);
+}
+
+function setAboveHalf(ratio, element) {
+ if (ratio > 0.5) {
+ element.classList.remove("lessthanhalf");
+ element.classList.add("morethanhalf");
+ }
+}
+
+async function setGauge() {
+ const gauge = await getGauge();
+
+ if (gauge !== null) {
+ const gaugeBar = document.getElementById("gauge-bar");
+ const gaugeText = document.getElementById("gauge-text");
+
+ const gaugeRatio = gauge / gaugeMax;
+
+ gaugeBar.style.setProperty("width", percentRatio(gaugeRatio) + "%");
+ gaugeText.innerText = gauge + " / " + gaugeMax;
+
+ setAboveHalf(gaugeRatio, gaugeBar);
+ }
+}
+
+async function setFundraisingTotal() {
+ const fundraising_total = await getFundraisingTotal();
+
+ if (fundraising_total !== null) {
+ const fundraisingBar = document.getElementById("fundraising-bar");
+ const fundraisingText = document.getElementById("fundraising-text");
+
+ const fundraisingRatio = fundraising_total / fundraisingTotalMax;
+
+ fundraisingBar.style.setProperty("width", percentRatio(fundraisingRatio) + "%");
+ fundraisingText.innerText = percentRatio(fundraisingRatio) + " %";
+
+ setAboveHalf(fundraisingRatio, fundraisingBar);
+ }
+}
+
+async function setProgress() {
+ setGauge();
+ setFundraisingTotal();
+}
+
+document.addEventListener("DOMContentLoaded", setProgress);
diff --git a/poster.html b/poster.html
index 7b7b1f1..b6c5875 100644
--- a/poster.html
+++ b/poster.html
@@ -1,4 +1,5 @@
-
+
+
@@ -7,34 +8,56 @@
+
Camp Interhack 2026 – Poster
- home
+ maison
+ guide
poster
+ contact
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
Camp
Interhack
+ 2 au 5 Juillet
2026
+
+ à l'Antenne
+ 15 route de Saint Dolay 44530 Sévérac
+
+
+
+ camp.interhacker.space
+
+
+
+
+
diff --git a/update-guide.sh b/update-guide.sh
new file mode 100755
index 0000000..0bdd1bb
--- /dev/null
+++ b/update-guide.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+GUIDE_EDGEDOC_URL="https://md.lqdn.fr/H0gKhjbKTfeM41L9bG9zUA"
+
+DATE_CMD="date --utc '+%d/%m/%Y %H:%I UTC'"
+
+echo "Mise a jour du guide dans guide.html a partir du edgedoc"
+echo "$GUIDE_EDGEDOC_URL"
+
+set -e
+curl --silent --fail "$GUIDE_EDGEDOC_URL/download" > guide.tmp.md
+pandoc --from markdown --to html guide.tmp.md > guide.tmp.html
+cat guide.template.html \
+ | sed '/EDGEDOC/{
+ s///;
+ r guide.tmp.html
+ }' \
+ | sed -e "/DATE/{
+ s///;
+ n;
+ e $DATE_CMD
+ }" \
+ > guide.html
+
+rm guide.tmp.md guide.tmp.html
\ No newline at end of file