Taskery is an AI-powered full-stack task management application built with the MERN (MongoDB, Express.js, React.js, Node.js) stack. It helps you organize your projects and tasks efficiently with a clean, modern, and intuitive user interface.
-
User Authentication: Secure registration and login using JWT. Passwords are hashed with bcryptjs.
-
Project Management: Create, view, update, and delete projects. Edit project details and manage favorite projects.
-
Task Management: Add, edit, delete, and view tasks within projects. Tasks can be sorted, searched, and filtered.
-
Notes Management: Create, view, update, and delete notes.
-
AI Chat: An AI-powered chat feature to help you with your tasks. AI can do operations
-
Inbox: View all tasks assigned to you across all projects in a single inbox page.
-
Activity Log: Track all user and project activities (create, update, delete) in a dashboard log.
-
Search: Search tasks across all projects with instant results.
-
Settings: Update profile, change password, and manage notification preferences.
-
Responsive Design: Fully responsive UI for desktop, tablet, and mobile.
-
Dark/Light Theme: Toggle between dark and light modes.
-
Modern UI: Built with Tailwind CSS for a sleek, fast, and accessible experience.
- React.js (SPA, hooks, context API)
- React Router (routing)
- Axios (API requests)
- Tailwind CSS (utility-first styling)
- Vite (fast dev/build tool)
- Node.js (runtime)
- Express.js (API server)
- MongoDB (database)
- Mongoose (ODM)
- JWT (authentication)
- bcryptjs (password hashing)
- dotenv (env management)
- Gemini (Using their free Api)
task-manager/
βββ client/ # React Frontend
β βββ public/ # Static assets
β βββ src/
β β βββ assets/ # Images, icons, etc.
β β βββ components/ # Reusable UI components
β β β βββ common/ # Modals, cards, sidebar, etc.
β β β βββ landing/ # Landing page components
β β β βββ settings/ # Settings page components
β β βββ context/ # React context providers (auth, etc.)
β β βββ hooks/ # Custom React hooks
β β βββ pages/ # Page-level components (Home, Login, Register, Dashboard, etc.)
β β β βββ dashboard/ # Dashboard sub-pages (Inbox, Projects, ActivityLog, etc.)
β β βββ App.jsx # Main app component
β β βββ main.jsx # Entry point
β β βββ index.css # Global styles
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite config
β βββ ...
βββ server/ # Node.js/Express Backend
β βββ config/ # DB config
β βββ controllers/ # Route controllers
β βββ middleware/ # Auth middleware
β βββ models/ # Mongoose models
β β βββ schemaArch/ # JSON schema archive
β βββ routes/ # Express routes
β βββ server.js # Entry point
β βββ package.json # Backend dependencies
β βββ vercel.json # Vercel deployment config
βββ README.md
βββ ...
-
Clone the repository:
git clone https://github.com/legendofnoobs/Taskery.git cd task-manager -
Backend setup:
cd server npm install # Create .env file (see .env.example) # Example .env: # PORT=5000 # MONGO_URI=your_mongodb_connection_string # JWT_SECRET=your_super_secret_jwt_key
-
Frontend setup:
cd ../client npm install # Optionally add to client/package.json: # "proxy": "http://localhost:5000"
- Start backend:
cd server npm run dev # Server: http://localhost:5000
- Start frontend:
cd client npm run dev # App: http://localhost:3000
- Landing Page: Hero section, features, and footer.
- Auth Pages: Login and Register forms.
- Dashboard: Sidebar navigation, project cards, favorite projects, inbox, activity log, and search.
- Project Details: Task list, create/edit/delete tasks, project settings.
- Task Details: Modal/page for task info, edit, and delete.
- Settings: Profile, password, and notification settings.
- JWT-based authentication (token stored in localStorage).
- Auth middleware protects all API routes except login/register.
- Passwords are hashed with bcryptjs before storage.
POST /api/users/registerβ Register new userPOST /api/users/loginβ Login and receive JWT
GET /api/projectsβ List all user projectsPOST /api/projectsβ Create projectGET /api/projects/:idβ Get project by IDPUT /api/projects/:idβ Update projectDELETE /api/projects/:idβ Delete projectPUT /api/projects/:id/favoriteβ Toggle favorite
GET /api/projects/:projectId/tasksβ List tasks in projectPOST /api/projects/:projectId/tasksβ Create taskPUT /api/tasks/:taskIdβ Update taskDELETE /api/tasks/:taskIdβ Delete task
GET /api/notesβ List all user notesPOST /api/notesβ Create noteGET /api/notes/:idβ Get note by IDPUT /api/notes/:idβ Update noteDELETE /api/notes/:idβ Delete note
POST /api/ai/chatβ Send a message to the AI chat
GET /api/activity-logsβ List activity logs
- common/: Modals (create/edit/delete), Sidebar, ProjectCard, TaskCard, TaskDetailsModal, etc.
- landing/: Hero, Features, Footer
- settings/: Profile, Security, Notification settings
- dashboard/: Inbox, Projects, ActivityLog, SearchPage
useAuthβ Auth state and actionsuseProjectsβ Project CRUDuseProjectTasksβ Task CRUDuseNotesβ Notes CRUDuseAiChatβ AI ChatuseFavoriteProjectsβ Favorite/unfavorite logicuseInboxTasksβ Inbox logicuseActivityLogsβ Activity log fetchuseSearchTasksβ Search logicuseSidebarToggleβ Sidebar open/closeuseTaskCreationβ Task creation helpersuseTaskSortingβ Task sortinguseProfileSettingsβ Profile updateusePasswordSecurityβ Password changeuseNotificationSettingsβ Notification prefs
- Passwords hashed with bcryptjs
- JWT tokens for authentication
- Sensitive config in
.env(never commit secrets)
- Manual testing via UI and API endpoints
- Vercel config for both frontend and backend (
vercel.jsonin each) - Environment variables set in Vercel dashboard
Contributions, issues, and feature requests are welcome!
- Fork the repo
- Create a feature branch (
git checkout -b feature/YourFeature) - Commit your changes (
git commit -m 'Add YourFeature') - Push to your branch (
git push origin feature/YourFeature) - Open a Pull Request
MIT License. See LICENSE for details.