Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
d2696cd
FEAT/ResetPassword
LucasRossignon Oct 24, 2025
6a858bf
feat: reset password
LucasRossignon Oct 26, 2025
0cb41ae
fix: improve reset password UX and design consistency
TristanHourtoulle Nov 4, 2025
68624d3
feat: system share course
LucasRossignon Oct 26, 2025
95d2541
fix: error linter
LucasRossignon Oct 26, 2025
e605ae9
feat: enhance ShareCourseDialog UI and improve user experience
TristanHourtoulle Nov 4, 2025
7719e34
feat: add course settings page and public content components
TristanHourtoulle Nov 4, 2025
3a40c32
feat: implement Club Edukai with search and filters
TristanHourtoulle Nov 4, 2025
ec919b9
refactor: improve course ownership and visibility handling
TristanHourtoulle Nov 4, 2025
01cffdb
chore: remove legacy token-based sharing system
TristanHourtoulle Nov 4, 2025
0fec84d
feat: add Visibility enum for content visibility management
TristanHourtoulle Nov 4, 2025
090d880
feat: add reset password page
TristanHourtoulle Nov 4, 2025
c40e1c9
refactor: migrate from isShared to visibility enum pattern
TristanHourtoulle Nov 4, 2025
a3a0fb0
chore: remove debug code and cleanup codebase
TristanHourtoulle Nov 4, 2025
a211ef8
feat: add reusable components for auth UI and accessibility
TristanHourtoulle Nov 4, 2025
df1fbab
refactor: eliminate code duplication and modernize auth pages
TristanHourtoulle Nov 4, 2025
8cae374
fix: resolve SonarCloud issues and remove debug logs
TristanHourtoulle Nov 4, 2025
bac127e
chore: update .gitignore
TristanHourtoulle Nov 4, 2025
fb9ceff
refactor(gradient): update gradient from blue to purple into only blu…
TristanHourtoulle Nov 5, 2025
889ead8
feat(auth): enhance feature styling and badge appearance
TristanHourtoulle Nov 5, 2025
8d2219d
feat(toast): implement modern toast notifications with gradient progr…
TristanHourtoulle Nov 5, 2025
76b1faf
fix(auth): fix sonar issues on new code
TristanHourtoulle Nov 5, 2025
f83b938
refactor(auth): create specific file for auth components
TristanHourtoulle Nov 5, 2025
f67866c
feat(home): update button actions and toast notifications for improve…
TristanHourtoulle Nov 5, 2025
2bd08da
feat(file-upload): add file index mapping and improve error handling …
TristanHourtoulle Nov 5, 2025
0871ffe
feat(file-upload): enforce maximum file upload limit and provide user…
TristanHourtoulle Nov 5, 2025
bae8230
refactor(components): improve layout and styling consistency across E…
TristanHourtoulle Nov 5, 2025
70182fe
fix(summary-sheet): fix preview mode and fullscreen display
TristanHourtoulle Nov 5, 2025
1e4519e
feat(overview): update Tips component to handle empty state and impro…
TristanHourtoulle Nov 5, 2025
9b41ff1
feat(exam-card): enhance ExamCard with status-based styling and dialo…
TristanHourtoulle Nov 5, 2025
701c9d8
feat(home): implement recent courses and upcoming exams display with …
TristanHourtoulle Nov 5, 2025
08c95cd
feat(summary-sheets): initialize showSummarySheet with first sheet on…
TristanHourtoulle Nov 5, 2025
67e7a35
feat: Enhance Summary Sheets functionality and UI
TristanHourtoulle Nov 5, 2025
a121c26
fix: sonar issue
TristanHourtoulle Nov 5, 2025
b144f81
refactor: remove console.log statements for cleaner code
TristanHourtoulle Nov 5, 2025
a90abd8
refactor: update comments to English for consistency and clarity
TristanHourtoulle Nov 5, 2025
55c73cc
refactor: replace escaped html entities with actual chars
khalidbelk Nov 5, 2025
6c3bad9
fix: disable unescaped entities rule
khalidbelk Nov 5, 2025
59535b6
fix: exam modification and deletion
khalidbelk Nov 16, 2025
6a02aaf
feat: hide elements from course page when visiting from community page
khalidbelk Nov 16, 2025
846c613
fix: resolve GET favicon 500 error on page load
khalidbelk Nov 16, 2025
082f0f6
fix: broken course sharing
khalidbelk Nov 16, 2025
1fffffb
fix: restore summary sheets visibility and download functionality
khalidbelk Nov 16, 2025
72964d8
fix: summary sheet preview and download on overview page
khalidbelk Nov 16, 2025
548387c
refactor: move function out of useEffect
khalidbelk Nov 16, 2025
21e5976
fix: remove grid.svg not found errors caused by useless tailwind dire…
khalidbelk Nov 16, 2025
3e50db2
feat: rebase reset password branch with dev up to date
TristanHourtoulle Nov 18, 2025
561c6df
fix: improve reset password UX and design consistency
TristanHourtoulle Nov 4, 2025
65c7c1d
feat: add consistent date formatting with time across quiz displays
TristanHourtoulle Nov 19, 2025
b9faccf
feat: improve file management UI with unified blue theme and modern d…
TristanHourtoulle Nov 19, 2025
2104b90
fix: improve header alignment in exams tab by simplifying flex structure
TristanHourtoulle Nov 19, 2025
d839d4d
refactor: unify color theme to blue across all course sections
TristanHourtoulle Nov 19, 2025
3ddd414
chore: update course components and services
TristanHourtoulle Nov 19, 2025
6bfd959
fix: improve reset password UX and design consistency
TristanHourtoulle Nov 4, 2025
8fd2ea1
feat: update nextjs from 14.2 to 16.0.3
TristanHourtoulle Nov 19, 2025
ee9f220
feat: update workflow to run with latest version of next and node
TristanHourtoulle Nov 19, 2025
55e6bd2
chore: remove debug code and cleanup codebase
TristanHourtoulle Nov 4, 2025
0f0b50f
refactor: replace escaped html entities with actual chars
khalidbelk Nov 5, 2025
3a27e3a
feat: hide elements from course page when visiting from community page
khalidbelk Nov 16, 2025
aee6fc5
fix(cd): ensure it always pulls on VPS regardless of local changes
khalidbelk Nov 18, 2025
6d2f992
FEAT/ResetPassword
LucasRossignon Oct 24, 2025
7dee545
refactor: eliminate code duplication and modernize auth pages
TristanHourtoulle Nov 4, 2025
14d7f94
feat: rebase reset password branch with dev up to date
TristanHourtoulle Nov 18, 2025
08bfd8f
feat: finish merge with dev branch
TristanHourtoulle Nov 19, 2025
8e6b873
FEAT/ResetPassword
LucasRossignon Oct 24, 2025
27e9474
feat: reset password
LucasRossignon Oct 26, 2025
28e9923
fix: improve reset password UX and design consistency
TristanHourtoulle Nov 4, 2025
17a1707
chore: remove debug code and cleanup codebase
TristanHourtoulle Nov 4, 2025
cade2ca
feat: hide elements from course page when visiting from community page
khalidbelk Nov 16, 2025
79c29bd
feat: rebase reset password branch with dev up to date
TristanHourtoulle Nov 18, 2025
1d5010e
fix: improve reset password UX and design consistency
TristanHourtoulle Nov 4, 2025
36d9488
feat: add consistent date formatting with time across quiz displays
TristanHourtoulle Nov 19, 2025
42dcdce
feat: improve file management UI with unified blue theme and modern d…
TristanHourtoulle Nov 19, 2025
2622046
fix: improve header alignment in exams tab by simplifying flex structure
TristanHourtoulle Nov 19, 2025
bd37ed5
refactor: unify color theme to blue across all course sections
TristanHourtoulle Nov 19, 2025
193f193
chore: update course components and services
TristanHourtoulle Nov 19, 2025
16fccf7
fix: improve reset password UX and design consistency
TristanHourtoulle Nov 4, 2025
b49e921
feat: update nextjs from 14.2 to 16.0.3
TristanHourtoulle Nov 19, 2025
b0a5f96
feat: update workflow to run with latest version of next and node
TristanHourtoulle Nov 19, 2025
da07d79
chore: remove debug code and cleanup codebase
TristanHourtoulle Nov 4, 2025
0913723
refactor: replace escaped html entities with actual chars
khalidbelk Nov 5, 2025
195c960
feat: hide elements from course page when visiting from community page
khalidbelk Nov 16, 2025
9535df0
FEAT/ResetPassword
LucasRossignon Oct 24, 2025
6a1465c
refactor: eliminate code duplication and modernize auth pages
TristanHourtoulle Nov 4, 2025
f9822ab
feat: rebase reset password branch with dev up to date
TristanHourtoulle Nov 18, 2025
274c69e
feat: finish merge with dev branch
TristanHourtoulle Nov 19, 2025
21dffe9
Merge remote-tracking branch 'origin/upgrade/nextjs-16-direct' into u…
TristanHourtoulle Nov 19, 2025
d658898
fix: update some package to works with nextjs 16 and React 19
TristanHourtoulle Nov 19, 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
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:

strategy:
matrix:
node-version: [18.x, 20.x]
node-version: [20.x, 22.x]

steps:
- uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sonarcloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 8
version: 10

- name: Install dependencies
run: pnpm install
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
FROM node:23-alpine
FROM node:20-alpine

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install
RUN npm install --legacy-peer-deps

COPY . .

Expand Down
4 changes: 2 additions & 2 deletions app/(auth)/auth/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"use client";

import { useEffect, useState } from "react";
import { AnimatedBackground } from "@/components/auth/page-sections/AnimatedBackground";
import { HeroSection } from "@/components/auth/page-sections/HeroSection";
import { AuthCard } from "@/components/auth/page-sections/AuthCard";
import { HeroSection } from "@/components/auth/page-sections/HeroSection";
import { useEffect, useState } from "react";

export default function Authpage() {
const [mounted, setMounted] = useState(false);
Expand Down
1 change: 1 addition & 0 deletions app/(auth)/reset-password/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"use client";

import Image from "next/image";
import { Suspense } from "react";
import { AuthPageLayout, ResetPasswordForm } from "@/components/auth";

Expand Down
10 changes: 6 additions & 4 deletions app/(dashboard)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ export const metadata: Metadata = {
description: "Révise mieux, pas plus.",
};

export default function RootLayout({
children,
}: Readonly<{ children: React.ReactNode }>) {
export default async function RootLayout(
{
children,
}: Readonly<{ children: React.ReactNode }>
) {
// Récupération de l'état de la sidebar depuis les cookies
const cookieStore = cookies();
const cookieStore = await cookies();
const sidebarState = cookieStore.get("sidebar:state")?.value;
// Default to true (expanded) on first load, respect saved preference
const defaultOpen = sidebarState ? sidebarState === "true" : true;
Expand Down
5 changes: 3 additions & 2 deletions app/(dashboard)/library/[id]/metadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@ import { generateCourseMetadata } from "@/lib/seo";
export async function generateMetadata({
params,
}: {
params: { id: string };
params: Promise<{ id: string }>;
}): Promise<Metadata> {
// Simplified approach for now - use generic course metadata
// TODO: Integrate with actual API when available
const { id } = await params;
return generateCourseMetadata({
title: "Cours",
subject: "Matière",
level: "Niveau",
description:
"Accédez à votre cours avec quiz et fiches de révision générés par IA.",
courseId: params.id,
courseId: id,
});
}
4 changes: 2 additions & 2 deletions app/api/courses/[courseId]/files/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import { NextRequest, NextResponse } from "next/server";

export async function GET(
request: NextRequest,
{ params }: { params: { courseId: string } }
{ params }: { params: Promise<{ courseId: string }> }
) {
try {
const { courseId } = params;
const { courseId } = await params;
const { searchParams } = new URL(request.url);
const format = searchParams.get("format");

Expand Down
20 changes: 18 additions & 2 deletions app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,23 @@ body {
}

[data-sonner-toast] [data-close-button]:hover {
background: rgba(59, 130, 246, 0.1);
color: #1d4ed8;
background: #dbeafe;
color: #1e293b;
transform: scale(1.1);
}

/* Fade In Up Animation */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}

.animate-fadeInUp {
animation: fadeInUp 0.5s ease-out forwards;
}
2 changes: 1 addition & 1 deletion components/auth/page-sections/HeroSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function HeroSection({ mounted }: HeroSectionProps) {
<span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-blue-500 opacity-75"></span>
<span className="relative inline-flex rounded-full h-2 w-2 bg-blue-600"></span>
</span>
<span className="text-sm font-semibold bg-gradient-to-r from-blue-600 to-blue-500 bg-clip-text text-transparent">
<span className="text-sm font-semibold text-blue-700">
Plateforme d'apprentissage
</span>
</div>
Expand Down
3 changes: 1 addition & 2 deletions components/auth/reset-password-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ export interface ResetPasswordFormProps {
}

export function ResetPasswordForm({
onSuccess,
onError,
onBack,
}: ResetPasswordFormProps) {
Expand All @@ -45,7 +44,7 @@ export function ResetPasswordForm({

if (result.success) {
setIsSubmitted(true);
onSuccess?.();
// Don't call onSuccess() immediately - let user see the confirmation
} else {
const errorMessage = result.error || "Une erreur est survenue";
setError("root", { message: errorMessage });
Expand Down
Loading