diff --git a/.env.development b/.env.development index df48ac1c979007d3079c9f7f20cbb46f27f10dcb..0f4ae215628435210adbff4f6f859e843d5fbb6c 100644 --- a/.env.development +++ b/.env.development @@ -1,11 +1,11 @@ REACT_APP_STYLEGUIDE_URL="https://styleguide.pirati.cz/2.7.1" REACT_APP_ROOT_URL="https://cf2024.pirati.cz" REACT_APP_CF_TITLE="CF 2024" -REACT_APP_CF_DESC="Oficiální stránka zasedání Celostátního fóra České pirátské strany, 13. 1. 2024" -REACT_APP_CF_EVENT_DATE="13. 1. 2024" -REACT_APP_CF_EVENT_CITY="Brno" -REACT_APP_CF_EVENT_VENUE="Sono Centrum" +REACT_APP_CF_DESC="Oficiální stránka zasedání Celostátního fóra České pirátské strany, 9. 11. 2024" +REACT_APP_CF_EVENT_DATE="9. 11. 2024" +REACT_APP_CF_EVENT_CITY="Praha" +REACT_APP_CF_EVENT_VENUE="Masarykova kolej" REACT_APP_MATOMO_ID="204" -REACT_APP_SENTRY_DSN="https://aa80453ff4d54b9a9c1b49e79060498a@sentry.pir-test.eu/14" +REACT_APP_SENTRY_DSN="https://aa80453ff4d54b9a9c1b49e79060498a@sentry.pirati.cz/14" REACT_APP_MAPBOX_ACCESS_TOKEN="pk.eyJ1IjoicGlyYXRpLWN6IiwiYSI6ImNsM2xpZG1sbDBwZjEzY3F3OTJtdTlzem4ifQ.DjbOKOwrCVafW_gnzXaufw" diff --git a/Dockerfile b/Dockerfile index ffd7ed219eb550283e140599ff4ac6ef4c051580..5a7f667d8c22beb362748afbd704d28c341d0b39 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,6 @@ FROM node:18.20.4-alpine AS build -ARG BUILD_REACT_APP_STYLEGUIDE_URL - -ENV REACT_APP_STYLEGUIDE_URL=${BUILD_REACT_APP_STYLEGUIDE_URL} +ENV REACT_APP_STYLEGUIDE_URL="https://styleguide.pirati.cz/2.7.1" RUN mkdir -p /home/node/cf diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0ea70edb9d429446d6d475d97fd6da219e896dee --- /dev/null +++ b/compose.yaml @@ -0,0 +1,6 @@ +services: + app: + image: cf + ports: + - "3000:80" + diff --git a/docker/nginx.conf b/docker/nginx.conf index 2392006522d67ec1e1c8b876488049e20a62574f..2fa58a1cbb9d93dfb1d28c46a69de9f59577dc2f 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -1,9 +1,9 @@ -gzip on; -gzip_disable "MSIE [1-6]\\.(?!.*SV1)"; -gzip_proxied any; -gzip_comp_level 5; -gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/rss+xml text/javascript image/x-icon image/bmp image/svg+xml; -gzip_vary on; +#gzip on; +#gzip_disable "MSIE [1-6]\\.(?!.*SV1)"; +#gzip_proxied any; +#gzip_comp_level 5; +#gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/rss+xml text/javascript image/x-icon image/bmp image/svg+xml; +#gzip_vary on; server { listen 80; @@ -14,15 +14,15 @@ server { try_files $uri $uri/ /index.html; # X-Frame-Options is to prevent from clickJacking attack - add_header X-Frame-Options SAMEORIGIN; +# add_header X-Frame-Options SAMEORIGIN; # disable content-type sniffing on some browsers. - add_header X-Content-Type-Options nosniff; +# add_header X-Content-Type-Options nosniff; # This header enables the Cross-site scripting (XSS) filter - add_header X-XSS-Protection "1; mode=block"; +# add_header X-XSS-Protection "1; mode=block"; # This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack - add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; - add_header Referrer-Policy "no-referrer-when-downgrade"; - add_header Cache-Control "no-store, no-cache, must-revalidate"; +# add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; +# add_header Referrer-Policy "no-referrer-when-downgrade"; +# add_header Cache-Control "no-store, no-cache, must-revalidate"; } location /static { @@ -30,9 +30,9 @@ server { access_log off; # This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack - add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; - add_header Referrer-Policy "no-referrer-when-downgrade"; - add_header Cache-Control "public"; +# add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; +# add_header Referrer-Policy "no-referrer-when-downgrade"; +# add_header Cache-Control "public"; } error_page 500 502 503 504 /50x.html; diff --git a/src/config.js b/src/config.js index 65101cf2254d5c5cb1aa96d6a37e62832b88e38b..8c3b0f2e7421ad58bbf7e312ebe8d1c50931b3c6 100644 --- a/src/config.js +++ b/src/config.js @@ -16,17 +16,17 @@ export const appurl = { export const eventHall = { text: "Zasedání CF 2024", - title_short: "Sono Centrum Brno", - startinfo: "Sobota 13. ledna 09.00", - endinfo: "Neděle 14. ledna 19.00", - title: "Sono Centrum Brno", - desc: "Zasedání celostátního fóra v sobotu 13. 1. 2023 od 9.00", - coords: { lat: 49.2095838, lon: 16.5887465 }, - street: "Veveří 3219/113", - city: "616 00 Brno-Žabovřesky", - gps: "49.2095838, 16.5887465E", + title_short: "Masarykova kolej Praha", + startinfo: "Sobota 9. listopadu 9:00", + endinfo: "Sobota 9. listopadu 18:00", + title: "Masarykova kolej Praha", + desc: "Zasedání celostátního fóra v sobotu 9. 11. 2024 od 9:00", + coords: { lat: 50.1009044, lon: 14.3868344 }, + street: "Kolejní 550/2", + city: "160 00 Praha 6 - Dejvice", + gps: "50.1009044N, 14.3868344E", href: "https://www.sonocentrum.cz/", - programlink: "program#sobota 13. 1. 2024", + programlink: "program#sobota 9. 11. 2024", infolink: "zasedani", type: "event", group: "basics", @@ -149,18 +149,19 @@ export const busStopiStation = { }; export const map = { - center: { lat: 49.200, lon: 16.597, zoom: 14 }, - markers: [eventHall, partyVenue, workshopVenue, railwayStation, busStation, parkingVeveri, parkingSumavska, parkingGymnasium, parkingVankovka, busStopTabor, busStopiStation], + center: { lat: 50.1009, lon: 14.3868, zoom: 14 }, + markers: [eventHall], +// markers: [eventHall, partyVenue, workshopVenue, railwayStation, busStation, parkingVeveri, parkingSumavska, parkingGymnasium, parkingVankovka, busStopTabor, busStopiStation], }; export const venues = [ partyVenue, eventHall, workshopVenue]; export const nav = [ - { - link: "/registrace", - title: "Registrace", - notonhome: true, - }, +// { +// link: "/registrace", +// title: "Registrace", +// notonhome: false, +// }, { link: "/ubytovani", title: "Ubytování", @@ -173,46 +174,46 @@ export const nav = [ // title: "Stravování", // link: "/stravovani", // }, - { - link: "/doprava", - title: "Doprava", - }, - { - link: "/program", - title: "Program", - }, +// { +// link: "/doprava", +// title: "Doprava", +// }, +// { +// link: "/program", +// title: "Program", +// }, { title: "Party", link: "/party", }, - { - title: "Workshopy", - link: "/workshopy", - }, - { - link: "/mapa", - title: "Mapa", - }, +// { +// title: "Workshopy", +// link: "/workshopy", +// }, +// { +// link: "/mapa", +// title: "Mapa", +// }, { link: "/organizatori", title: "Organizátoři", }, - { - link: "/volba-predsednictva", - title: "Volba předsednictva", - }, +// { +// link: "/volba-predsednictva", +// title: "Volba předsednictva", +// }, // { // link: "/hendikepovani", // title: "CF bez bariér", // }, - { - link: "/deti-a-zabava", - title: "Děti a zábava", - }, - { - link: "/pro-dobrovolniky", - title: "Dobrovolníci", - }, +// { +// link: "/deti-a-zabava", +// title: "Děti a zábava", +// }, +// { +// link: "/pro-dobrovolniky", +// title: "Dobrovolníci", +// }, ]; export const organisers = [ @@ -298,12 +299,12 @@ export const organisers = [ export const accommodation = [ { - title: "AVANTI HOTEL", - link: "https://www.hotelavanti.cz/", - email: "hotel@hotelavanti.cz", - desc: "Moderní ubytování v centru Brna, nedaleko Lužáneckého parku. Kongresový hotel nabízí různé cenové kategorie. Parkování i wi-fi pro hosty zdarma.", - coords: { lat: 49.2128627, lon: 16.6046288 }, - distance: 1600, + title: "Hotel Masarykova kolej", + link: "https://www.masarykovakolej.cz/hotel", + email: "rezervace-mk@cvut.cz", + desc: "Hotel přímo v místě konání CF", + coords: { lat: 50.1009044, lon: 14.3868344 }, + distance: 0, priceClass: "$$", accessibility: { status: false, @@ -316,216 +317,6 @@ export const accommodation = [ }, ], }, - { - title: "HOSTEL ELEVEN", - link: "https://www.hosteleleven.com/", - email: "info@hosteleleven.com", - desc: "Hostel v moderním designu v historickém centru Brna. Pokud vám nevadí sdílené prostory, je to tou správnou volbou.", - coords: { lat: 49.1931369, lon: 16.6063143}, - distance: 2400, - priceClass: "$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 1, - price: 620, - }, - { - bedCount: 2, - price: 850, - }, - { - bedCount: 4, - price: 1400, - }, - { - bedCount: 6, - price: 2100, - }, - { - bedCount: 8, - price: 2800, - }, - ], - }, - { - title: "WAKE UP HOSTEL", - link: "https://wakeuphostel.cz/", - email: "recepce@wakeuphostel.cz", - desc: "Minimalistický hostel na skvělé adrese, 5 minut od hlavního nádraží. Se stylovou kavárnou a skvělými snídaněmi.", - coords: { lat: 49.1914895, lon: 16.6156729}, - distance: 3000, - priceClass: "$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 1346, - }, - { - bedCount: 4, - price: 1657, - }, - ], - }, - { - title: "OREA congress HOTEL", - link: "https://www.orea.cz/hotel-congress-brno", - email: "rezervace.congresshotel@orea.cz", - desc: "Kongresový hotel v brněnského výstaviště", - coords: { lat: 49.1857987, lon: 16.5849283 }, - distance: 3000, - priceClass: "$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 1770, - }, - ], - }, - { - title: "SONO HOTEL", - link: "https://www.hotel-brno-sono.cz/", - email: "", - desc: "Chcete to mít na CF jen přes pár dveří? Ubytujte se v hotelu přímo v Sonu.", - coords: { lat: 49.2095, lon: 16.592 }, - distance: 0, - priceClass: "$$$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 3900, - }, - ], - }, - { - title: "HOTEL KOZÁK", - link: "https://hotelkozak.cz/", - email: "", - desc: "Moderní, stylový, útulný, první soukromý hotel v Brně. Z jeho pokojů je cítit historie.", - coords: { lat: 49.21400897138518, lon: 16.574288959925394 }, - distance: 1200, - priceClass: "$$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 2600, - }, - ], - }, - { - title: "HOTEL CONTINENTAL", - link: "https://www.continentalbrno.cz/cz", - email: "", - desc: "Chcete bydlet v centru v moderním hotelu s parkováním hned pod Špilberkem?", - coords: { lat: 49.20059813723202, lon: 16.60467080540576 }, - distance: 1700, - priceClass: "$$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 1, - price: 3200, - }, - ], - }, - { - title: "COSMOPOLITAN BOBY CENTRUM", - link: "https://www.hotelcosmopolitan.cz/", - email: "", - desc: "Brněnská 90. chlouba, hned vedle legendárních Lužánek. Kdo to nezažil, neuvěří. ", - coords: { lat: 49.212216325393904, lon: 16.608076920807775 }, - distance: 1800, - priceClass: "$$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 3500, - }, - ], - }, - { - title: "HOTEL PASSAGE", - link: "https://www.hotelpassage.eu/", - email: "", - desc: "Moderní, designový, jen pár set metrů od brněnské ŠPICE a Moravského náměstí.", - coords: { lat: 49.202160981519974, lon: 16.607092998008003 }, - distance: 2000, - priceClass: "$$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 3400, - }, - ], - }, - { - title: "BARCELÓ BRNO PALACE", - link: "https://www.barcelo.com/", - email: "", - desc: "Jen málo co se mu vyrovná, zvláště pokud si potrpíte na 5hvězd. Skvěle architektonicky spracované propojení architelktonických stylů v historickém centru města.", - coords: { lat: 49.192015048235426, lon: 16.605603940336415 }, - distance: 2500, - priceClass: "$$$$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 3800, - }, - ], - }, - { - title: "GRANDEZZA HOTEL", - link: "https://www.grandezzahotel.com/", - email: "", - desc: "Hotel z počátku 20. století se nachází na Zelném trnu.", - coords: { lat: 49.19270455513284, lon: 16.609696826843365 }, - distance: 950, - priceClass: "$$$", - accessibility: { - status: false, - help: "Nemá bezbariérový přístup.", - }, - variants: [ - { - bedCount: 2, - price: 3400, - }, - ], - }, ]; export const programGeneralSettings = { diff --git a/src/pages/Home.js b/src/pages/Home.js index 05a53186d31b55607a79254f48412d52b7b086d6..6e3b3380c7b09f09e7afd53c8f1d06ef9f97f285 100644 --- a/src/pages/Home.js +++ b/src/pages/Home.js @@ -1,4 +1,8 @@ import Button from "components/Button"; +import CrossroadCard from "components/CrossroadCard"; +import VenueCard from "components/VenueCard"; +import { nav } from "config"; +import { venues } from "config"; import cfLogo from "../cf2023_kormidlo_lod.svg"; @@ -114,7 +118,6 @@ const Home = () => { </div> </div> - {/* <div className="grid md:grid-cols-3 gap-4 md:gap-8"> {nav.map((navItem) => ( <CrossroadCard @@ -128,6 +131,7 @@ const Home = () => { ))} </div> +{/* <div className="bg-blue-300 text-white p-8 md:p-16"> <div className="content-block"> <h3 className="head-alt-md">Zasedání Celostátního fóra proběhlo 13. ledna 2024 v Brně</h3> diff --git a/src/pages/Home.js.orig b/src/pages/Home.js.orig new file mode 100644 index 0000000000000000000000000000000000000000..52259d9580070cbda5e098ead0af40cc8a74a200 --- /dev/null +++ b/src/pages/Home.js.orig @@ -0,0 +1,200 @@ +import Button from "components/Button"; + +import cfLogo from "../cf2023_kormidlo_lod.svg"; + +import cfPattern from "./gingerbread-pattern-colourful-384px.svg"; + +const Home = () => { + const delta = Math.abs(new Date(2024, 10, 13, 9, 0, 0) - new Date()) / 1_000; + const days = Math.floor(delta / 86_400); + const hours = Math.floor((delta - days * 86_400) / 3_600) % 24; + + return ( + <article className="space-y-8 md:space-y-16"> + + <div className="content-block"> + <p className="text-md lg:text-lg"> + <strong>Zasedání CF se bude konat v prostorách Masarykovy koleje v Praze v termínu 9. listopadu 2024 od 9 do 18 hodin.</strong><br /><br /> + Bližší informace zde budou zveřejňovány postupně. + </p> + </div> + + {/* + <div className="grid md:grid-cols-3 gap-4 md:gap-8 content-block"> + {venues.map((venueItem) => ( + <VenueCard + showtop="true" + key={venueItem.title + "__" + venueItem.link} + title_short={venueItem.title_short} + startinfo={venueItem.startinfo} + endinfo={venueItem.endinfo} + street={venueItem.street} + city={venueItem.city} + gps={venueItem.gps} + href={venueItem.href} + title={venueItem.title} + text={venueItem.text} + infolink={venueItem.infolink} + programlink={venueItem.programlink} + accent={venueItem.accent} + link={venueItem.link} + underConstruction={!venueItem.link} + /> + ))} + </div> +*/} + + {/* + <div className="content-block alert alert--yellow-400 flex-col p-8 md:p-16"> + <h3 className="head-alt-md">Online registrace účastníků zasedání CF byla spuštěna</h3> + <p className="text-md lg:text-lg"> + V rámci registrace budete požádáni o dobrovolný finanční příspěvek na pokrytí nákladů spojených se zajištěním akce, pronájmem prostoru a navázaných služeb. Veškeré důležité informace o konání budou průběžně aktualizovány na tomto webu. + </p> + <Button + className="md:text-xl btn--to-blue-300" + bodyClassName="whitespace-no-wrap" + color="black" + icon="ico--chevron-right" + routerTo="/registrace" + > + Registrační formulář + </Button> + <p className="text-md lg:text-lg pt-8"> + <strong>Rezervace ubytování není součástí registrace účastníků a každý účastník si ubytování řeší individuálně.<br/> + Kapacity ubytování jsme měli v hotelích blokované pro rezervaci pouze do 2. ledna. + Pokud nemáte rezervované ubytování, v tuto chvíli se můžete pouze inspirovat naší stránkou <a className="font-bold" href="ubytovani">rezervace ubytování</a>.<br/> + </strong> + </p> + + </div> +*/} + + <div className="relative card elevation-10 flex flex-col lg:flex-row lg:items-center my-8 xl:-mx-16 container-padding--zero md:container-padding--auto overflow-hidden"> + <div + className="cf-hero" + style={{ background: `url(${cfPattern})` }} + ></div> + <div className="cf-hero-claim w-full flex items-center justify-center text-center lg:text-left p-8 py-8 md:p-8"> + <img + src={cfLogo} + alt="CF 2023" + className="hidden lg:block w-48 mr-16" + /> + <div> + <h1 className="head-alt-lg md:head-alt-xl mb-4"> + Začínáme za + <br /> + {days} dní a {hours} hodin + </h1> + + {/* + <Button + className="md:text-xl btn--to-blue-300" + bodyClassName="whitespace-no-wrap" + color="black" + routerTo="/program" + icon="ico--chevron-right" + > + Program + </Button> + + <Button + className="md:text-xl btn--to-blue-300 ml-4" + bodyClassName="whitespace-no-wrap" + color="blue-300" + href="https://a.pirati.cz/cf2024/" + icon="ico--chevron-right" + target="_blank" + > + Podklady + </Button> + +*/} + </div> + </div> + </div> + +<<<<<<< HEAD + {/* +======= +>>>>>>> master + <div className="grid md:grid-cols-3 gap-4 md:gap-8"> + {nav.map((navItem) => ( + <CrossroadCard + key={navItem.title + "__" + navItem.link} + title={navItem.title} + accent={navItem.accent} + link={navItem.link} + underConstruction={!navItem.link} + notonhome={navItem.notonhome} + /> + ))} + </div> + +{/* + <div className="bg-blue-300 text-white p-8 md:p-16"> + <div className="content-block"> + <h3 className="head-alt-md">Zasedání Celostátního fóra proběhlo 13. ledna 2024 v Brně</h3> + <h2 className="head-alt-md lg:head-alt-lg"> + Děkujeme všem za účast a těšíme se na vás na zasedání Celostátního fóra v roce 2025. + </h2> + + <p className="text-md lg:text-lg"> + Zasedání bude možno sledovat on-line na adrese{" "} + <a href="https://cf2024.online" className="font-bold"> + cf2023.online + </a> + . + </p> + </div> + + <Button + className="md:text-xl btn--to-blue-300" + bodyClassName="whitespace-no-wrap" + color="white" + href="https://cf2024.online" + icon="ico--chevron-right" + rel="noreferrer noopener" + target="_blank" + > + Sledovat CF 2024 online + </Button> + </div> + +*/} + <div className="relative card elevation-10 flex flex-col lg:flex-row lg:items-center my-8 xl:-mx-16 container-padding--zero md:container-padding--auto overflow-hidden"> + <div + className="cf-hero" + style={{ background: `url(${cfPattern})` }} + ></div> + <div className="cf-hero-claim w-full flex items-center justify-center text-center lg:text-left p-8 py-8 md:p-8"> + <div> + <h2 className="head-alt-lg md:head-alt-xl mb-4"> + Podpořte organizaci zasedání Celostátního fóra + </h2> + <div className="content-block"> + <p className="text-md lg:text-lg"> + Za organizací zasedání CF vždycky stojí práce řady dobrovolníků, kteří musejí věnovat mnoho hodin přípravě a zajištění klíčové věci - financování.<br /> + Pojďme jim s tím pomoci. Podpořme největší pirátskou slezinu a vznik nových legendárních zážitků. Podpora této události rozhodně má smysl.<br />Děkujeme.<br /><br /> + </p> + </div> + <Button + className="md:text-xl btn--to-blue-300" + bodyClassName="whitespace-no-wrap" + color="black" + icon="ico--chevron-right" + href="https://dary.pirati.cz/daruj-piratum/mimoradne-celostatni-forum-2024/" + rel="noreferrer noopener" + target="_blank" + > + Podpořit darem + </Button> + </div> + </div> + </div> + + </article> + ); +}; + +export default Home;