Skip to content
 
 

Repository files navigation

FlowDesk Logo

FlowDesk

A modern, sleek productivity & daily task management web app — built to help you stay organized, focused, and in flow.

FeaturesTech StackGetting StartedProject StructureScreenshotsEnvironment VariablesContributingLicense

React 19 TypeScript Vite 8 Tailwind CSS 4 PWA Ready


✨ Features

📋 Task Management

  • Quick Add Bar — Create tasks instantly with optional due dates, reminders, recurring schedules, and image attachments.
  • List View — A clean, scrollable list of active and completed tasks with inline actions.
  • Kanban Board — Drag-and-drop tasks across To Do → In Progress → Done columns (powered by @hello-pangea/dnd).
  • View Toggle — Seamlessly switch between List and Kanban views.

📅 Date Navigation

  • Date Strip — A horizontally scrollable date picker spanning the last 14 days.
  • Historical Snapshots — Browse past days in read-only mode to review what you accomplished.

📊 Insights & Analytics

  • Completion Consistency — 14-day area chart showing your daily task completion rate.
  • Productivity Peaks — Bar chart displaying average tasks completed per day of the week (last 30 days).
  • Key Metrics — Current streak, overall completion rate, and most productive day — all at a glance.

🎨 Design & UX

  • Dark-First Design — A premium dark theme with carefully curated color tokens, glassmorphism, and subtle glow effects.
  • Fluid Animations — Page transitions, micro-interactions, and spring-based animations via Framer Motion.
  • Responsive Layout — Fully optimized for desktop, tablet, and mobile with adaptive navigation and touch-friendly targets (44×44px minimum).
  • Collapsible Sidebar — Desktop sidebar with active indicator bars, badges, and smooth collapse/expand.

🔐 Authentication

  • Auth Gateway — Beautiful and interactive sign-in / sign-up page with animated floating labels, parallax card tilt, and social login buttons (Google & GitHub).
  • Mode Toggle — Animated pill switch between Sign In and Sign Up with smooth field transitions.

📱 Progressive Web App (PWA)

  • Installable — Add FlowDesk to your home screen for a native-like experience.
  • Service Worker — Cache-first strategy for static assets, network-first for HTML — works offline.
  • App Manifest — Standalone display, custom theme color, and splash screen configuration.

🔔 Additional Capabilities

  • Reminders — Flag tasks as reminders with a visual bell indicator.
  • Recurring Tasks — Set daily or weekly recurrence on any task.
  • Visual Proof — Attach images to tasks as proof of completion; includes a full-screen lightbox viewer.
  • Day Summary — End-of-day progress bar with motivational messages and emoji feedback.
  • Local Persistence — All tasks and daily snapshots are stored in localStorage — no server required.

🛠 Tech Stack

Layer Technology
Framework React 19 with TypeScript
Build Tool Vite 8 — lightning-fast HMR and optimized builds
Styling Tailwind CSS 4 via @tailwindcss/vite plugin
Animations Framer Motion — spring physics & layout
Drag & Drop @hello-pangea/dnd
Charts Recharts — composable charting for React
Icons Lucide React + inline SVGs
Backend Supabase — Auth, database, edge functions (optional)
Linting ESLint 9 + typescript-eslint + React hooks/refresh plugins
Typography Inter via Google Fonts

🚀 Getting Started

Prerequisites

  • Node.js ≥ 18
  • npm ≥ 9 (or use your preferred package manager)

Installation

# Clone the repository
git clone https://github.com/Eccentric-Ayush/Flowdesk.git
cd Flowdesk

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your Supabase credentials (optional — app works without them)

# Start the development server
npm run dev

The app will be available at http://localhost:5173.

Available Scripts

Command Description
npm run dev Start the Vite dev server with HMR
npm run build Type-check with tsc and build for production
npm run preview Preview the production build locally
npm run lint Run ESLint across the project

📁 Project Structure

FlowDesk/
├── public/
│   ├── favicon.svg          # App icon (SVG)
│   ├── icons.svg            # Icon sprite
│   ├── manifest.json        # PWA manifest
│   └── service-worker.js    # Offline caching service worker
├── src/
│   ├── assets/              # Static assets (hero image, logos)
│   ├── components/
│   │   ├── DateStrip.tsx     # Horizontal scrollable date picker
│   │   ├── DaySummary.tsx    # Daily progress bar & motivational summary
│   │   ├── KanbanBoard.tsx   # Drag-and-drop Kanban with mobile tabs
│   │   ├── ListView.tsx      # Task list view with toggle & delete
│   │   ├── QuickAdd.tsx      # Quick task creation bar with attachments
│   │   ├── Sidebar.tsx       # Collapsible navigation sidebar
│   │   ├── TaskList.tsx      # Reusable task list renderer
│   │   ├── ViewToggle.tsx    # List ↔ Kanban view switch
│   │   └── index.ts          # Barrel exports
│   ├── hooks/
│   │   ├── useDateTime.ts    # Greeting message & formatted date
│   │   ├── useTasks.ts       # Core task CRUD, snapshots & persistence
│   │   └── index.ts          # Barrel exports
│   ├── pages/
│   │   ├── AuthPage.tsx      # Login / Sign-up with animations
│   │   ├── Dashboard.tsx     # Main dashboard with stats & tasks
│   │   ├── Insights.tsx      # Analytics charts & key metrics
│   │   └── index.ts          # Barrel exports
│   ├── types/
│   │   └── index.ts          # Shared TypeScript interfaces (Task, NavItem, etc.)
│   ├── App.tsx               # Root app with auth gate & routing
│   ├── App.css               # Global app styles & animations
│   ├── index.css             # Tailwind directives & design tokens
│   └── main.tsx              # React DOM entry point
├── .env.example              # Environment variable template
├── index.html                # HTML shell with PWA meta tags
├── vite.config.ts            # Vite + React + Tailwind plugin config
├── tsconfig.json             # TypeScript project references
├── tsconfig.app.json         # App-specific TS config
├── tsconfig.node.json        # Node/Vite TS config
├── eslint.config.js          # ESLint flat config
└── package.json              # Dependencies & scripts

🌐 Environment Variables

FlowDesk uses Supabase for optional backend features. Copy the template and fill in your credentials:

cp .env.example .env
Variable Required Description
VITE_SUPABASE_URL Optional Your Supabase project URL
VITE_SUPABASE_ANON_KEY Optional Supabase anonymous/public API key
VITE_APP_NAME No App display name (defaults to "FlowDesk")
VITE_API_VERSION No API version identifier
SUPABASE_SERVICE_ROLE_KEY No ⚠️ Server-side only — never expose in browser

Note: The app works fully without Supabase — tasks are persisted locally in the browser's localStorage.


📸 Screenshots

FlowDesk Hero


🤝 Contributing

Contributions are welcome! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m "Add amazing feature"
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Please make sure your code:

  • Passes npm run lint with no errors
  • Builds successfully with npm run build
  • Follows the existing code style and component patterns

📄 License

This project is open source and available under the MIT License.


Built by Ayush Kumar Singh

About

A sleek, PWA-ready productivity app with Kanban boards, analytics, and animated UI — built with React 19 + TypeScript + Tailwind CSS 4.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages