Skip to content

legendofnoobs/Taskery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Taskery - An AI-powered MERN Stack Task Manager

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.


✨ Features

  • 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.


πŸ› οΈ Tech Stack

Frontend

  • React.js (SPA, hooks, context API)
  • React Router (routing)
  • Axios (API requests)
  • Tailwind CSS (utility-first styling)
  • Vite (fast dev/build tool)

Backend

  • Node.js (runtime)
  • Express.js (API server)
  • MongoDB (database)
  • Mongoose (ODM)
  • JWT (authentication)
  • bcryptjs (password hashing)
  • dotenv (env management)

AI

  • Gemini (Using their free Api)

πŸ“‚ Folder Structure

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
└── ...

πŸš€ Getting Started

Prerequisites

Installation & Setup

  1. Clone the repository:

    git clone https://github.com/legendofnoobs/Taskery.git
    cd task-manager
  2. 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
  3. Frontend setup:

    cd ../client
    npm install
    # Optionally add to client/package.json:
    # "proxy": "http://localhost:5000"

Running the Application

  1. Start backend:
    cd server
    npm run dev
    # Server: http://localhost:5000
  2. Start frontend:
    cd client
    npm run dev
    # App: http://localhost:3000

🎨 UI Overview

  • 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.

πŸ”’ Authentication & Authorization

  • JWT-based authentication (token stored in localStorage).
  • Auth middleware protects all API routes except login/register.
  • Passwords are hashed with bcryptjs before storage.

πŸ“– API Endpoints

Auth/User

  • POST /api/users/register β€” Register new user
  • POST /api/users/login β€” Login and receive JWT

Projects

  • GET /api/projects β€” List all user projects
  • POST /api/projects β€” Create project
  • GET /api/projects/:id β€” Get project by ID
  • PUT /api/projects/:id β€” Update project
  • DELETE /api/projects/:id β€” Delete project
  • PUT /api/projects/:id/favorite β€” Toggle favorite

Tasks

  • GET /api/projects/:projectId/tasks β€” List tasks in project
  • POST /api/projects/:projectId/tasks β€” Create task
  • PUT /api/tasks/:taskId β€” Update task
  • DELETE /api/tasks/:taskId β€” Delete task

Notes

  • GET /api/notes β€” List all user notes
  • POST /api/notes β€” Create note
  • GET /api/notes/:id β€” Get note by ID
  • PUT /api/notes/:id β€” Update note
  • DELETE /api/notes/:id β€” Delete note

AI Chat

  • POST /api/ai/chat β€” Send a message to the AI chat

Activity Log

  • GET /api/activity-logs β€” List activity logs

🧩 Main Components & Hooks

Components

  • common/: Modals (create/edit/delete), Sidebar, ProjectCard, TaskCard, TaskDetailsModal, etc.
  • landing/: Hero, Features, Footer
  • settings/: Profile, Security, Notification settings
  • dashboard/: Inbox, Projects, ActivityLog, SearchPage

Hooks

  • useAuth β€” Auth state and actions
  • useProjects β€” Project CRUD
  • useProjectTasks β€” Task CRUD
  • useNotes β€” Notes CRUD
  • useAiChat β€” AI Chat
  • useFavoriteProjects β€” Favorite/unfavorite logic
  • useInboxTasks β€” Inbox logic
  • useActivityLogs β€” Activity log fetch
  • useSearchTasks β€” Search logic
  • useSidebarToggle β€” Sidebar open/close
  • useTaskCreation β€” Task creation helpers
  • useTaskSorting β€” Task sorting
  • useProfileSettings β€” Profile update
  • usePasswordSecurity β€” Password change
  • useNotificationSettings β€” Notification prefs

πŸ›‘οΈ Security

  • Passwords hashed with bcryptjs
  • JWT tokens for authentication
  • Sensitive config in .env (never commit secrets)

πŸ§ͺ Testing

  • Manual testing via UI and API endpoints

🌐 Deployment

  • Vercel config for both frontend and backend (vercel.json in each)
  • Environment variables set in Vercel dashboard

🀝 Contributing

Contributions, issues, and feature requests are welcome!

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature/YourFeature)
  3. Commit your changes (git commit -m 'Add YourFeature')
  4. Push to your branch (git push origin feature/YourFeature)
  5. Open a Pull Request

πŸ“„ License

MIT License. See LICENSE for details.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages