A modern, full-featured task management application built with Next.js and Appwrite. Tasky helps teams organize their work with workspaces, projects, tasks, and powerful collaboration features.
- Workspace Management: Create and manage multiple workspaces for different teams or projects
- Project Organization: Organize tasks into projects with custom settings
- Task Management: Create, edit, assign, and track tasks with detailed information
- Member Collaboration: Invite team members and manage workspace/project access
- Drag & Drop: Intuitive drag-and-drop interface for task organization
- Calendar View: Visualize tasks and deadlines in a calendar format
- Analytics Dashboard: Track project progress and team performance with charts
- Authentication: Secure user authentication with OAuth support
- Responsive Design: Fully responsive UI that works on desktop and mobile devices
- Modern, clean interface built with Shadcn UI components
- Smooth animations and transitions
- Accessible components following ARIA standards
- Toast notifications for user feedback
- Loading states and error handling
- Responsive navigation and sidebar
- Next.js 14 - React framework with App Router
- React 18 - UI library
- TypeScript - Type safety
- Appwrite - Backend as a Service (BaaS)
- Database (NoSQL)
- Authentication
- Storage
- Real-time subscriptions
- Hono - Lightweight web framework for API routes
- Zod - Schema validation
- @hono/zod-validator - Zod integration for Hono
- TanStack Query (React Query) - Server state management
- nuqs - URL state management
- Tailwind CSS - Utility-first CSS framework
- Radix UI - Headless UI components
- Avatar, Checkbox, Dialog, Dropdown Menu
- Label, Popover, Scroll Area, Select
- Separator, Slot, Tabs, Tooltip
- Shadcn/ui - Re-usable components built on Radix UI
- Lucide React - Icon library
- React Icons - Additional icons
- class-variance-authority - Component variants
- tailwind-merge - Merge Tailwind classes
- tailwindcss-animate - Animation utilities
- React Hook Form - Form state management
- @hookform/resolvers - Validation resolvers
- Zod - Schema validation
- @hello-pangea/dnd - Drag and drop functionality
- React Big Calendar - Calendar component
- date-fns - Date utility library
- react-day-picker - Date picker component
- Recharts - Charts and data visualization
- Sonner - Toast notifications
- Vaul - Drawer component
- react-use - React hooks library
- ESLint - Code linting
- PostCSS - CSS processing
- TypeScript - Type checking
tasky/
βββ src/
β βββ app/ # Next.js App Router
β β βββ (auth)/ # Authentication routes (sign-in, sign-up)
β β βββ (dashboard)/ # Dashboard routes (workspaces, projects, tasks)
β β βββ (standalone)/ # Standalone pages (workspace/project creation)
β β βββ api/ # API routes with Hono
β β βββ oauth/ # OAuth callback handling
β β βββ globals.css # Global styles
β β βββ layout.tsx # Root layout
β β βββ loading.tsx # Global loading state
β β βββ error.tsx # Global error boundary
β β βββ not-found.tsx # 404 page
β β
β βββ components/ # Reusable UI components
β β βββ ui/ # Shadcn UI components
β β βββ analytics/ # Analytics components
β β βββ navbar/ # Navigation bar
β β βββ sidebar/ # Sidebar navigation
β β βββ projects/ # Project-related components
β β βββ tasks/ # Task-related components
β β βββ workspace/ # Workspace components
β β βββ member/ # Member components
β β βββ responsive/ # Responsive utilities
β β βββ loading/ # Loading components
β β βββ error/ # Error components
β β
β βββ feature/ # Feature modules
β β βββ auth/ # Authentication logic & components
β β βββ workspaces/ # Workspace management
β β βββ projects/ # Project management
β β βββ tasks/ # Task management
β β βββ members/ # Member management
β β
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility functions & configurations
β βββ validations/ # Zod validation schemas
β βββ config.ts # App configuration
β
βββ public/ # Static assets
βββ .env # Environment variables (not in git)
βββ .env.example # Environment variables template
βββ .gitignore # Git ignore rules
βββ components.json # Shadcn UI configuration
βββ next.config.mjs # Next.js configuration
βββ tailwind.config.ts # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
βββ package.json # Dependencies and scripts
βββ README.md # This file
- Node.js: Version 22.x or higher
- npm or yarn or pnpm
- Appwrite Account: Create an account at appwrite.io
-
Clone the repository
git clone https://github.com/mandouro-22/tasky.git cd tasky -
Install dependencies
npm install
-
Set up Appwrite
- Create a new project in Appwrite Console
- Create a database with the following collections:
- Workspaces
- Members
- Projects
- Tasks
- Create a storage bucket for images
- Configure authentication providers (Email/Password, OAuth)
-
Configure environment variables
- Copy
.env.exampleto.env
cp .env.example .env
- Fill in your Appwrite credentials:
NEXT_PUBLIC_APPWRITE_ENDPOINT: Your Appwrite endpointNEXT_PUBLIC_APPWRITE_PROJECT: Your project IDNEXT_PUBLIC_APPWRITE_DATABASE_ID: Your database IDNEXT_PUBLIC_APPWIRTE_WORKSPACE_ID: Workspaces collection IDNEXT_PUBLIC_APPWIRTE_MEMBERS_ID: Members collection IDNEXT_PUBLIC_APPWIRTE_PROJECTS_ID: Projects collection IDNEXT_PUBLIC_APPWIRTE_TASKS_ID: Tasks collection IDIMAGE_BUCKET_ID: Storage bucket ID for imagesNEXT_PUBLIC_APP_URL: Your app URL (http://localhost:3000/ for development)
- Copy
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
npm run build
npm startnpm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLint
See .env.example for all required environment variables. Make sure to never commit your .env file to version control.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is private and proprietary.
Made with β€οΈ using Next.js and Appwrite