A comprehensive task management application built with Next.js, featuring a beautiful UI, real-time updates, and powerful organization tools.
- 📅 Interactive Calendar View
- 📊 Task Statistics and Analytics
- 🔄 Real-time Updates
- 🌙 Dark/Light Theme
- 🌐 Internationalization (i18n)
- 📱 Responsive Design
- 🔒 Secure Authentication
-
Frontend:
- Next.js 14
- React 18
- TypeScript
- Material-UI
- TailwindCSS
- Framer Motion
- Chart.js
-
Backend:
- Supabase (Database & Authentication)
- Next.js API Routes
-
Tools & Libraries:
- next-intl (Internationalization)
- react-dnd (Drag and Drop)
- TipTap (Rich Text Editor)
Before you begin, ensure you have the following installed:
- Node.js (v18.0.0 or higher)
- npm (v9.0.0 or higher)
- Git (v2.30.0 or higher)
- Configure Git with your credentials:
git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"- If you want to keep your email private on GitHub:
- Visit https://github.com/settings/emails
- Enable "Keep my email address private"
- Use the provided no-reply email for git config:
git config --global user.email "your-no-reply-address@users.noreply.github.com"- Clone the repository:
git clone https://github.com/yourusername/taskmaster-pro.git
cd taskmaster-pro- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localThen edit .env.local with your configuration:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key-
Create a new project on Supabase
-
Run the following SQL commands in your Supabase SQL editor:
-- Create tasks table
CREATE TABLE tasks (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
status TEXT NOT NULL DEFAULT 'pending',
due_date TIMESTAMP WITH TIME ZONE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE
);
-- Create categories table
CREATE TABLE categories (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
name TEXT NOT NULL,
color TEXT NOT NULL,
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE
);
-- Create task_categories junction table
CREATE TABLE task_categories (
task_id UUID REFERENCES tasks(id) ON DELETE CASCADE,
category_id UUID REFERENCES categories(id) ON DELETE CASCADE,
PRIMARY KEY (task_id, category_id)
);
-- Enable Row Level Security (RLS)
ALTER TABLE tasks ENABLE ROW LEVEL SECURITY;
ALTER TABLE categories ENABLE ROW LEVEL SECURITY;
ALTER TABLE task_categories ENABLE ROW LEVEL SECURITY;
-- Create RLS policies
CREATE POLICY "Users can only see their own tasks"
ON tasks FOR SELECT
USING (auth.uid() = user_id);
CREATE POLICY "Users can only modify their own tasks"
ON tasks FOR ALL
USING (auth.uid() = user_id);- Start the development server:
npm run dev- Open http://localhost:3000 in your browser
- Clean the build cache:
rm -rf .next
# or on Windows
rmdir /s /q .next- Create a production build:
npm run build- Start the production server:
npm run startThe easiest way to deploy your Next.js app is to use Vercel:
- Install Vercel CLI:
npm i -g vercel- Deploy:
vercelFor other hosting platforms:
- Set up environment variables on your hosting platform
- Configure build command:
npm run build - Configure start command:
npm run start - Set Node.js version to 18.x or higher
If you have large files (>50MB):
- Install Git LFS:
# Windows (with Chocolatey)
choco install git-lfs
# macOS
brew install git-lfs- Initialize Git LFS:
git lfs install
git lfs track "*.pack"
git add .gitattributesnpm run dev- Start development servernpm run build- Create production buildnpm run start- Start production servernpm run lint- Run ESLintnpm run typecheck- Run TypeScript type checkingnpm run format- Format code with Prettier
src/
├── app/ # Next.js 14 app directory
│ ├── api/ # API routes
│ ├── (auth)/ # Authentication pages
│ └── dashboard/ # Dashboard pages
├── components/ # React components
├── contexts/ # React contexts
├── hooks/ # Custom React hooks
├── i18n/ # Internationalization files
├── lib/ # Utility functions
└── types/ # TypeScript types
-
Enable authentication in your Supabase project
-
Configure the following auth providers:
- Email/Password
- Google (optional)
- GitHub (optional)
-
Update your authentication redirect URLs in Supabase:
http://localhost:3000/auth/callback(Development)https://your-production-url.com/auth/callback(Production)
- Fork the repository
- Create a new 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.
- If you encounter build errors:
# Clear all caches
rm -rf .next
npm cache clean --force
# Reinstall dependencies
rm -rf node_modules
npm install- For TypeScript errors:
# Run type checking
npm run typecheck-
Email privacy restrictions:
- Use the GitHub-provided no-reply email address
- Or make your email public in GitHub settings
-
Large file errors:
- Use Git LFS for large files
- Or add large files to .gitignore
- Check Supabase connection:
- Verify credentials in .env.local
- Check IP allowlist in Supabase dashboard
- Verify RLS policies
For support:
- Open an issue on GitHub
- Email support@taskmasterpro.com
- Join our Discord channel
