Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
8031c4d
Setting up GitHub Classroom Feedback
github-classroom[bot] Apr 22, 2025
e59b3d4
add deadline
github-classroom[bot] Apr 22, 2025
d58eb45
add Images ressources
VictorLpr Apr 22, 2025
61be257
set up next js
VictorLpr Apr 22, 2025
bbac8ae
add nav bar
VictorLpr Apr 22, 2025
92b7d56
add page visite
VictorLpr Apr 22, 2025
6beefb7
rename dir components
VictorLpr Apr 22, 2025
32a42cb
update navbar style
VictorLpr Apr 22, 2025
d452068
add searchbar
VictorLpr Apr 23, 2025
468e91c
clean pages.jsx
VictorLpr Apr 23, 2025
fd592de
add don
VictorLpr Apr 23, 2025
7a8e6b4
add header
VictorLpr Apr 23, 2025
4d8fbd0
add option on select
VictorLpr Apr 23, 2025
0331def
add footer
VictorLpr Apr 23, 2025
f8a8705
add photo grid
VictorLpr Apr 23, 2025
40d1032
update photo grid
VictorLpr Apr 23, 2025
27982c0
fix photo grid
VictorLpr Apr 24, 2025
45d61cb
add persons
VictorLpr Apr 24, 2025
33571f8
add icon
VictorLpr Apr 24, 2025
92e95a4
add how
VictorLpr Apr 24, 2025
c4f3577
fix hover color
VictorLpr Apr 24, 2025
996af57
fix footer
VictorLpr Apr 24, 2025
811112a
add make-difference
VictorLpr Apr 24, 2025
be9c52e
update search bar
VictorLpr Apr 24, 2025
2d7ae3a
add data
VictorLpr Apr 24, 2025
82f86fe
update search bar
VictorLpr Apr 24, 2025
64c143a
add user-card
VictorLpr Apr 24, 2025
05297c7
add filters
VictorLpr Apr 25, 2025
81eb9ff
fix users card
VictorLpr Apr 25, 2025
93b9568
update user : more data
VictorLpr Apr 29, 2025
fc6d77a
add : pagination users
VictorLpr Apr 29, 2025
eb719d7
add : volunteer page
VictorLpr Apr 29, 2025
75a12aa
add : why volunteer
VictorLpr Apr 29, 2025
82c0fb4
add : testimony
VictorLpr Apr 29, 2025
5ee5427
update : testimony
VictorLpr Apr 29, 2025
347e077
add : section questions
VictorLpr Apr 29, 2025
6ce0429
add : lock nav bar if already on page
VictorLpr Apr 29, 2025
267d753
add : console log
VictorLpr Apr 30, 2025
63c2db4
move : footer css to new file
VictorLpr Apr 30, 2025
6d32c2c
add : next and previous page on pagination
VictorLpr Apr 30, 2025
fb99965
refacto : card
VictorLpr May 2, 2025
720b9b4
add : scrollIntoView and useRef
VictorLpr May 2, 2025
630e92b
add : burger for responsive
VictorLpr May 2, 2025
b46a1eb
update : responsive
VictorLpr May 2, 2025
23a61ca
update : move useSearchParams to search-bar
VictorLpr May 5, 2025
66945dd
add : supense on useSearchParams
VictorLpr May 5, 2025
a3828e2
move : supsense to pages
VictorLpr May 5, 2025
6845747
fix : searchparams on Visite firstload
VictorLpr May 5, 2025
9b70949
add : suspense on page visite
VictorLpr May 5, 2025
971d88d
update : metadata in layout
VictorLpr May 5, 2025
da41c0f
update: fetch from api
VictorLpr May 21, 2025
ee47c42
update : volunteerFomr to post on api
VictorLpr May 22, 2025
03ff702
update : user card
VictorLpr May 22, 2025
281a3bf
update : fetch route to render
VictorLpr May 22, 2025
a39fdb3
update : fetch route for volunteer form
VictorLpr May 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
.next
.github
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/c9R-q-e1)
52 changes: 52 additions & 0 deletions app/benevole/page.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import Comment from '../components/comment';
import VolunteerForm from '../components/volunteer-form';
import WhyVolunteer from '../components/why-volunteer';
import '../styles/globals.css';
import Link from "next/link"



