Strona internetowa SKN Artefakty zbudowana w oparciu o Vite + React + TypeScript.
- Node.js 18+ (zalecane 20+)
- npm (wraz z Node)
- Instalacja zależności:
npm install- Tryb developerski:
npm run dev- Build produkcyjny:
npm run build- Podgląd builda:
npm run previewsrc/pages/- podstrony (Home / Projects / Events / Contact)src/components/- komponenty UIsrc/styles/- style w*.module.csssrc/data/- dane do sekcji Projekty i Wydarzenia (edytujesz je ręcznie)src/assets/images/- grafiki dla projektów i wydarzeń
Projekty są trzymane w pliku: src/data/projects.ts.
- Wrzuć miniaturę projektu do:
src/assets/images/projects-images/ - Najlepiej użyć formatu
.jpg/.pngi sensownej nazwy pliku (np.my-project.jpg).
Na górze pliku dopisz import, np.:
import imgMyProject from "../assets/images/projects-images/my-project.jpg";W tej samej kolejności/konwencji dopisz nowy obiekt w export const projects: Project[] = [ ... ].
Minimalny przykład:
{
id: "my-project",
title: "My Project",
description: "Krótki opis widoczny na kafelku.",
status: "GRA",
genre: "Platformer",
authors: "Imię Nazwisko, Imię Nazwisko",
projectLink: "https://example.com",
image: imgMyProject,
date: "2026-04-28",
},-
id(wymagane)- Musi być unikalne.
- Używane w URL:
/projects/:id. - Zalecany format:
kebab-case.
-
status,genre,authors- To są stringi rozdzielane przecinkami.
- UI zamienia je na „tagi”/listy poprzez
split(','), więc wpisuj np."GRA, Game Jam". - Dla autorów używaj formatu:
"Osoba 1, Osoba 2".
-
projectLink- Link do itch/strony/pobrania.
- Jeśli projekt ma status
Work-in-Progress(w dowolnym miejscu wstatus, wielkość liter bez znaczenia), na kafelku zamiast przycisku "ZAGRAJ" pokaże się "FAZA ROZWOJU".
-
date- Wpływa na sekcję „najnowsze projekty” na stronie głównej.
- Używaj formatu ISO:
YYYY-MM-DD(np.2026-04-28).
Typ Project wspiera dodatkowe pola:
longDescription- dłuższy opis na stronie szczegółów (/projects/:id).webGLUrl- URL do buildu WebGL (np. itch.io embed). Jeśli jest ustawiony, pojawi sięiframe.screenshots- tablica stringów ze ścieżkami/URL do screenów.
Jeśli screeny trzymasz lokalnie, dodaj je do src/assets/images/projects-images/, zaimportuj (tak jak miniaturę) i użyj w screenshots: [img1, img2].
Wydarzenia są trzymane w pliku: src/data/events.ts.
- Wrzuć grafikę wydarzenia do:
src/assets/images/events-images/ - W projekcie jest przyjęta konwencja nazw plików jak data:
YYYY-MM-DD.jpg(np.2026-04-28.jpg).
Na górze pliku dopisz import, np.:
import img20260428 from '../assets/images/events-images/2026-04-28.jpg'Dodaj nowy obiekt w export const events: EventItem[] = [ ... ].
Minimalny przykład:
{
id: '2026-04-28-nazwa-wydarzenia',
title: 'Nazwa wydarzenia',
description: 'Opis wydarzenia (możesz używać wielu linii).',
date: '2026-04-28',
place: 'WFiIS, Łódź',
image: img20260428,
tag: 'INFORMATION',
instagram: 'https://www.instagram.com/p/.../',
facebook: 'https://www.facebook.com/photo?...',
calendar: false,
}-
id(wymagane)- Musi być unikalne.
- Używane w URL:
/events/:id. - W praktyce najlepiej:
YYYY-MM-DD-jakas-nazwa.
-
description- Na stronie szczegółów (
/events/:id) tekst jest dzielony po\nna akapity. - Jeśli chcesz akapity, wstawiaj nowe linie w stringu (np. template string z backtickami).
- Na stronie szczegółów (
-
tag- Krótka etykieta widoczna w kafelku (np.
INFORMATION,MEETING,WORKSHOP).
- Krótka etykieta widoczna w kafelku (np.
-
instagram,facebook- Jeśli podasz link, na stronie szczegółów pojawią się przyciski do sociali.
Jeśli ustawisz calendar: true, w kafelku wydarzenia pojawi się przycisk dodania do kalendarza.
Wtedy uzupełnij też:
startDate(formatYYYY-MM-DD) - wymagane, żeby kalendarz miał poprawną datęendDate(formatYYYY-MM-DD) - opcjonalne (domyślnie takie jakstartDate)startTime/endTime(formatHH:MM, np.18:00)location- opcjonalne; jeśli pominięte, jest ustawiany domyślny adres wydziału
- Jakub Gorządek - programowanie
- Ola Stopka - UI design