Skip to content
Snippets Groups Projects
Verified Commit 4b12970d authored by Andrej Ramašeuski's avatar Andrej Ramašeuski
Browse files

Merged

parents aeea9616 a4206953
No related branches found
No related tags found
No related merge requests found
REACT_APP_STYLEGUIDE_URL="https://styleguide.pirati.cz/2.7.1" REACT_APP_STYLEGUIDE_URL="https://styleguide.pirati.cz/2.7.1"
REACT_APP_ROOT_URL="https://cf2024.pirati.cz" REACT_APP_ROOT_URL="https://cf2024.pirati.cz"
REACT_APP_CF_TITLE="CF 2024" 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_DESC="Oficiální stránka zasedání Celostátního fóra České pirátské strany, 9. 11. 2024"
REACT_APP_CF_EVENT_DATE="13. 1. 2024" REACT_APP_CF_EVENT_DATE="9. 11. 2024"
REACT_APP_CF_EVENT_CITY="Brno" REACT_APP_CF_EVENT_CITY="Praha"
REACT_APP_CF_EVENT_VENUE="Sono Centrum" REACT_APP_CF_EVENT_VENUE="Masarykova kolej"
REACT_APP_MATOMO_ID="204" 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" REACT_APP_MAPBOX_ACCESS_TOKEN="pk.eyJ1IjoicGlyYXRpLWN6IiwiYSI6ImNsM2xpZG1sbDBwZjEzY3F3OTJtdTlzem4ifQ.DjbOKOwrCVafW_gnzXaufw"
FROM node:18.20.4-alpine AS build FROM node:18.20.4-alpine AS build
ARG BUILD_REACT_APP_STYLEGUIDE_URL ENV REACT_APP_STYLEGUIDE_URL="https://styleguide.pirati.cz/2.7.1"
ENV REACT_APP_STYLEGUIDE_URL=${BUILD_REACT_APP_STYLEGUIDE_URL}
RUN mkdir -p /home/node/cf RUN mkdir -p /home/node/cf
......
services:
app:
image: cf
ports:
- "3000:80"
gzip on; #gzip on;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)"; #gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
gzip_proxied any; #gzip_proxied any;
gzip_comp_level 5; #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_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_vary on;
server { server {
listen 80; listen 80;
...@@ -14,15 +14,15 @@ server { ...@@ -14,15 +14,15 @@ server {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
# X-Frame-Options is to prevent from clickJacking attack # 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. # 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 # 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 # This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; # add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
add_header Referrer-Policy "no-referrer-when-downgrade"; # add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Cache-Control "no-store, no-cache, must-revalidate"; # add_header Cache-Control "no-store, no-cache, must-revalidate";
} }
location /static { location /static {
...@@ -30,9 +30,9 @@ server { ...@@ -30,9 +30,9 @@ server {
access_log off; access_log off;
# This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack # This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; # add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
add_header Referrer-Policy "no-referrer-when-downgrade"; # add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Cache-Control "public"; # add_header Cache-Control "public";
} }
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;
......
...@@ -16,17 +16,17 @@ export const appurl = { ...@@ -16,17 +16,17 @@ export const appurl = {
export const eventHall = { export const eventHall = {
text: "Zasedání CF 2024", text: "Zasedání CF 2024",
title_short: "Sono Centrum Brno", title_short: "Masarykova kolej Praha",
startinfo: "Sobota 13. ledna 09.00", startinfo: "Sobota 9. listopadu 9:00",
endinfo: "Neděle 14. ledna 19.00", endinfo: "Sobota 9. listopadu 18:00",
title: "Sono Centrum Brno", title: "Masarykova kolej Praha",
desc: "Zasedání celostátního fóra v sobotu 13. 1. 2023 od 9.00", desc: "Zasedání celostátního fóra v sobotu 9. 11. 2024 od 9:00",
coords: { lat: 49.2095838, lon: 16.5887465 }, coords: { lat: 50.1009044, lon: 14.3868344 },
street: "Veveří 3219/113", street: "Kolejní 550/2",
city: "616 00 Brno-Žabovřesky", city: "160 00 Praha 6 - Dejvice",
gps: "49.2095838, 16.5887465E", gps: "50.1009044N, 14.3868344E",
href: "https://www.sonocentrum.cz/", href: "https://www.sonocentrum.cz/",
programlink: "program#sobota 13. 1. 2024", programlink: "program#sobota 9. 11. 2024",
infolink: "zasedani", infolink: "zasedani",
type: "event", type: "event",
group: "basics", group: "basics",
...@@ -149,18 +149,19 @@ export const busStopiStation = { ...@@ -149,18 +149,19 @@ export const busStopiStation = {
}; };
export const map = { export const map = {
center: { lat: 49.200, lon: 16.597, zoom: 14 }, center: { lat: 50.1009, lon: 14.3868, zoom: 14 },
markers: [eventHall, partyVenue, workshopVenue, railwayStation, busStation, parkingVeveri, parkingSumavska, parkingGymnasium, parkingVankovka, busStopTabor, busStopiStation], markers: [eventHall],
// markers: [eventHall, partyVenue, workshopVenue, railwayStation, busStation, parkingVeveri, parkingSumavska, parkingGymnasium, parkingVankovka, busStopTabor, busStopiStation],
}; };
export const venues = [ partyVenue, eventHall, workshopVenue]; export const venues = [ partyVenue, eventHall, workshopVenue];
export const nav = [ export const nav = [
{ // {
link: "/registrace", // link: "/registrace",
title: "Registrace", // title: "Registrace",
notonhome: true, // notonhome: false,
}, // },
{ {
link: "/ubytovani", link: "/ubytovani",
title: "Ubytování", title: "Ubytování",
...@@ -173,46 +174,46 @@ export const nav = [ ...@@ -173,46 +174,46 @@ export const nav = [
// title: "Stravování", // title: "Stravování",
// link: "/stravovani", // link: "/stravovani",
// }, // },
{ // {
link: "/doprava", // link: "/doprava",
title: "Doprava", // title: "Doprava",
}, // },
{ // {
link: "/program", // link: "/program",
title: "Program", // title: "Program",
}, // },
{ {
title: "Party", title: "Party",
link: "/party", link: "/party",
}, },
{ // {
title: "Workshopy", // title: "Workshopy",
link: "/workshopy", // link: "/workshopy",
}, // },
{ // {
link: "/mapa", // link: "/mapa",
title: "Mapa", // title: "Mapa",
}, // },
{ {
link: "/organizatori", link: "/organizatori",
title: "Organizátoři", title: "Organizátoři",
}, },
{ // {
link: "/volba-predsednictva", // link: "/volba-predsednictva",
title: "Volba předsednictva", // title: "Volba předsednictva",
}, // },
// { // {
// link: "/hendikepovani", // link: "/hendikepovani",
// title: "CF bez bariér", // title: "CF bez bariér",
// }, // },
{ // {
link: "/deti-a-zabava", // link: "/deti-a-zabava",
title: "Děti a zábava", // title: "Děti a zábava",
}, // },
{ // {
link: "/pro-dobrovolniky", // link: "/pro-dobrovolniky",
title: "Dobrovolníci", // title: "Dobrovolníci",
}, // },
]; ];
export const organisers = [ export const organisers = [
...@@ -298,12 +299,12 @@ export const organisers = [ ...@@ -298,12 +299,12 @@ export const organisers = [
export const accommodation = [ export const accommodation = [
{ {
title: "AVANTI HOTEL", title: "Hotel Masarykova kolej",
link: "https://www.hotelavanti.cz/", link: "https://www.masarykovakolej.cz/hotel",
email: "hotel@hotelavanti.cz", email: "rezervace-mk@cvut.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.", desc: "Hotel přímo v místě konání CF",
coords: { lat: 49.2128627, lon: 16.6046288 }, coords: { lat: 50.1009044, lon: 14.3868344 },
distance: 1600, distance: 0,
priceClass: "$$", priceClass: "$$",
accessibility: { accessibility: {
status: false, status: false,
...@@ -316,216 +317,6 @@ export const accommodation = [ ...@@ -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 = { export const programGeneralSettings = {
......
import Button from "components/Button"; 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"; import cfLogo from "../cf2023_kormidlo_lod.svg";
...@@ -114,7 +118,6 @@ const Home = () => { ...@@ -114,7 +118,6 @@ const Home = () => {
</div> </div>
</div> </div>
{/*
<div className="grid md:grid-cols-3 gap-4 md:gap-8"> <div className="grid md:grid-cols-3 gap-4 md:gap-8">
{nav.map((navItem) => ( {nav.map((navItem) => (
<CrossroadCard <CrossroadCard
...@@ -128,6 +131,7 @@ const Home = () => { ...@@ -128,6 +131,7 @@ const Home = () => {
))} ))}
</div> </div>
{/*
<div className="bg-blue-300 text-white p-8 md:p-16"> <div className="bg-blue-300 text-white p-8 md:p-16">
<div className="content-block"> <div className="content-block">
<h3 className="head-alt-md">Zasedání Celostátního fóra proběhlo 13.&nbsp;ledna 2024 v&nbsp;Brně</h3> <h3 className="head-alt-md">Zasedání Celostátního fóra proběhlo 13.&nbsp;ledna 2024 v&nbsp;Brně</h3>
......
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&nbsp;Praze v termínu 9.&nbsp;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&nbsp;dobrovolný finanční příspěvek na pokrytí nákladů spojených se zajištěním akce, pronájmem prostoru a&nbsp;navázaných služeb. Veškeré důležité informace o&nbsp;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.&nbsp;ledna 2024 v&nbsp;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;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment