diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml new file mode 100644 index 0000000..3c80f2e --- /dev/null +++ b/.forgejo/workflows/build.yaml @@ -0,0 +1,24 @@ +on: [push] +jobs: + build: + runs-on: docker + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - 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/Dockerfile b/Dockerfile index 519aff8..38e5b29 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM docker.io/nginx:1.29-alpine -COPY index.html poster.html guide.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/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/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/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/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 + + + + + +
+ + + + +

+ camp +
+ interhack + contact +

+

+

+
+
+

Mail :

+ orga@camp.interhacker.space +
+
+

Matrix :

+ #interhack:matrix.interhacker.space +
+
+
+ + + + \ No newline at end of file diff --git a/css/base.css b/css/base.css index 8683964..add29bc 100644 --- a/css/base.css +++ b/css/base.css @@ -47,6 +47,11 @@ main h1, main h2, main h3 { z-index: 20; } +main h1 span, main h2 span, main h3 { + background-color: #000000b8; + padding: auto; +} + main h1 { position: relative; text-align: center; @@ -82,7 +87,7 @@ main h3 { } main section h3 { - text-align: left; + text-align: center; } main h4 { @@ -183,14 +188,25 @@ figcaption { font-family: segoesc; float: left; margin-left: 10%; - line-height: 0.8em; } #interhack { text-shadow: -5px 5px 0px var(--accent-orange), -10px 10px 0px var(--accent-violet); color: var(--accent-yellow); margin-right: 10%; - line-height: 0.5em; +} + +#progress { + display: block; + text-align: center; +} + +#gauge-bar { + float: left; +} + +#fundraising-bar { + float: left; } code { @@ -206,9 +222,21 @@ code { 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; } -} \ No newline at end of file +} 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/home.css b/css/home.css index 91028e9..716d952 100644 --- a/css/home.css +++ b/css/home.css @@ -10,6 +10,8 @@ position: relative; } +/* Section des participants */ + .participants { display: flex; justify-content: center; @@ -17,6 +19,69 @@ height: 200px; } +#participe > div.txt { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-evenly; +} + +#participe p { + text-align: center; +} + + +/* 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 { @@ -53,6 +118,6 @@ font-size : 1.5em; } .morethanhalf { -text-align : end; -color:black; + 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/guide.template.html b/guide.template.html index 7c88b2c..47c3c44 100644 --- a/guide.template.html +++ b/guide.template.html @@ -23,6 +23,7 @@ BISOUS maison guide poster + contact
@@ -55,6 +56,10 @@ BISOUS + +
+ 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 962300c..e86b24d 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,7 @@ + Camp Interhack @@ -18,6 +19,7 @@ maison guide poster + contact
@@ -80,38 +82,111 @@ collective.
Seule exigence, respecter toutes les marginalités, originalités, bizarreries et normaleries de chacun·es.

- -

- Où en est-on ? -

+ +

+

+ S'inscrire +

+

+ +

+ 📅 Ajouter l'évènement à son calendrier (.ics) +

+ + +
+

+ Où en est-on ? +

Il y a

-
?/200
-

places déjà réservées. Ouverture prochaine des inscriptions !

+ +
+ + + ?/200 + + +
+ +

places déjà réservées.


Et nous avons reçu

-
? %
-

des dons dont nous avons besoin (voir le détail des comptes)

-
-

- Iels y participent -

- -
- - - - - - - +
+ + + ? % + +
-
- - - +

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/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 index ea1bdf2..9cefb6a 100644 --- a/js/progress.js +++ b/js/progress.js @@ -1,11 +1,11 @@ const gauge_url = "https://api.camp.interhacker.space/api/gauge" const fundraising_url = "https://api.camp.interhacker.space/api/fundraising" -const gaugeMax = 250; +const gaugeMax = 200; const fundraisingTotalMax = 20000; async function getGauge() { - // REMOVE WHEN SIGNUP FORM IS OPEN - return 0; + // // REMOVE WHEN SIGNUP FORM IS OPEN + // return 0; try { const response = await fetch(gauge_url); @@ -61,7 +61,7 @@ async function setGauge() { const gaugeRatio = gauge / gaugeMax; gaugeBar.style.setProperty("width", percentRatio(gaugeRatio) + "%"); - gaugeText.innerText = gauge + "/" + gaugeMax; + gaugeText.innerText = gauge + " / " + gaugeMax; setAboveHalf(gaugeRatio, gaugeBar); } diff --git a/poster.html b/poster.html index 1217a80..b6c5875 100644 --- a/poster.html +++ b/poster.html @@ -1,4 +1,5 @@ - + + @@ -14,8 +15,9 @@