export default function Benevole() {
return (<main>
<header className='header-volunteer'>
<div className='presentation'>
<h1>DEVENIR BÉNÉVOLE</h1>
<p>Rejoignez notre communauté et donnez du sens à votre temps libre. En devenant bénévole chez Adaence, vous contribuez à rétablir des liens humains essentiels avec nos aînés.</p>
</div>
<img className='background-img' src='/images/hannah-busing-Zyx1bK9mqmA-unsplash.jpg'></img>
<VolunteerForm />
</header>
<WhyVolunteer />
<section className='testimony'>
<h1>TÉMOIGNAGES DE BÉNÉVOLES</h1>
<p>Découvrez ce que nos bénévoles ont à dire sur leur expérience avec Adaence</p>
<Comment
name="Marie D."
duration="1 an"
quote="J'ai commencé à rendre visite à Germaine il y a un an. Ce qui devait être une simple visite hebdomadaire est devenu une véritable amitié. Nous partageons des recettes, des histoires et beaucoup de rires. Cette expérience m’a ouvert les yeux sur la richesse que représente l’échange intergénérationnel."
imageUrl="./images/anil-sharma-vssw0Ad6TFg-unsplash.jpg"
/>
<Comment
name="Thomas L."
duration="6 mois"
quote={`Je cherchais une façon de m'engager localement et Adaence m'a permis de rencontrer Robert, un ancien menuisier passionné. Nos promenades hebdomadaires sont
devenues des moments que j'attends avec impatience. J'apprends énormément de son expérience et de sa vision de la vie.`}
imageUrl="./images/diego-hernandez-MSepzbKFz10-unsplash.jpg"
/>
</section>
<section className="make-difference">
<h1>DES QUESTIONS ?</h1>
<p>Nous sommes là pour répondre à toutes vos interrogations concernant le bénévolat chez Adaence.
N'hésitez pas à nous contacter pour en savoir plus sur notre démarche.</p>
<div className="links">
<div className="visite">
<Link href="#">Foire aux questions</Link>
</div>
<div className="don">
<Link href="#">Contactez-nous</Link>
</div>

</div>
</section>
</main>)
}
9 changes: 9 additions & 0 deletions app/components/card.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export default function Card (props) {
return (
<div className="card">
<img src={props.imgUrl} alt="" width={32} />
<h2>{props.title}</h2>
<p>{props.text}</p>
</div>
)
}
19 changes: 19 additions & 0 deletions app/components/comment.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
'use client'
import '../styles/comment.css'

export default function Comment({ name, duration, quote, imageUrl }) {
return (
<div className="comment-card">
<div className="comment-avatar">
<img src={imageUrl} alt={name} />
<div className="comment-content">
<p className="comment-name">{name}</p>
<p className="comment-role">Bénévole depuis {duration}</p>
</div>
</div>
<blockquote className="comment-quote">
❝{quote}❞
</blockquote>
</div>
);
}
9 changes: 9 additions & 0 deletions app/components/don.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
'use client'

import Link from "next/link"

export default function Don () {
return (<div className="don">
<Link href="/don">Faire un don 🫶 </Link>
</div>)
}
56 changes: 56 additions & 0 deletions app/components/footer.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import {
Facebook,
Instagram,
Linkedin,
Twitch
} from 'lucide-react';

import '../styles/footer.css'


export default function Footer() {
return (
<footer className="footer">
<div className="footer-content">
<div className="footer-column">
<h3 className="footer-title">ADAENCE</h3>
<p className="footer-text">
Notre mission est de recréer du lien avec les personnes âgées isolées,
en leur offrant des moments de partage, d'écoute et de présence.
</p>
<div className="footer-icons">
<Facebook size={20} />
<Instagram size={20} />
<Linkedin size={20} />
<Twitch size={20} />
</div>
</div>

<div className="footer-column">
<h3 className="footer-title">INFORMATIONS UTILES</h3>
<ul className="footer-list">
<li><a href="#">FAQs</a></li>
<li><a href="#">Liste des activités</a></li>
<li><a href="#">Nous contacter</a></li>
<li><a href="#">Mentions légales</a></li>
</ul>
</div>

<div className="footer-column">
<h3 className="footer-title">CONTACT</h3>
<p className="footer-text">
116 Rue du Faubourg Saint-Martin<br />
75010 Paris, France<br />
Email: <a href="mailto:[email protected]">[email protected]</a><br />
Tél: +33 1 23 45 67 89
</p>
</div>
</div>

<div className="footer-bottom">
© 2025 Adaence. Tous droits réservés. <br />
Ce site a été développé dans le cadre d'un projet pour ADA Tech School.
</div>
</footer>
);
}
17 changes: 17 additions & 0 deletions app/components/header.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use client'

import Searchbar from './search-bar';

export default function Header() {

return (
<header className='header-home'>
<div className='presentation'>
<h1>Rétablissons les liens</h1>
<p>Et si vous offriez un peu de votre temps à ceux qui en ont le plus besoin ? Prenez rendez-vous pour partager un moment avec une personne agée isolée</p>
</div>
<img className='background-img' src='./images/fiqih-pradana-qm-SgY--sVg-unsplash.jpg'></img>
<Searchbar />
</header>
)
}
33 changes: 33 additions & 0 deletions app/components/how.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import Card from "./card";


