Skip to content

roby405/daily-planner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Daily Planner Full-Stack Platform

A comprehensive productivity and collaboration platform featuring a Flask-based backend and a React frontend. The system provides a unified environment for task management, real-time communication via WebSockets, and daily gamified engagement features.


Key Features

Productivity and Task Management

  • Task CRUD: Full Create, Read, Update, and Delete functionality for user-specific tasks.
  • Status Tracking: Manage task progress and assign due dates.
  • Integrated Timer: Cross-platform Pomodoro timer widget for focus sessions.

Real-Time Collaboration

  • Instant Messaging: Bi-directional communication powered by Socket.IO.
  • Private and Group Chats: Direct messaging and multi-user group rooms.
  • Dynamic Room Management: Automatic cleanup of inactive rooms via MySQL triggers.

Gamification and Engagement

  • Daily Wordle: Custom Wordle implementation using a deterministic daily seed.
  • Daily Fun Fact: Random educational content pulled from a curated database.

Security and Architecture

  • JWT Authentication: Access control with token expiration and refresh rotation.
  • Data Integrity: Regex-based validation and SQLAlchemy relational constraints.
  • Theme Management: Persistent Light/Dark mode stored in local storage.

Tech Stack

Backend

  • Language: Python 3
  • Framework: Flask
  • ORM: Flask-SQLAlchemy (MySQL)
  • Real-time I/O: Flask-SocketIO (WebSockets)
  • Authentication: Flask-JWT-Extended
  • Security: Werkzeug (PBKDF2 hashing)

Frontend

  • Library: React
  • Routing: React Router DOM
  • Styling: Tailwind CSS
  • State Management: React Context API

Project Structure

.
├── app.py                  # Main application entry point
├── config.py               # Environment configuration
├── models.py               # SQLAlchemy models (Users, Rooms, Tasks, Messages)
├── socketio_handlers.py    # WebSocket event handlers
├── routes/                 # Flask Blueprints
│   ├── auth.py             # Authentication and JWT
│   ├── tasks.py            # Task API endpoints
│   └── wordle.py           # Daily game and fun fact logic
└── daily-planner-frontend/ # React frontend
    ├── src/
    │   ├── components/     # UI components
    │   ├── context/        # AuthContext
    │   ├── pages/          # Route-level components
    │   └── App.js          # Routing and theme logic

Setup and Installation

Backend Requirements

  • Python 3.8+
  • MySQL Server

Install dependencies:

pip install flask flask-sqlalchemy flask-socketio flask-jwt-extended flask-cors pymysql python-dotenv

Create a .env file:

MYSQL_HOST=localhost
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DB=flask
JWT_SECRET_KEY=your_secret_key

Run the backend:

python app.py

Frontend Requirements

  • Node.js and npm

Install dependencies:

cd daily-planner-frontend
npm install

Run the development server:

npm run dev

Database Management

The backend automatically initializes tables using db.create_all().
A MySQL trigger (after_userroom_delete) ensures database cleanliness by removing Rooms with no associated UserRooms.


Developer

Baran Denis-Constantin Epure Roberto-Constantin

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors