- Overview
- Key Features
- Technologies Used
- Database Structure
- Detailed Project Features
- Project Structure
- Getting Started
- Deployment
- Contributing
- License
FocusFlow is a comprehensive Kanban board application that combines task management with focus tools and spiritual guidance. It helps users organize their tasks and increase productivity while providing unique features like a Quran player and AI assistant.
- 📋 Kanban Board: Drag-and-drop task management with customizable columns
- 🔐 Authentication: Secure user login, registration, and password reset
- 🤖 AI Integration: Smart assistant for task suggestions and help
- ⏲️ Focus Timer: Built-in timer for productivity management and time tracking
- 📖 Quran Player: Integrated Quran player for spiritual guidance
- 📱 Responsive Design: Works seamlessly on desktop and mobile devices
- React with TypeScript: For building the user interface
- Vite: For fast build tooling
- Tailwind CSS: For styling
- shadcn/ui: UI component library
- Framer Motion: For animations
- React Router: For page navigation
- React Query: For data state management
- Node.js API: For backend services
- Supabase: For database and authentication
- Express: For creating the API
- OpenRouter API: For AI integration
We use Supabase as our database solution, which is built on PostgreSQL. Here's a simple breakdown of our database structure:
-
users
- User authentication and profile information
- Managed by Supabase Auth
-
tasks
id: Unique identifiertitle: Task titledescription: Task detailsstatus: Current column (e.g., "TODO", "DOING", "DONE")user_id: Reference to users tablecreated_at: Creation timestampupdated_at: Update timestamppriority: Task prioritytime_spent: Time spent on the task
-
activity_logs
- Tracks all user actions
- Used for the activity feed feature
- Create, edit, and delete tasks
- Drag and drop tasks between columns
- Customizable columns and flexible workflow
- Real-time updates across all users
- Restrictions on the "In Progress" column to focus on only one task
- Secure user registration and login
- Password reset functionality
- Session management
- Protected routes and API endpoints
- Smart task suggestions
- Natural language processing for task creation
- AI-powered productivity insights
- Personal project management assistant
- Customizable work/break intervals
- Session tracking
- Productivity statistics
- Integration with task management system
- Audio playback of Quranic recitations
- Surah selection and navigation
- Variety of reciters
- Integration with task management system
├── api/ # Backend API routes
│ ├── auth/ # Authentication endpoints
│ ├── tasks/ # Task management endpoints
│ └── ai/ # AI integration endpoints
├── src/
│ ├── components/ # React components
│ │ ├── ai/ # AI chat components
│ │ ├── auth/ # Authentication forms
│ │ ├── kanban/ # Kanban board components
│ │ ├── quran/ # Quran player components
│ │ └── ui/ # Reusable UI components
│ ├── services/ # API service integrations
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Application pages/routes
│ └── types/ # TypeScript type definitions
└── supabase/ # Supabase configuration
- Clone the repository:
git clone https://github.com/elewashy/FocusFlow-Kanban-Board.git
cd FocusFlow-Kanban-Board- Install dependencies:
npm install- Copy
.env.exampleto.env.localand configure your environment variables:
cp .env.example .env.local- Configure environment variables:
# Supabase credentials
SUPABASE_URL=your-supabase-project-url
SUPABASE_ANON_KEY=your-supabase-anon-key
SUPABASE_SERVICE_KEY=your-supabase-SERVICE-key
# OpenRouter API key
OPENROUTER_API_KEY=your-openrouter-api-key
# Server port
PORT=3001
- Start the development server:
npm run dev- Open your browser at
http://localhost:8080
The project can be deployed on Vercel or any other hosting platform that supports React and Node.js applications.
- Create an account on Vercel
- Link your GitHub repository
- Configure environment variables in the Vercel dashboard
- Deploy the application
Contributions are welcome! Please feel free to submit issues and pull requests.
This project is licensed under the MIT License.