Skip to content

SixteNow/notionlte

Repository files navigation

NotionLite

Espace de travail collaboratif minimaliste pour vos notes, taches et wikis. Construit avec PHP, MySQL, et un editeur riche TipTap.

Fonctionnalites

  • Editeur riche -- TipTap avec titres, listes, taches, citations, blocs de code, liens, surlignage et couleurs
  • Espaces de travail -- Creez, renommez et supprimez des espaces pour organiser vos projets
  • Arborescence de pages -- Pages imbriquees avec glisser-deposer, recherche et sous-pages
  • Collaboration -- Invitez des membres (editeur / lecteur) a partager vos espaces
  • Discussion -- Messagerie integree par page avec pagination et notifications en temps reel
  • Synchronisation -- Long-polling pour la mise a jour du contenu et de l'arborescence en temps reel
  • Themes -- Basculez entre le mode clair et sombre (DaisyUI)
  • Authentification -- Inscription avec verification par email (OTP via Gmail SMTP)
  • Page 404 -- Page d'erreur personnalisee avec illustration SVG

Prerequis

  • PHP 8.0+
  • MySQL / MariaDB
  • Composer
  • Serveur web Apache (WAMP, XAMPP, etc.)

Installation

  1. Cloner le depot
git clone <url-du-depot> notionlite
  1. Installer les dependances PHP
cd notionlite
composer install
  1. Configurer l'environnement

Copiez le fichier .env.example ou creez un .env a la racine :

APP_NAME="NotionLite"
SITE_DESCRIPTION="Description de votre application"

DB_HOST=localhost
DB_DATABASE=notionlite
DB_USERNAME=root
DB_PASSWORD=""

GMAIL_USER=votre@gmail.com
GMAIL_APP_PASSWORD="xxxx xxxx xxxx xxxx"
GMAIL_FROM_NAME=NotionLite
  1. Creer la base de donnees

Creez une base notionlite dans MySQL, puis executez les migrations dans l'ordre :

mysql -u root notionlite < migrations/V1__tableinitiale.sql
mysql -u root notionlite < migrations/V2__modificationtableutilisateurs.sql

Ou utilisez Flyway si configure :

flyway migrate
  1. Configurer Apache

Assurez-vous que le dossier notionlite est accessible via votre serveur web (ex: http://localhost/notionlite/).

Structure du projet

notionlite/
  accueil/            Page d'accueil, connexion, inscription
    ajax/             Endpoints login, signup, verify_otp
    js/               Scripts front (loginSignup.js, theme-saver.js)
    css/              Styles de la page d'accueil
  app/                Application principale (SPA)
    api/              API REST (auth, pages, espaces, membres, discussion, polling, profil)
    js/               Modules JS (app, sidebar, editor, discussion, polling, settings)
    css/              Styles de l'application
    index.php         Shell principal de l'application
  assets/             Ressources partagees (DaisyUI, Tailwind, FontAwesome, images)
  migrations/         Scripts SQL de migration
  404/                Page d'erreur personnalisee
  .env                Variables d'environnement (non versionne)
  .htaccess           Configuration Apache
  composer.json       Dependances PHP

API

Tous les endpoints sont dans app/api/ et communiquent en JSON.

Endpoint Methodes Description
auth.php -- Middleware de verification de session
espaces.php GET, POST, PUT, DELETE CRUD des espaces de travail
pages.php GET, POST, PUT, DELETE CRUD des pages (arborescence)
contenu.php GET, POST Lecture et sauvegarde du contenu editeur
discussion.php GET, POST Messages par page (pagination, polling)
membres.php GET, POST, DELETE Gestion des membres d'un espace
profile.php GET, POST Profil utilisateur et deconnexion
poll.php GET Long-polling pour sync contenu et pages

Stack technique

  • Backend -- PHP 8, MySQL, PHPMailer, vlucas/phpdotenv
  • Frontend -- HTML, JavaScript (vanilla), TipTap (ES module via CDN)
  • CSS -- DaisyUI + Tailwind CSS
  • Icones -- Font Awesome 6

Licence

Projet prive.