This Task Manager is a full-stack web application built with a Next.js frontend and an Express.js backend. It allows users to create, organize, and manage tasks across different stages of completion.
- User authentication (register, login). Google OAuth sign-in
- Create, read, update, and delete tasks
- Add due dates to tasks.
- Drag-and-drop interface for task management. Quickly move tasks between different stages of completion.
- Search tasks by title.
- Sort tasks by due date, creation date, and title.
- Responsive design for various screen sizes. Works well on mobile, tablet, and desktop.
- Clean UI with sleek animations.
- Super fast navigation.
-
Frontend:
- Next.js
- Provides SSR support
- Good ecosystem for building React applications
- React
- Good ecosystem for building UI components
- TypeScript
- Tailwind CSS
- Makes styling easier and faster
- Since it's utility-first, it's easy to customize and maintain
- react-beautiful-dnd (@hello-pangea/dnd)
- To implement drag-and-drop functionality
- Used the forked version to support latest React versions since the original package is not maintained anymore.
- Next.js
-
Backend:
- Express.js
- TypeScript
- PostgreSQL with Drizzle ORM, hosted on Neon
- The best all-in-one database
- Drizzle ORM is simple and easy-to-use, and lot faster than other ORMs. Good TypeScript support.
- Neon, since it was the only free PostgreSQL hosting service that I could find easily.
- Bun
- Fast all-in-one JavaScript runtime
- Comes with many useful features out of the box
- Good DX
-
Authentication:
- NextAuth.js (frontend)
- Custom JWT implementation (backend)
- PostgreSQL database
- Bun
- Navigate to the backend directory:
cd backend
- Install dependencies:
bun install
- Set up your environment variables:
- Copy
.env.example
to.env
- Fill in your database URL and JWT secret
- Copy
- Run database migrations:
bun run db:generate bun run db:migrate
- Start the development server:
bun run dev
- Navigate to the frontend directory:
cd website
- Install dependencies:
bun install
- Set up your environment variables:
- Copy
.env.local.example
to.env.local
- Fill in your backend API URL and NextAuth settings
- Copy
- Start the development server:
bun run dev
- Open your browser and go to
http://localhost:3000
- Register a new account or log in
- Start managing your tasks!