diff --git a/.env b/.env
new file mode 100644
index 00000000..b61883eb
--- /dev/null
+++ b/.env
@@ -0,0 +1 @@
+DATABASE_URL="postgresql://ppt:devpassword@localhost:5432/elections_db?schema=public"
diff --git a/components/about-us/contributors.tsx b/app/components/about-us/contributors.tsx
similarity index 100%
rename from components/about-us/contributors.tsx
rename to app/components/about-us/contributors.tsx
diff --git a/components/about-us/footer.tsx b/app/components/about-us/footer.tsx
similarity index 88%
rename from components/about-us/footer.tsx
rename to app/components/about-us/footer.tsx
index 4ffea8a3..ea03cb74 100644
--- a/components/about-us/footer.tsx
+++ b/app/components/about-us/footer.tsx
@@ -2,7 +2,7 @@ import { Layout } from "antd";
import Link from "next/link";
import { socialMediaOptions } from "../../src/utils/online-platform";
import { FooterLogo } from "../global/logos";
-import SocialSharing from "../global/social-sharing";
+import SocialSharing from "../social/SocialSharing";
const { Footer } = Layout;
diff --git a/components/about-us/join-us.tsx b/app/components/about-us/join-us.tsx
similarity index 100%
rename from components/about-us/join-us.tsx
rename to app/components/about-us/join-us.tsx
diff --git a/components/about-us/motivation.tsx b/app/components/about-us/motivation.tsx
similarity index 100%
rename from components/about-us/motivation.tsx
rename to app/components/about-us/motivation.tsx
diff --git a/app/components/footer/ContributorsList.tsx b/app/components/footer/ContributorsList.tsx
new file mode 100644
index 00000000..70f56d47
--- /dev/null
+++ b/app/components/footer/ContributorsList.tsx
@@ -0,0 +1,17 @@
+import { shuffleList } from "../../utils/contributors";
+
+const ContributorsList = () =>
+ // const [hasMounted, setHasMounted] = useState(false);
+
+ // useEffect(() => {
+ // setHasMounted(true);
+ // }, []);
+
+ // if (!hasMounted) {
+ // return null;
+ // }
+ <>
+ {shuffleList().join(", ")}.
+ >
+
+export default ContributorsList;
diff --git a/app/components/footer/LayoutFooter.tsx b/app/components/footer/LayoutFooter.tsx
new file mode 100644
index 00000000..b1f231c0
--- /dev/null
+++ b/app/components/footer/LayoutFooter.tsx
@@ -0,0 +1,37 @@
+import { Col, Row } from "antd";
+import { Footer } from "antd/es/layout/layout";
+import Link from "next/link";
+import { FooterLogo } from "../global/logos";
+import SocialSharing from "../social/SocialSharing";
+import ContributorsList from "./ContributorsList";
+
+const LayoutFooter = () =>
+
+
+export default LayoutFooter;
diff --git a/components/global/icons.tsx b/app/components/global/icons.tsx
similarity index 100%
rename from components/global/icons.tsx
rename to app/components/global/icons.tsx
diff --git a/components/global/layout-header.tsx b/app/components/global/layout-header.tsx
similarity index 98%
rename from components/global/layout-header.tsx
rename to app/components/global/layout-header.tsx
index 9c542511..b1cc9b15 100644
--- a/components/global/layout-header.tsx
+++ b/app/components/global/layout-header.tsx
@@ -5,8 +5,8 @@ import Link from "next/link";
import { Fragment, memo, useState } from "react";
import { LOOMIO_PPT_URL } from "../../src/utils/constants";
import { socialMediaOptions } from "../../src/utils/online-platform";
+import SocialSharing from "../social/SocialSharing";
import { HeaderLogo } from "./logos";
-import SocialSharing from "./social-sharing";
const LayoutHeader = () => {
const [headerState, setState] = useState({
diff --git a/app/components/global/logos.tsx b/app/components/global/logos.tsx
new file mode 100644
index 00000000..478b1aec
--- /dev/null
+++ b/app/components/global/logos.tsx
@@ -0,0 +1,127 @@
+import Image from "next/image";
+import header_logo from "../../../public/horizontal_logo.svg";
+import infographic_image from "../../../public/infographic.svg";
+// import rows_people_image from "../../public/rows-people.svg";
+import footer_logo from "../../../public/vertical_logo.jpg";
+import voting_image from '../../../public/voting.svg';
+
+import ADNLogo from '../../../public/party-logos/adn_logo.png';
+import AliancaLogo from '../../../public/party-logos/Alianca.png';
+import AliancaDemocraticaLogo from '../../../public/party-logos/alianca_democratica.png';
+import BlocoEsquerdaLogo from '../../../public/party-logos/blocodeesquerda.jpg';
+import CDSLogo from '../../../public/party-logos/CDS.png';
+import CDULogo from '../../../public/party-logos/cdu.jpg';
+import ChegaLogo from '../../../public/party-logos/chega.png';
+import ErgueTeLogo from '../../../public/party-logos/ergue-te_logo.png';
+import IniciativaLiberalLogo from '../../../public/party-logos/Iniciativa_Liberal_logo.gif';
+import JPPLogo from '../../../public/party-logos/jpp_logo.png';
+import LivreLogo from '../../../public/party-logos/livre-logo.png';
+import MadeiraPrimeiroLogo from '../../../public/party-logos/madeira_primeiro.png';
+import MASLogo from '../../../public/party-logos/mas-logo.jpg';
+import NosCidadaosLogo from '../../../public/party-logos/Nos_Cidadaos_logo.jpg';
+import PPMLogo from '../../../public/party-logos/Partido_Popular_Monarquico_logo.png';
+import PTLogo from '../../../public/party-logos/partido_terra_logo.jpg';
+import PTPLogo from '../../../public/party-logos/Partido_Trabalhista_Portugues_logo.jpg';
+import PCTPMRPPLogo from '../../../public/party-logos/PCTPMRPP_LOGO.png';
+import PANLogo from '../../../public/party-logos/Pessoas-Animais-Natureza_logo.png';
+import PSLogo from '../../../public/party-logos/PS_logo.png';
+import PSDLogo from '../../../public/party-logos/psd-logo.jpg';
+import RIRLogo from '../../../public/party-logos/RIR_logo.jpg';
+import VoltLogo from '../../../public/party-logos/volt.png';
+
+export const PPTLogo = () =>
+
+ A ordem dos partidos a seguir é feita de forma aleatória.
+
+ Sempre que voltares a carregar esta página a ordem será diferente.
+
Participam nos debates televisivos todos os partidos que, nas últimas eleições Legislativas (2019), conquistaram lugares parlamentares em várias rondas frente a frente. No final, ainda serão realizados dois debates com todos os partidos eleitos em 2019 (televisão e rádio) e outro com partidos não eleitos há dois anos.
+Subscreve o nosso calendário com horários dos debates actualizados: + Calendário Google de debates 2022 + +
+A RTP Play disponibiliza todos os debates independentemente do canal que tenha exibido. Aproveita para rever o debate que procuras:
+Participam nos debates televisivos todos os partidos que, nas últimas eleições Legislativas (2019), conquistaram lugares parlamentares em várias rondas frente a frente. No final, ainda serão realizados dois debates com todos os partidos eleitos em 2019 (televisão e rádio) e outro com partidos não eleitos há dois anos.
-Subscreve o nosso calendário com horários dos debates actualizados:
- Calendário Google de debates 2022
A RTP Play disponibiliza todos os debates independentemente do canal que tenha exibido. Aproveita para rever o debate que procuras:
-