A modern, responsive Trello clone frontend built with React, Redux Toolkit, and Material-UI. Features drag-and-drop functionality, real-time updates, and a beautiful user interface.
-
๐จ Modern UI/UX
- Material-UI components
- Dark/Light mode toggle
- Responsive design for all devices
- Smooth animations and transitions
-
๐ Authentication
- User registration and login
- Email verification
- Protected routes
- Persistent authentication with JWT
-
๐ Board Management
- Create and manage multiple boards
- Board customization (title, description, background)
- Board member management
- Starred and recent boards
-
๐ฏ Drag & Drop
- Intuitive card dragging between columns
- Column reordering
- Smooth drag-and-drop experience
- Built with DnD Kit
-
๐ Card Management
- Create, edit, and delete cards
- Rich text descriptions with Markdown
- Card activities and comments
- File attachments
- Card cover images
-
๐ฅ Collaboration
- Invite users to boards
- Real-time updates via WebSocket
- User notifications
- Board member avatars
-
๐ Search & Navigation
- Quick board search
- Autocomplete suggestions
- Workspace navigation
- Breadcrumb navigation
-
โ๏ธ User Settings
- Profile management
- Avatar upload
- Security settings
- Account preferences
- Framework: React 18
- Build Tool: Vite
- State Management: Redux Toolkit
- UI Library: Material-UI (MUI)
- Styling: Emotion (CSS-in-JS)
- Drag & Drop: @dnd-kit
- HTTP Client: Axios
- WebSocket: Socket.io-client
- Routing: React Router v6
- Form Handling: React Hook Form
- Markdown Editor: React Markdown Editor Lite
- Date Handling: date-fns / dayjs
trello-web/
โโโ public/ # Static assets
โโโ src/
โ โโโ apis/ # API integration
โ โ โโโ index.js
โ โโโ assets/ # Images, icons, etc.
โ โ โโโ 404/
โ โ โโโ auth/
โ โโโ components/ # Reusable components
โ โ โโโ AppBar/
โ โ โ โโโ AppBar.jsx
โ โ โ โโโ Menus/
โ โ โ โโโ Notifications/
โ โ โ โโโ SearchBoards/
โ โ โโโ Form/
โ โ โโโ Loading/
โ โ โโโ Modal/
โ โ โ โโโ ActiveCard/
โ โ โโโ ModeSelect/
โ โโโ customHooks/ # Custom React hooks
โ โ โโโ useDebounceFn.js
โ โโโ customLibraries/ # Custom library configurations
โ โ โโโ DndKitSensors.js
โ โโโ pages/ # Page components
โ โ โโโ 404/
โ โ โโโ Auth/
โ โ โ โโโ Auth.jsx
โ โ โ โโโ LoginForm.jsx
โ โ โ โโโ RegisterForm.jsx
โ โ โ โโโ AccountVerification.jsx
โ โ โโโ Boards/
โ โ โ โโโ index.jsx
โ โ โ โโโ _id.jsx
โ โ โ โโโ create.jsx
โ โ โ โโโ BoardBar/
โ โ โ โโโ BoardContent/
โ โ โโโ Settings/
โ โ โ โโโ Settings.jsx
โ โ โ โโโ AccountTab.jsx
โ โ โ โโโ SecurityTab.jsx
โ โ โโโ Users/
โ โโโ redux/ # Redux store and slices
โ โ โโโ store.js
โ โ โโโ activeBoard/
โ โ โโโ activeCard/
โ โ โโโ notifications/
โ โ โโโ user/
โ โโโ utils/ # Utility functions
โ โ โโโ authorizeAxios.js
โ โ โโโ constants.js
โ โ โโโ formatters.js
โ โ โโโ sorts.js
โ โ โโโ validators.js
โ โโโ App.jsx # Main App component
โ โโโ main.jsx # Application entry point
โ โโโ socketClient.js # WebSocket client setup
โ โโโ theme.js # MUI theme configuration
โโโ .eslintrc.cjs
โโโ index.html
โโโ jsconfig.json
โโโ package.json
โโโ vercel.json
โโโ vite.config.js
- Node.js (v16 or higher)
- npm or yarn
- Running backend API (see trello-api)
-
Clone the repository
git clone https://github.com/Justinianus2001/trello-web.git cd trello-web -
Install dependencies
npm install
-
Set up environment variables
Create a
.envfile in the root directory:VITE_API_URL=http://localhost:8017/v1 VITE_SOCKET_URL=http://localhost:8017
-
Start the development server
npm run dev
The application will be available at
http://localhost:5173
npm run build
npm run preview-
Register an Account
- Navigate to the registration page
- Fill in your details
- Verify your email address
-
Create a Board
- Click "Create new board"
- Add a title and description
- Customize the background
-
Add Columns
- Click "Add another list"
- Name your column
- Start adding cards
-
Manage Cards
- Click "Add a card" in any column
- Drag cards between columns
- Click on a card to view details
-
Collaborate
- Invite team members to your board
- See real-time updates
- Receive notifications
The application supports dark and light modes. Customize the theme in src/theme.js:
// Example: Change primary color
primary: {
main: '#1976d2', // Your custom color
}Update application constants in src/utils/constants.js:
- Board limits
- Card limits
- File upload limits
- And more...
The application is fully responsive and works seamlessly on:
- ๐ฑ Mobile devices (320px and up)
- ๐ฑ Tablets (768px and up)
- ๐ป Desktops (1024px and up)
- ๐ฅ๏ธ Large screens (1920px and up)
All API calls are centralized in src/apis/index.js. The application uses Axios with interceptors for:
- Automatic token injection
- Request/response logging
- Error handling
- Token refresh
Redux Toolkit is used for global state management:
- User Slice: Authentication and user data
- Active Board Slice: Current board state
- Active Card Slice: Selected card details
- Notifications Slice: Real-time notifications
Real-time features powered by Socket.io:
- Live board updates
- User invitations
- Notifications
- Collaborative editing
npm run testThis project uses ESLint for code linting:
npm run lint-
Install Vercel CLI
npm i -g vercel
-
Deploy
vercel
The vercel.json configuration is already included.
- Netlify: Drag and drop the
distfolder - GitHub Pages: Use
gh-pagespackage - AWS S3: Deploy static build files
- vite.config.js: Vite configuration
- jsconfig.json: JavaScript configuration for imports
- .eslintrc.cjs: ESLint rules
- vercel.json: Vercel deployment settings
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style
- Write meaningful commit messages
- Add comments for complex logic
- Test your changes thoroughly
- Add board templates
- Implement labels/tags
- Add due dates and reminders
- Calendar view
- Advanced search and filters
- Mobile app (React Native)
- Offline support
This project is licensed under the MIT License.
Hoang Le Ngoc - @Justinianus2001
- Inspired by Trello
- UI components from Material-UI
- Drag and drop by @dnd-kit
For questions or support, please open an issue or contact: lengochoang681@gmail.com
Backend Repository: trello-api
Live Demo: https://trello-web-amber-omega.vercel.app