EasTask is a collaborative task management platform where teams can organize work within workspaces. Each workspace acts as a container for team members, pages (websites/projects), and tasks.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WORKSPACE β
β (Your team's central hub for collaboration) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β π₯ Team Members β
β βββ Owner (full control) β
β βββ Admins (manage members & settings) β
β βββ Members (create & manage their tasks) β
β β
β π Pages (Websites/Projects) β
β βββ Each page can have multiple tasks β
β βββ Tasks can be assigned to any team member β
β β
β β
Tasks β
β βββ Assigned to team members β
β βββ Priority levels (Low β Urgent) β
β βββ Status tracking (Todo β In Progress β Done) β
β βββ Due dates & comments β
β βββ File attachments β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Create unlimited workspaces for different teams or projects
- Invite team members via email or shareable invite link
- Role-based access control: Owner, Admin, Member, Viewer
- Workspace settings: Name, description, and visibility options
- Invite members by email with role selection
- Join via invite code - Share a link and team members can join instantly
- Real-time presence - See who's online in your workspace
- Activity tracking - Track all changes and updates
- Create tasks with title, description, priority, and due date
- Assign tasks to any workspace member
- Multiple statuses: Pending, In Progress, Completed, Cancelled
- Priority levels: Low, Medium, High, Urgent
- Subtasks for breaking down complex work
- Comments for team discussion on tasks
- File attachments - Attach documents and images to tasks
- Create pages to organize related tasks
- Link external websites to track web projects
- Group tasks by page for better organization
- Dashboard overview with task statistics
- Task completion metrics
- Team productivity insights
- Node.js 18+ and npm
- Supabase account (for backend)
# Clone the repository
git clone <your-repo-url>
cd page-task-hub-main
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your Supabase credentials
# Start development server
npm run devCreate a .env.local file with your Supabase credentials:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_keyRun the following SQL scripts in your Supabase SQL Editor (in order):
supabase-schema.sql- Creates all database tablesFIX_INFINITE_RECURSION.sql- Sets up RLS policies with helper functions
| Table | Purpose |
|---|---|
workspaces |
Stores workspace info (name, description, owner) |
workspace_members |
Links users to workspaces with roles |
pages |
Stores website/project pages within workspaces |
tasks |
All tasks with assignments, due dates, etc. |
task_comments |
Comments on tasks |
workspace_invitations |
Pending invitations to workspaces |
user_activities |
Activity log for tracking changes |
user_presence |
Real-time online status |
file_attachments |
Files attached to tasks |
Sign Up β Create Your First Workspace β Invite Team Members β Add Pages β Create Tasks
Receive Invite Link β Click Link β Sign Up/Login β Automatically Joined to Workspace
Login β Select Workspace β View Dashboard β Manage Tasks β Collaborate with Team
src/
βββ components/ # Reusable UI components
β βββ ui/ # shadcn/ui components
β βββ routes/ # Lazy-loaded route components
β βββ suspense/ # Loading wrappers
βββ contexts/ # React Context providers
β βββ SupabaseAuthContext.tsx # Authentication
β βββ SupabaseWorkspaceContext.tsx # Workspace management
β βββ TaskContext.tsx # Task state
β βββ NotificationContext.tsx # Notifications
βββ hooks/ # Custom React hooks
βββ pages/ # Page components
β βββ Landing.tsx # Login/Signup page
β βββ Home.tsx # Dashboard
β βββ Tasker.tsx # Task management
β βββ Team.tsx # Team management
β βββ WorkspaceManagement.tsx # Workspace settings
βββ services/ # API and external services
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions
| Action | Owner | Admin | Member | Viewer |
|---|---|---|---|---|
| View workspace | β | β | β | β |
| Edit workspace settings | β | β | β | β |
| Delete workspace | β | β | β | β |
| Invite members | β | β | β | β |
| Remove members | β | β | β | β |
| Create pages | β | β | β | β |
| Create tasks | β | β | β | β |
| Assign tasks | β | β | β | β |
| Update own tasks | β | β | β | β |
| Delete any task | β | β | β | β |
| Category | Technology |
|---|---|
| Frontend | React 18, TypeScript |
| Styling | Tailwind CSS, shadcn/ui |
| State Management | React Context, TanStack Query |
| Backend | Supabase (PostgreSQL + Auth + Realtime) |
| Build Tool | Vite |
| Routing | React Router v6 |
# Development
npm run dev # Start dev server at http://localhost:8080
# Build
npm run build # Production build
npm run preview # Preview production build
# Linting
npm run lint # Run ESLintThis error occurs when RLS policies reference themselves. Run FIX_INFINITE_RECURSION.sql in Supabase SQL Editor to fix it.
- Check Supabase credentials in
.env.local - Ensure database tables exist (run schema SQL)
- Verify RLS policies are set up correctly
- Make sure you're viewing the correct workspace
- Check if tasks exist in the database
- Verify you have proper workspace membership
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ for productive teams