Author SHA1 Message Date
coja fe562d05a4 [Fix] fix 2026-08-09 05:56:13 +02:00
coja 1af174b20b [Cleanup] agents 2026-08-09 05:54:50 +02:00
cojaandcoja 95ed69a32a [Doc] sudo for dev 2026-08-09 05:54:50 +02:00
cojaandcoja 34d203091c [Gobal] added flake8 and did format 2026-08-09 05:54:50 +02:00
cojaandcoja 0b78b3c247 [Page] language change fix 2026-08-09 05:54:50 +02:00
cojaandcoja acd0f61b3b [Page] statute strange unicodes 2026-08-09 05:54:50 +02:00
cojaandcoja 44fc4bfae4 [Page] syntax fixes and formating 2026-08-09 05:54:50 +02:00
cojaandcoja e89fc7dff6 [Page] deconference 2026-08-09 05:54:50 +02:00
cojaandcoja 8c5ba2c5e7 [Jinja2] lang btn and cleanup 2026-08-09 05:54:09 +02:00
cojaandcoja 1a0b3167c0 [Jinja2] init 2026-08-09 05:54:07 +02:00
coja cc0127dbe3 [Fix] no more sudo needed, runtime warn 2026-08-09 05:49:52 +02:00
coja 2843f1763e [Lint] ran formated 2026-08-09 05:02:17 +02:00
coja d53aa42ecc [Makefile] lint and format 2026-08-09 05:01:59 +02:00
coja db0169f34b [Theme] light/dark persistance 2026-08-09 04:43:46 +02:00
coja b4a968d991 [Lang] fix persistance 2026-08-09 04:39:00 +02:00
coja a823f3a8bf [Services] pastebin 2026-08-09 04:14:56 +02:00
fram3d a3e9b61c5c added events for 08-2026 2026-07-29 00:50:30 +02:00
coja ec0b797f15 [Events] July update 2026-07-01 00:40:44 +02:00
coja e63f6a85be [Fix] typo and locations 2026-06-22 16:47:27 +02:00
coja 3906aef068 [Events] june update 2026-06-02 01:14:46 +02:00
coja 1210930ff9 [Event] june update 2026-06-01 23:20:47 +02:00
coja a212d2bece [Event] page, repetition cleanup 2026-06-01 00:49:01 +02:00
coja b34ed3c578 [Events] June partial 2026-06-01 00:47:23 +02:00
coja 7e7dbe1b49 [Events] fix and first event june 2026-06-01 00:35:27 +02:00
coja a58f5e4514 [Events] Loza lecture 2026-05-27 01:56:06 +02:00
hugo 15c0354eb3 Konferencija umesto filma 2026-05-15 22:36:19 +02:00
coja 2cf941f284 [Page] support remove monero 2026-05-05 14:26:44 +02:00
12 changed files with 65 additions and 26 deletions
-15
View File
@@ -1,15 +0,0 @@
# AGENTS.md
## Core Workflow
- **Setup**: `make prep` (creates `.venv` and installs `requirements.txt`)
- **Build**: `make build` (runs `atom_gen.py`, `prep.py`, and `build_pages.py`)
- **Events**: Update `dogadjaji.csv` then run `make events` (updates pages and generates images via `image_poster.py`)
- **Development**: `make dev` (starts Nginx using `nginx.dev.conf`) and `make stop` to terminate.
## Technical Details
- **Environment**: Uses a local virtual environment in `.venv`. Always use `./.venv/bin/python` or ensure the venv is activated.
- **Output**: The generated website is stored in the `site/` directory.
- **Data**: Events are driven by `dogadjaji.csv`.
- **Web Server**: Uses Nginx for the development server.
+3 -4
View File
@@ -4,8 +4,8 @@ help:
@echo "Available commands:" @echo "Available commands:"
@echo " make prep - Create venv and install requirements" @echo " make prep - Create venv and install requirements"
@echo " make events - Update site from CSV (build pages + images)" @echo " make events - Update site from CSV (build pages + images)"
@echo " make dev - Start development server (might need a sudo)" @echo " make dev - Start development server"
@echo " make stop - Stop development server (might need a sudo)" @echo " make stop - Stop development server"
@echo " make build - Full website build sequence" @echo " make build - Full website build sequence"
@echo " make help - Show this help message" @echo " make help - Show this help message"
@@ -27,11 +27,10 @@ dev:
nginx -p . -c nginx.dev.conf nginx -p . -c nginx.dev.conf
stop: stop:
nginx -p . -s stop nginx -p . -c nginx.dev.conf -s stop
lint: lint:
./.venv/bin/flake8 . --config .flake8 --exclude .venv ./.venv/bin/flake8 . --config .flake8 --exclude .venv
format: format:
./.venv/bin/black . ./.venv/bin/black .
+1
View File
@@ -32,6 +32,7 @@ PAGES = [
env = Environment(loader=FileSystemLoader("template")) env = Environment(loader=FileSystemLoader("template"))
def main(): def main():
os.makedirs("site/en/", exist_ok=True) os.makedirs("site/en/", exist_ok=True)
for page in PAGES: for page in PAGES:
+19 -1
View File
@@ -362,6 +362,24 @@ datum, vreme, lokacija, tema, tip, link, temaEN
11-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Hardware hackathon,workshop,,Hardware hackathon 11-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Hardware hackathon,workshop,,Hardware hackathon
12-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,OpenSCAD,lecture,,OpenSCAD 12-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,OpenSCAD,lecture,,OpenSCAD
18-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire (Bandit),workshop,https://forum.dmz.rs/t/overthewire-bandit-1-14/1196,OverTheWire (Bandit) 18-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire (Bandit),workshop,https://forum.dmz.rs/t/overthewire-bandit-1-14/1196,OverTheWire (Bandit)
19-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: The Seventh Seal (1957),movie,,Movie: The Seventh Seal (1957) 19-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,The Strange Loop videos,lecture,https://www.thestrangeloop.com/index.html,The Strange Loop videos
25-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Reverse engineering,workshop,,Reverse engineering 25-05-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Reverse engineering,workshop,,Reverse engineering
26-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: TPB-AFK (2013),movie,,Movie: TPB-AFK (2013) 26-05-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Film: TPB-AFK (2013),movie,,Movie: TPB-AFK (2013)
31-05-2026, 17:00, Drustveni centar Loza - Ivankovačka 21 https://www.openstreetmap.org/node/4013343518,Uvod u informacionu bezbednost,lecture,,Introduction to information security
01-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Sysadmin radionica,workshop,,Sysadmin workshop
02-06-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606,Software hackathon,workshop,,Software hackathon
07-06-2026, 10:00, KC Magacin - Marka Kraljevica 4 https://www.openstreetmap.org/#map=18/44.813246/20.453640, Zig Day,workshop,https://zig.day/europe/belgrade/1/,Zig Day
08-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Decentrala offline forum,workshop,,Decentrala offline forum
15-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire - Bandit CTF,workshop,,OverTheWire - Bandit CTF
16-06-2026, 18:00, Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606, OSM contributing,workshop,,OSM contributing
22-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,OverTheWire - Bandit CTF,workshop,,OverTheWire - Bandit CTF
29-06-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,LAN party,party,,LAN Party
06-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Linux ricing,lightning,,Linux ricing
13-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Hardware CTF/Logic analyzer,workshop,,Hardware CTF/Logic analyzer
20-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,T-shirt workshop,workshop,,T-shirt workshop
27-07-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Lightning talks,lightning,,Lightning talks
03-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Sysadmin radionica,workshop,,Sysadmin workshop
10-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,LAN party,party,,LAN Party
17-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Mail server - 1. deo,workshop,, Mail server - part 1
24-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Film: Primer (2004),movie,,Movie: Primer (2004)
31-08-2026, 19:00, Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876,Lightning talks,lightning,,Lightning talks
1 datum vreme lokacija tema tip link temaEN
362 11-05-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Hardware hackathon workshop Hardware hackathon
363 12-05-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 OpenSCAD lecture OpenSCAD
364 18-05-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 OverTheWire (Bandit) workshop https://forum.dmz.rs/t/overthewire-bandit-1-14/1196 OverTheWire (Bandit)
365 19-05-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 Film: The Seventh Seal (1957) The Strange Loop videos movie lecture https://www.thestrangeloop.com/index.html Movie: The Seventh Seal (1957) The Strange Loop videos
366 25-05-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Reverse engineering workshop Reverse engineering
367 26-05-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 Film: TPB-AFK (2013) movie Movie: TPB-AFK (2013)
368 31-05-2026 17:00 Drustveni centar Loza - Ivankovačka 21 https://www.openstreetmap.org/node/4013343518 Uvod u informacionu bezbednost lecture Introduction to information security
369 01-06-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Sysadmin radionica workshop Sysadmin workshop
370 02-06-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 Software hackathon workshop Software hackathon
371 07-06-2026 10:00 KC Magacin - Marka Kraljevica 4 https://www.openstreetmap.org/#map=18/44.813246/20.453640 Zig Day workshop https://zig.day/europe/belgrade/1/ Zig Day
372 08-06-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Decentrala offline forum workshop Decentrala offline forum
373 15-06-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 OverTheWire - Bandit CTF workshop OverTheWire - Bandit CTF
374 16-06-2026 18:00 Matematički fakultet (Učionica JAG2) https://www.openstreetmap.org/node/3807078606 OSM contributing workshop OSM contributing
375 22-06-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 OverTheWire - Bandit CTF workshop OverTheWire - Bandit CTF
376 29-06-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 LAN party party LAN Party
377 06-07-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Linux ricing lightning Linux ricing
378 13-07-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Hardware CTF/Logic analyzer workshop Hardware CTF/Logic analyzer
379 20-07-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 T-shirt workshop workshop T-shirt workshop
380 27-07-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Lightning talks lightning Lightning talks
381 03-08-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Sysadmin radionica workshop Sysadmin workshop
382 10-08-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 LAN party party LAN Party
383 17-08-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Mail server - 1. deo workshop Mail server - part 1
384 24-08-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Film: Primer (2004) movie Movie: Primer (2004)
385 31-08-2026 19:00 Xecut - Jovana Ćirilova 15 - Local 3 https://www.openstreetmap.org/node/11749277876 Lightning talks lightning Lightning talks
+1 -1
View File
@@ -11,7 +11,7 @@ from cairosvg import svg2png
CURRENT_TIME = dt.date.today() CURRENT_TIME = dt.date.today()
NEXT_MONTH = CURRENT_TIME + relativedelta.relativedelta(months=1, day=1) NEXT_MONTH = CURRENT_TIME + relativedelta.relativedelta(months=1, day=1)
DAYS_OF_WEEK_SR = ("PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED") DAYS_OF_WEEK_SR = ("PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED")
DAYS_OF_WEEK_EN = ("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUn") DAYS_OF_WEEK_EN = ("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")
MONTHS_SR = ( MONTHS_SR = (
"Januar", "Januar",
+3
View File
@@ -1,9 +1,12 @@
# Start nginx in this directory with `nginx -p . -c nginx.conf` # Start nginx in this directory with `nginx -p . -c nginx.conf`
# Stop nginx with `nginx -p . -s stop` # Stop nginx with `nginx -p . -s stop`
pid nginx.pid;
events {} events {}
http { http {
# edit this for your system # edit this for your system
types_hash_max_size 2048;
types_hash_bucket_size 128; types_hash_bucket_size 128;
include /etc/nginx/mime.types; include /etc/nginx/mime.types;
+1
View File
@@ -0,0 +1 @@
172000
+2 -2
View File
@@ -66,14 +66,14 @@
<a href="https://github.com/searxng/searxg/">SearXNG</a> instance used for <a href="https://github.com/searxng/searxg/">SearXNG</a> instance used for
Web searching. Web searching.
</td> </td>
</tr> </tr> -->
<tr> <tr>
<td><a href="https://pastebin.dmz.rs/">Pastebin</a></td> <td><a href="https://pastebin.dmz.rs/">Pastebin</a></td>
<td> <td>
<a href="https://privatebin.info/">PrivateBin</a> instance we use for <a href="https://privatebin.info/">PrivateBin</a> instance we use for
sharing text files sharing text files
</td> </td>
</tr> --> </tr>
<tr> <tr>
<td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td> <td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td>
<td> <td>
+3 -1
View File
@@ -24,7 +24,9 @@
By simply using services we are hosting, conts as contributing, because in By simply using services we are hosting, conts as contributing, because in
that way you joining the decetralization. that way you joining the decetralization.
</p> </p>
<p>Also, we accept donations in bitcoin to the following address:</p> <p>
Also, we accept donations in bitcoin on the following address:
</p>
<ul> <ul>
<li>Bitcoin: <i>bc1qjhsfgq79wuzzv32yml9zglwzf9qcwfj3atuy74</i></li> <li>Bitcoin: <i>bc1qjhsfgq79wuzzv32yml9zglwzf9qcwfj3atuy74</i></li>
<!-- <li> <!-- <li>
+2 -2
View File
@@ -69,14 +69,14 @@
<a href="https://github.com/searxng/searxng/">SearXNG</a> instanca koju <a href="https://github.com/searxng/searxng/">SearXNG</a> instanca koju
koristimo za pretraživanje Interneta. Zamena za Google. koristimo za pretraživanje Interneta. Zamena za Google.
</td> </td>
</tr> </tr>-->
<tr> <tr>
<td><a href="https://pastebin.dmz.rs/">Pastebin</a></td> <td><a href="https://pastebin.dmz.rs/">Pastebin</a></td>
<td> <td>
<a href="https://privatebin.info/">PrivateBin</a> instanca koju koristimo <a href="https://privatebin.info/">PrivateBin</a> instanca koju koristimo
za brzo deljenje tekstualnih fajlova za brzo deljenje tekstualnih fajlova
</td> </td>
</tr>--> </tr>
<tr> <tr>
<td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td> <td><a href="ssh://soft.dmz.rs:2222/">Soft Serve</a></td>
<td> <td>
+7
View File
@@ -5,6 +5,13 @@ import os
DAYS_SR = ["PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED"] DAYS_SR = ["PON", "UTO", "SRE", "ČET", "PET", "SUB", "NED"]
DAYS_EN = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"] DAYS_EN = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
ICAL_LOCATION_ADDRESSES = {
"Xecut": "XECUT\\, Jovana Ćirilova 15\\, Local 3\\, Beograd\\, Serbia",
"Matematički fakultet (Učionica JAG2)": "Matematički fakultet (JAG2)\\, Vatroslava Jagića 5\\, Beograd\\, Serbia",
"Matematički fakultet (Učionica JAG3)": "Matematički fakultet (JAG3)\\, Vatroslava Jagića 5\\, Beograd\\, Serbia",
"Matematički fakultet (Učionica 153)": "Matematički fakultet\\, Svetog Nikole 39\\, Beograd\\, Serbia",
}
TYPES_DICT = { TYPES_DICT = {
"hack": ("hakaton", "hackathon"), "hack": ("hakaton", "hackathon"),
"lecture": ("predavanje", "lecture"), "lecture": ("predavanje", "lecture"),
+23
View File
@@ -15,6 +15,7 @@ window.addEventListener("DOMContentLoaded", () => {
/* Functions */ /* Functions */
const changeToDarkTheme = () => { const changeToDarkTheme = () => {
window.localStorage.setItem("theme", "dark");
document.documentElement.classList.add("dark"); document.documentElement.classList.add("dark");
themeBtn?.setAttribute("title", "turn the light on"); themeBtn?.setAttribute("title", "turn the light on");
Array.from(imgs).forEach((img) => { Array.from(imgs).forEach((img) => {
@@ -23,6 +24,7 @@ window.addEventListener("DOMContentLoaded", () => {
} }
const changeToLightTheme = () => { const changeToLightTheme = () => {
window.localStorage.setItem("theme", "light");
document.documentElement.classList.remove("dark"); document.documentElement.classList.remove("dark");
themeBtn?.setAttribute("title", "turn the light off"); themeBtn?.setAttribute("title", "turn the light off");
Array.from(imgs).forEach((img) => { Array.from(imgs).forEach((img) => {
@@ -46,6 +48,27 @@ window.addEventListener("DOMContentLoaded", () => {
window.addEventListener("resize", () => isMenuOpen() && closeMenu()); window.addEventListener("resize", () => isMenuOpen() && closeMenu());
main.addEventListener("click", () => isMenuOpen() && closeMenu()); main.addEventListener("click", () => isMenuOpen() && closeMenu());
/* Language persistence */
const currentLang = document.documentElement.lang || "sr";
const anchors = document.getElementsByTagName("a");
Array.from(anchors).forEach((a) => {
// Skip language switcher links
if (a.classList.contains("lang")) return;
const href = a.getAttribute("href");
if (!href) return;
if (href.startsWith("/")) {
// Replace existing language prefix or add one
if (href.startsWith("/sr") || href.startsWith("/en")) {
if (!href.startsWith(`/${currentLang}`)) {
a.setAttribute("href", `/${currentLang}${href.slice(3)}`);
}
} else {
// No language prefix, prepend currentLang
a.setAttribute("href", `/${currentLang}${href}`);
}
}
});
hamburger?.addEventListener("click", () => isMenuOpen() ? closeMenu() : openMenu()); hamburger?.addEventListener("click", () => isMenuOpen() ? closeMenu() : openMenu());
themeBtn.addEventListener("click", () => { themeBtn.addEventListener("click", () => {