A real-time collaborative task management web application built with React 18, Vite, and Firebase.
π Live Demo: https://tasksync-0711.web.app
- π Authentication - Email/password signup and login with Firebase Authentication
- π Task Management - Create, read, update, and delete tasks
- π€ Real-time Collaboration - Share lists with team members and see updates instantly
- π Activity Feed - Track all changes and activities in your lists
- π¨ Modern UI - Clean, responsive design with TailwindCSS
- π Dark Mode - Toggle between light and dark themes
- π± Responsive - Works seamlessly on desktop and mobile devices
- Frontend: React 18 + Vite
- Styling: TailwindCSS
- Backend: Firebase (Firestore + Authentication + Storage)
- Routing: React Router DOM v6
- State Management: Context API
- Icons: lucide-react
- Node.js (v16 or higher)
- npm or yarn
- Firebase account
- Clone the repository:
cd TaskSync- Install dependencies:
npm install-
Create a Firebase project at Firebase Console
-
Enable Authentication (Email/Password) and Firestore Database in your Firebase project
-
Create a
.envfile in the root directory and add your Firebase configuration:
cp .env.example .env- Update the
.envfile with your Firebase credentials:
VITE_FIREBASE_API_KEY=your_api_key_here
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain_here
VITE_FIREBASE_PROJECT_ID=your_project_id_here
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket_here
VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id_here
VITE_FIREBASE_APP_ID=your_app_id_here
Start the development server:
npm run devThe application will open at http://localhost:3000
Create a production build:
npm run buildPreview the production build:
npm run previewusers
{
uid: string,
name: string,
email: string,
photoURL: string,
createdAt: timestamp
}lists
{
id: string,
title: string,
owner: string (uid),
sharedWith: array of userIds,
createdAt: timestamp
}tasks
{
id: string,
listId: string,
title: string,
description: string,
status: 'pending' | 'completed',
assignedTo: string (uid),
createdAt: timestamp
}activities
{
id: string,
listId: string,
message: string,
timestamp: timestamp
}Add these security rules to your Firebase project:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null;
allow write: if request.auth.uid == userId;
}
match /lists/{listId} {
allow read: if request.auth != null &&
(resource.data.owner == request.auth.uid ||
request.auth.uid in resource.data.sharedWith);
allow create: if request.auth != null;
allow update, delete: if request.auth.uid == resource.data.owner;
}
match /tasks/{taskId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
allow update, delete: if request.auth != null;
}
match /activities/{activityId} {
allow read: if request.auth != null;
allow create: if request.auth != null;
}
}
}- Sign up with email and password
- Login with existing credentials
- Persistent sessions
- Secure logout
- View all your lists
- Create new lists
- Switch between lists
- Real-time updates
- Add new tasks with title and description
- Mark tasks as complete/incomplete
- Edit task details
- Delete tasks
- Real-time synchronization across all users
- Share lists with team members by email
- View list collaborators
- Real-time updates for all collaborators
- Activity feed showing all changes
- Clean, modern design
- Responsive layout (mobile, tablet, desktop)
- Dark mode support
- Intuitive navigation
- Smooth animations and transitions
TaskSync/
βββ public/
βββ src/
β βββ assets/
β βββ components/
β β βββ ActivityFeed.jsx
β β βββ AddTask.jsx
β β βββ CollaboratorsList.jsx
β β βββ Navbar.jsx
β β βββ ShareList.jsx
β β βββ Sidebar.jsx
β β βββ TaskItem.jsx
β β βββ TaskList.jsx
β βββ context/
β β βββ AuthContext.jsx
β βββ pages/
β β βββ Dashboard.jsx
β β βββ Login.jsx
β β βββ Profile.jsx
β β βββ Settings.jsx
β β βββ Signup.jsx
β βββ services/
β β βββ firebaseConfig.js
β βββ App.jsx
β βββ index.css
β βββ main.jsx
βββ .env
βββ .env.example
βββ .gitignore
βββ index.html
βββ package.json
βββ postcss.config.js
βββ tailwind.config.js
βββ vite.config.js
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
For support, email [email protected] or open an issue in the repository.
Built with β€οΈ using React, Vite, and Firebase