export default function How() {
return (

<section className="how">
<h1>comment ça marche</h1>
<p>Offrir un peu de votre temps, c'est offrir beaucoup. Découvrez comment planifier une visite en
toute simplicité.</p>
<div className="cards">
<Card imgUrl="./images/loupe.png"
title="1. Choisissez une rencontre"
text="Parcourez les profils de nos aînés et trouvez la personne avec qui vous aimeriez partager un moment chaleureux."
/>
<Card imgUrl="./images/memo.png"
title="2. Remplissez le formulaire"
text="Indiquez vos disponibilités et vos envies. Cela nous aide à organiser une rencontre adaptée et en toute confiance."
/>
<Card imgUrl="./images/waving.png"
title="3. Partagez un moment"
text="Rendez visite à la personne âgée dans un cadre bienveillant. Une discussion, une balade ou simplement l'aider à une tâche ! Chaque moment compte."
/>
<Card
imgUrl="./images/heart.png"
title="4. Créez du lien"
text="Si le courant passe, vous pouvez revenir ! Ensemble, tissons des liens durables et combattons l'isolement pas à pas."
/>

</div>
</section>
)
}
22 changes: 22 additions & 0 deletions app/components/make-difference.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import Don from "./don";
import Link from "next/link";
export default function MakeDifference() {
return (
<section className="make-difference">
<h1>PRÊT-E À FAIRE LA DIFFÉRENCE ?</h1>
<p>Offrez un peu de votre temps, partagez un moment, créez du lien ... Chaque présence compte. En
tendant la main à une personne âgée, vous lui offrez bien plus qu'une visite : une vraie bouffée de
chaleur humaine</p>
<div className="links">
<div className="visite">
<Link href="/visite">Programmer une visite</Link>
</div>
<Don />
<div className="volunteer">
<Link href="/benevole">Devenir bénévole</Link>
</div>

</div>
</section>
)
}
59 changes: 59 additions & 0 deletions app/components/navbar.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
'use client'
'use client'

import Link from "next/link";
import { useState } from "react";
import { House, Accessibility, BookOpen, HandHelping, Menu, X } from 'lucide-react';
import Don from "./don";
import { usePathname } from 'next/navigation';
import "../styles/navbar.css";

export default function Navbar() {
const pathname = usePathname();
const [menuOpen, setMenuOpen] = useState(false);

const toggleMenu = () => setMenuOpen(!menuOpen);
const closeMenu = () => setMenuOpen(false);

return (
<nav className="navbar">
<div className="navbar-title">
🍵Ada<span>ence</span>
</div>

<button className="burger" onClick={toggleMenu}>
{menuOpen ? <X size={28} /> : <Menu size={28} />}
</button>

<ul className={`nav-links ${menuOpen ? "open" : ""}`}>
<li>
<Link href="/" onClick={closeMenu} className={pathname === "/" ? "disabled" : ""}>
<House /> Accueil
</Link>
</li>
<li>
<Link href="/visite" onClick={closeMenu} className={pathname === "/visite" ? "disabled" : ""}>
<Accessibility /> Je rends visite
</Link>
</li>
<li>
<Link href="/guide" onClick={closeMenu}>
<BookOpen /> Guide du partage
</Link>
</li>
<li>
<Link href="/benevole" onClick={closeMenu} className={pathname === "/benevole" ? "disabled" : ""}>
<HandHelping /> Devenir bénévole
</Link>
</li>
<li className="don-mobile">
<Don />
</li>
</ul>

<div className="don-desktop">
<Don />
</div>
</nav>
);
}
25 changes: 25 additions & 0 deletions app/components/persons.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import PhotoGrid from './photo-grid';
import Link from 'next/link';
export default function Persons () {
const images = [
'./images/danie-franco-ClHY-KyvI1M-unsplash.jpg',
'./images/tim-mossholder-FRPbQvAwY10-unsplash.jpg',
'./images/tatiana-zanon-MMhazsT2wtM-unsplash.jpg',
'./images/quentin-mahe-a6jCS61X1Hg-unsplash.jpg',
'./images/vladimir-soares-z_8Jqe0Cc-s-unsplash.jpg',
'./images/shimo-yann-7nTFrV1xQGE-unsplash.jpg',
'./images/michael-matveev-Bk8zT4gLLt0-unsplash.jpg',
'./images/mohammad-samir-huHXKc_usoA-unsplash.jpg'
]
return (
<section className='intro'>
<h1>Les personnalité à rencontrer</h1>
<p>Feuilletez les visages de celles et ceux qui attendent simplement un peu de votre temps. Chaque
sourire porte une histoire, chaque rencontre est une promesse.</p>
<PhotoGrid images={images} />
<div className='visite'>
<Link href="/visite">Voir tous les profils</Link>
</div>
</section>
);
}
22 changes: 22 additions & 0 deletions app/components/photo-grid.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use client'
import '../styles/photo-grid.css';

const areaNames = [
'img1', 'img2', 'img3', 'img4',
'img5', 'img6', 'img7', 'img8'];

export default function PhotoGrid({ images }) {
return (
<div className="photo-grid">
{images.map((image, index) => (
<div
key={index}
className="photo-item"
style={{ gridArea: areaNames[index] }}
>
<img src={image} alt={`person-${index+1}`} />
</div>
))}
</div>
);
}
Loading